Merge branch 'master' into bug3027

This commit is contained in:
Axel Uhl committed 2015-07-14 09:51:00 +02:00
commit 9370fb0ff3
1 file changed
+58 -38
@@ -56,6 +56,26 @@ public class LeaderboardJsonGetServlet extends AbstractJsonHttpServlet implement
private static final String PARAM_NAME_USE_CACHE = "useCache";
private static final String PARAM_NAME_MAX_COMPETITORS_COUNT = "maxCompetitorsCount";
// Competitor constants used to build leaderboard json
private static final String COMPETITOR_ROOT_KEY = "competitors";
private static final String COMPETITOR_NAME = "name";
private static final String COMPETITOR_DISPLAY_NAME = "displayName";
private static final String COMPETITOR_ID = "id";
private static final String COMPETITOR_SAIL_ID = "sailID";
private static final String COMPETITOR_NATIONALITY = "nationality";
private static final String COMPETITOR_COUNTRY_CODE = "countryCode";
private static final String COMPETITOR_RANK = "rank";
private static final String COMPETITOR_CARRIED_POINTS = "carriedPoints";
private static final String COMPETITOR_TOTAL_POINTS = "totalPoints";
private static final String COMPETITOR_RACE_SCORES = "raceScores";
private static final String COMPETITOR_FLEET = "fleet";
private static final String COMPETITOR_NET_POINTS = "netPoints";
private static final String COMPETITOR_UNCORRECTED_NET_POINTS = "uncorrectedNetPoints";
private static final String COMPETITOR_MAX_POINTS_REASON = "maxPointsReason";
private static final String COMPETITOR_RACE_RANK = "raceRank";
private static final String COMPETITOR_IS_DISCARDED = "isDiscarded";
private static final String COMPETITOR_IS_CORRECTED = "isCorrected";
public static enum ResultStates { Live, Preliminary, Final };
// for backward compatibility the default result state is live
@@ -273,28 +293,28 @@ public class LeaderboardJsonGetServlet extends AbstractJsonHttpServlet implement
writeCommonLeaderboardData(jsonLeaderboard, leaderboard, resultState, resultTimePoint, maxCompetitorsCount);
JSONArray jsonCompetitorEntries = new JSONArray();
jsonLeaderboard.put("competitors", jsonCompetitorEntries);
jsonLeaderboard.put(COMPETITOR_ROOT_KEY, jsonCompetitorEntries);
int counter = 1;
for (Competitor competitor : competitorsOrderedByTotalRank) {
if(maxCompetitorsCount != null && counter > maxCompetitorsCount) {
break;
}
JSONObject jsonCompetitor = new JSONObject();
jsonCompetitor.put("name", competitor.getName());
jsonCompetitor.put(COMPETITOR_NAME, competitor.getName());
final String displayName = leaderboard.getDisplayName(competitor);
jsonCompetitor.put("displayName", displayName==null?competitor.getName():displayName);
jsonCompetitor.put("id", competitor.getId().toString());
jsonCompetitor.put("sailID", competitor.getBoat().getSailID());
jsonCompetitor.put(COMPETITOR_DISPLAY_NAME, displayName==null?competitor.getName():displayName);
jsonCompetitor.put(COMPETITOR_ID, competitor.getId().toString());
jsonCompetitor.put(COMPETITOR_SAIL_ID, competitor.getBoat().getSailID());
Nationality nationality = competitor.getTeam().getNationality();
jsonCompetitor.put("nationality", nationality != null ? nationality.getThreeLetterIOCAcronym(): null);
jsonCompetitor.put("countryCode", nationality != null ? (nationality.getCountryCode() != null ? nationality.getCountryCode().getTwoLetterISOCode(): null) : null);
jsonCompetitor.put(COMPETITOR_NATIONALITY, nationality != null ? nationality.getThreeLetterIOCAcronym(): null);
jsonCompetitor.put(COMPETITOR_COUNTRY_CODE, nationality != null ? (nationality.getCountryCode() != null ? nationality.getCountryCode().getTwoLetterISOCode(): null) : null);
jsonCompetitor.put("rank", competitorsOrderedByTotalRank.indexOf(competitor) + 1);
jsonCompetitor.put("carriedPoints", leaderboard.getCarriedPoints(competitor));
jsonCompetitor.put("totalPoints", leaderboard.getTotalPoints(competitor, resultTimePoint));
jsonCompetitor.put(COMPETITOR_RANK, competitorsOrderedByTotalRank.indexOf(competitor) + 1);
jsonCompetitor.put(COMPETITOR_CARRIED_POINTS, leaderboard.getCarriedPoints(competitor));
jsonCompetitor.put(COMPETITOR_TOTAL_POINTS, leaderboard.getTotalPoints(competitor, resultTimePoint));
jsonCompetitorEntries.add(jsonCompetitor);
JSONObject jsonRaceColumns = new JSONObject();
jsonCompetitor.put("raceScores", jsonRaceColumns);
jsonCompetitor.put(COMPETITOR_RACE_SCORES, jsonRaceColumns);
final Set<RaceColumn> discardedRaceColumns = leaderboard.getResultDiscardingRule().getDiscardedRaceColumns(competitor, leaderboard,
leaderboard.getRaceColumns(), resultTimePoint);
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
@@ -306,19 +326,19 @@ public class LeaderboardJsonGetServlet extends AbstractJsonHttpServlet implement
JSONObject jsonEntry = new JSONObject();
jsonRaceColumns.put(raceColumn.getName(), jsonEntry);
final Fleet fleetOfCompetitor = raceColumn.getFleetOfCompetitor(competitor);
jsonEntry.put("fleet", fleetOfCompetitor==null?"":fleetOfCompetitor.getName());
jsonEntry.put("netPoints", leaderboard.getNetPoints(competitor, raceColumn, resultTimePoint));
jsonEntry.put("uncorrectedNetPoints", leaderboard.getTrackedRank(competitor, raceColumn, resultTimePoint));
jsonEntry.put("totalPoints", leaderboard.getTotalPoints(competitor, raceColumn, resultTimePoint, discardedRaceColumns));
jsonEntry.put(COMPETITOR_FLEET, fleetOfCompetitor==null?"":fleetOfCompetitor.getName());
jsonEntry.put(COMPETITOR_NET_POINTS, leaderboard.getNetPoints(competitor, raceColumn, resultTimePoint));
jsonEntry.put(COMPETITOR_UNCORRECTED_NET_POINTS, leaderboard.getTrackedRank(competitor, raceColumn, resultTimePoint));
jsonEntry.put(COMPETITOR_TOTAL_POINTS, leaderboard.getTotalPoints(competitor, raceColumn, resultTimePoint, discardedRaceColumns));
MaxPointsReason maxPointsReason = leaderboard.getMaxPointsReason(competitor, raceColumn, resultTimePoint);
jsonEntry.put("maxPointsReason", maxPointsReason != null ? maxPointsReason.toString(): null);
jsonEntry.put("rank", rankedCompetitorsForColumn.indexOf(competitor)+1);
jsonEntry.put(COMPETITOR_MAX_POINTS_REASON, maxPointsReason != null ? maxPointsReason.toString(): null);
jsonEntry.put(COMPETITOR_RANK, rankedCompetitorsForColumn.indexOf(competitor)+1);
final TrackedRace trackedRace = raceColumn.getTrackedRace(competitor);
if (trackedRace != null) {
jsonEntry.put("raceRank", trackedRace.getRank(competitor, resultTimePoint));
jsonEntry.put(COMPETITOR_RACE_RANK, trackedRace.getRank(competitor, resultTimePoint));
}
jsonEntry.put("isDiscarded", leaderboard.isDiscarded(competitor, raceColumn, resultTimePoint));
jsonEntry.put("isCorrected", leaderboard.getScoreCorrection().isScoreCorrected(competitor, raceColumn, resultTimePoint));
jsonEntry.put(COMPETITOR_IS_DISCARDED, leaderboard.isDiscarded(competitor, raceColumn, resultTimePoint));
jsonEntry.put(COMPETITOR_IS_CORRECTED, leaderboard.getScoreCorrection().isScoreCorrected(competitor, raceColumn, resultTimePoint));
}
counter++;
}
@@ -336,35 +356,35 @@ public class LeaderboardJsonGetServlet extends AbstractJsonHttpServlet implement
writeCommonLeaderboardData(jsonLeaderboard, leaderboard, resultState, null, maxCompetitorsCount);
JSONArray jsonCompetitorEntries = new JSONArray();
jsonLeaderboard.put("competitors", jsonCompetitorEntries);
jsonLeaderboard.put(COMPETITOR_ROOT_KEY, jsonCompetitorEntries);
for (Competitor competitor : leaderboard.getCompetitors()) {
JSONObject jsonCompetitor = new JSONObject();
jsonCompetitor.put("name", competitor.getName());
jsonCompetitor.put(COMPETITOR_NAME, competitor.getName());
final String displayName = leaderboard.getDisplayName(competitor);
jsonCompetitor.put("displayName", displayName==null?competitor.getName():displayName);
jsonCompetitor.put("id", competitor.getId().toString());
jsonCompetitor.put("sailID", competitor.getBoat().getSailID());
jsonCompetitor.put(COMPETITOR_DISPLAY_NAME, displayName==null?competitor.getName():displayName);
jsonCompetitor.put(COMPETITOR_ID, competitor.getId().toString());
jsonCompetitor.put(COMPETITOR_SAIL_ID, competitor.getBoat().getSailID());
Nationality nationality = competitor.getTeam().getNationality();
jsonCompetitor.put("nationality", nationality != null ? nationality.getThreeLetterIOCAcronym(): null);
jsonCompetitor.put("countryCode", nationality != null ? (nationality.getCountryCode() != null ? nationality.getCountryCode().getTwoLetterISOCode(): null) : null);
jsonCompetitor.put(COMPETITOR_NATIONALITY, nationality != null ? nationality.getThreeLetterIOCAcronym(): null);
jsonCompetitor.put(COMPETITOR_COUNTRY_CODE, nationality != null ? (nationality.getCountryCode() != null ? nationality.getCountryCode().getTwoLetterISOCode(): null) : null);
jsonCompetitor.put("rank", 0);
jsonCompetitor.put("carriedPoints", null);
jsonCompetitor.put("totalPoints", null);
jsonCompetitor.put(COMPETITOR_RANK, 0);
jsonCompetitor.put(COMPETITOR_CARRIED_POINTS, null);
jsonCompetitor.put(COMPETITOR_TOTAL_POINTS, null);
jsonCompetitorEntries.add(jsonCompetitor);
JSONObject jsonRaceColumns = new JSONObject();
jsonCompetitor.put("raceScores", jsonRaceColumns);
jsonCompetitor.put(COMPETITOR_RACE_SCORES, jsonRaceColumns);
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
JSONObject jsonEntry = new JSONObject();
jsonRaceColumns.put(raceColumn.getName(), jsonEntry);
final Fleet fleetOfCompetitor = raceColumn.getFleetOfCompetitor(competitor);
jsonEntry.put("fleet", fleetOfCompetitor==null?"":fleetOfCompetitor.getName());
jsonEntry.put("netPoints", null);
jsonEntry.put("totalPoints", null);
jsonEntry.put("maxPointsReason", "");
jsonEntry.put("rank", 0);
jsonEntry.put("isDiscarded", false);
jsonEntry.put("isCorrected", false);
jsonEntry.put(COMPETITOR_FLEET, fleetOfCompetitor==null?"":fleetOfCompetitor.getName());
jsonEntry.put(COMPETITOR_NET_POINTS, null);
jsonEntry.put(COMPETITOR_TOTAL_POINTS, null);
jsonEntry.put(COMPETITOR_MAX_POINTS_REASON, "");
jsonEntry.put(COMPETITOR_RANK, 0);
jsonEntry.put(COMPETITOR_IS_DISCARDED, false);
jsonEntry.put(COMPETITOR_IS_CORRECTED, false);
}
}
return jsonLeaderboard;