Added a detail type for the overall rank.

The competitor charts can now display the overall rank.
This commit is contained in:
Lennart Hensler
2013-02-04 10:57:37 +01:00
parent d6d67439c4
commit 6cf5a9e618
8 changed files with 25 additions and 1 deletions
@@ -12,7 +12,7 @@ import static com.sap.sailing.domain.common.SortingOrder.*;
*
*/
public enum DetailType implements Serializable {
DISTANCE_TRAVELED(0, ASCENDING), AVERAGE_SPEED_OVER_GROUND_IN_KNOTS(2, DESCENDING), RACE_RANK(0, ASCENDING), REGATTA_RANK(0, ASCENDING),
DISTANCE_TRAVELED(0, ASCENDING), AVERAGE_SPEED_OVER_GROUND_IN_KNOTS(2, DESCENDING), RACE_RANK(0, ASCENDING), REGATTA_RANK(0, ASCENDING), OVERALL_RANK(0, ASCENDING),
RANK_GAIN(0, DESCENDING), NUMBER_OF_MANEUVERS(0, ASCENDING), CURRENT_SPEED_OVER_GROUND_IN_KNOTS(2, DESCENDING),
ESTIMATED_TIME_TO_NEXT_WAYPOINT_IN_SECONDS(1, ASCENDING), VELOCITY_MADE_GOOD_IN_KNOTS(2, DESCENDING),
GAP_TO_LEADER_IN_SECONDS(0, ASCENDING), GAP_CHANGE_SINCE_LEG_START_IN_SECONDS(0, ASCENDING),
@@ -25,6 +25,9 @@ public interface LeaderboardGroup extends Renamable {
void removeLeaderboard(Leaderboard leaderboard);
void removeAllLeaderboards(Collection<Leaderboard> leaderboards);
void clearLeaderboards();
/**
* @return The overall leaderboard of this group or null if there is none.
*/
Leaderboard getOverallLeaderboard();
void setOverallLeaderboard(Leaderboard leaderboard);
}
@@ -22,6 +22,8 @@ public class DetailTypeFormatter {
return stringMessages.rank();
case REGATTA_RANK:
return stringMessages.regattaRank();
case OVERALL_RANK:
return stringMessages.overallRank();
case NUMBER_OF_MANEUVERS:
return stringMessages.numberOfManeuvers();
case CURRENT_SPEED_OVER_GROUND_IN_KNOTS:
@@ -131,6 +133,7 @@ public class DetailTypeFormatter {
// Cases for detail types without unit, so that an empty string is returned.
case RACE_RANK:
case REGATTA_RANK:
case OVERALL_RANK:
case CURRENT_LEG:
case TACK:
case JIBE:
@@ -210,6 +213,8 @@ public class DetailTypeFormatter {
return stringMessages.rankTooltip();
case REGATTA_RANK:
return stringMessages.regattaRankTooltip();
case OVERALL_RANK:
return stringMessages.overallRankTooltip();
case RANK_GAIN:
return stringMessages.rankGainTooltip();
case TACK:
@@ -493,4 +493,6 @@ public interface StringMessages extends Messages {
String status();
String regattaRank();
String regattaRankTooltip();
String overallRank();
String overallRankTooltip();
}
@@ -61,6 +61,8 @@ rank=Rank
rankTooltip=Competitor''s rank in the race
regattaRank=Regatta Rank
regattaRankTooltip=Competitor''s rank in the regatta
overallRank=Overall Rank
overallRankTooltip=Competitor''s rank in the series
totalRank=Total rank
collapse=-
expand=+
@@ -61,6 +61,8 @@ rank=Platz
rankTooltip=Platzierung des Teilnehmers im Rennen
regattaRank=Platz in der Regatta
regattaRankTooltip=Platzierung des Teilnehmers in der Regatta
overallRank=Platz in der Serie
overallRankTooltip=Platzierung des Teilnehmers in der Serie
totalRank=Gesamtplatz
collapse=-
expand=+
@@ -2503,6 +2503,15 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
Leaderboard leaderboard = getService().getLeaderboardByName(leaderboardName);
result = leaderboard == null ? null : (double) leaderboard.getTotalRankOfCompetitor(competitor, timePoint);
break;
case OVERALL_RANK:
if (leaderboardGroupName == null || leaderboardGroupName.isEmpty()) {
break;
}
LeaderboardGroup group = getService().getLeaderboardGroupByName(leaderboardGroupName);
Leaderboard overall = group.getOverallLeaderboard();
result = overall == null ? null : (double) overall.getTotalRankOfCompetitor(competitor, timePoint);
break;
default:
throw new UnsupportedOperationException("Theres currently no support for the enum value '"
+ dataType + "' in this method.");
@@ -31,6 +31,7 @@ public class MultiChartSettingsComponent extends AbstractChartSettingsComponent<
availableDetailsTypes.add(DetailType.CURRENT_SPEED_OVER_GROUND_IN_KNOTS);
availableDetailsTypes.add(DetailType.RACE_RANK);
availableDetailsTypes.add(DetailType.REGATTA_RANK);
availableDetailsTypes.add(DetailType.OVERALL_RANK);
}
@Override