diff --git a/java/com.sap.sailing.xmlexport/src/com/sap/sailing/xmlexport/LeaderboardData.java b/java/com.sap.sailing.xmlexport/src/com/sap/sailing/xmlexport/LeaderboardData.java index ee2fe640b08..4c2e00bc31a 100644 --- a/java/com.sap.sailing.xmlexport/src/com/sap/sailing/xmlexport/LeaderboardData.java +++ b/java/com.sap.sailing.xmlexport/src/com/sap/sailing/xmlexport/LeaderboardData.java @@ -266,6 +266,13 @@ public class LeaderboardData extends ExportAction { raceConfidenceAndErrorMessages.getB().add("Competitor " + competitor.getName() + " has no valid data for this race!"); continue; } + + List maneuvers = getManeuvers(race, competitor, /*waitForLatest*/ false); + addNamedElementWithValue(competitorRaceDataElement, "number_of_maneuvers", maneuvers != null ? maneuvers.size() : 0); + addNamedElementWithValue(competitorRaceDataElement, "number_of_tacks", getNumberOfTacks(maneuvers)); + addNamedElementWithValue(competitorRaceDataElement, "number_of_jibes", getNumberOfJibes(maneuvers)); + addNamedElementWithValue(competitorRaceDataElement, "number_of_penalty_circles", getNumberOfPenaltyCircles(maneuvers)); + int[] timePointsInSecondsBeforeStart = new int[]{0, 5, 10, 20, 30}; for (int i : timePointsInSecondsBeforeStart) { TimePoint beforeRaceStartTime = race.getStartOfRace().minus(i*1000); @@ -273,12 +280,6 @@ public class LeaderboardData extends ExportAction { addNamedElementWithValue(competitorRaceDataElement, "speed_"+i+"seconds_before_start_of_race_in_knots", race.getTrack(competitor).getEstimatedSpeed(beforeRaceStartTime).getKnots()); addNamedElementWithValue(competitorRaceDataElement, "distance_from_starboard_side_of_start_line_"+i+"seconds_before_start_in_meters", race.getDistanceFromStarboardSideOfStartLine(competitor, beforeRaceStartTime).getMeters()); - List maneuvers = getManeuvers(race, competitor, /*waitForLatest*/ false); - addNamedElementWithValue(competitorRaceDataElement, "number_of_maneuvers", maneuvers != null ? maneuvers.size() : 0); - addNamedElementWithValue(competitorRaceDataElement, "number_of_tacks", getNumberOfTacks(maneuvers)); - addNamedElementWithValue(competitorRaceDataElement, "number_of_jibes", getNumberOfJibes(maneuvers)); - addNamedElementWithValue(competitorRaceDataElement, "number_of_penalty_circles", getNumberOfPenaltyCircles(maneuvers)); - GPSFixTrack gpsFixesForCompetitor = race.getTrack(competitor); if (gpsFixesForCompetitor != null) { Duration averageIntervall = gpsFixesForCompetitor.getAverageIntervalBetweenFixes(); @@ -497,7 +498,12 @@ public class LeaderboardData extends ExportAction { addNamedElementWithValue(competitorLegDataElement, "leg_rank_at_leg_start", competitorLeg.getRank(competitorLeg.getStartTime())); addNamedElementWithValue(competitorLegDataElement, "leg_rank_at_leg_finish", competitorLeg.getRank(legFinishTime)); - addNamedElementWithValue(competitorLegDataElement, "rank_gain_for_this_leg_between_start_and_finish", competitorLeg.getRank(competitorLeg.getStartTime())-competitorLeg.getRank(legFinishTime)); + + if (legCounter>1) { + addNamedElementWithValue(competitorLegDataElement, "rank_gain_for_this_leg_between_start_and_finish", competitorLeg.getRank(competitorLeg.getStartTime())-competitorLeg.getRank(legFinishTime)); + } else { + addNamedElementWithValue(competitorLegDataElement, "rank_gain_for_this_leg_between_start_and_finish", 0); + } List maneuvers = competitorLeg.getManeuvers(legFinishTime, /*waitForLatest*/false); addNamedElementWithValue(competitorLegDataElement, "maneuver_count", maneuvers.size());