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 4c2e00bc31a..9ee3d12b595 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 @@ -207,6 +207,8 @@ public class LeaderboardData extends ExportAction { LineDetails start = race.getStartLine(race.getStartOfTracking()); addNamedElementWithValue(raceElement, "start_line_length_in_meters", start.getLength().getMeters()); + addNamedElementWithValue(raceElement, "start_advantage_in_meters", start.getAdvantage().getMeters()); + addNamedElementWithValue(raceElement, "advantageous_side_while_approaching_start_line", start.getAdvantageousSideWhileApproachingLine().name()); addNamedElementWithValue(raceElement, "course_length_in_meters", race.getCourseLength().getMeters()); raceElement.addContent(createWindXML("wind_", race.getAverageWindSpeedWithConfidence(/*resolutionInMillis*/ 5*60*1000))); @@ -272,6 +274,18 @@ public class LeaderboardData extends ExportAction { 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(); + if (averageIntervall != null) { + addNamedElementWithValue(competitorRaceDataElement, "average_interval_between_fixes_outliers_removed_as_millis", averageIntervall.asMillis()); + } + Duration averageIntervallRaw = gpsFixesForCompetitor.getAverageIntervalBetweenRawFixes(); + if (averageIntervallRaw != null) { + addNamedElementWithValue(competitorRaceDataElement, "average_interval_between_fixes_raw_as_millis", averageIntervallRaw.asMillis()); + } + } int[] timePointsInSecondsBeforeStart = new int[]{0, 5, 10, 20, 30}; for (int i : timePointsInSecondsBeforeStart) { @@ -280,18 +294,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()); - GPSFixTrack gpsFixesForCompetitor = race.getTrack(competitor); - if (gpsFixesForCompetitor != null) { - Duration averageIntervall = gpsFixesForCompetitor.getAverageIntervalBetweenFixes(); - if (averageIntervall != null) { - addNamedElementWithValue(competitorRaceDataElement, "average_interval_between_fixes_outliers_removed_as_millis", averageIntervall.asMillis()); - } - Duration averageIntervallRaw = gpsFixesForCompetitor.getAverageIntervalBetweenRawFixes(); - if (averageIntervallRaw != null) { - addNamedElementWithValue(competitorRaceDataElement, "average_interval_between_fixes_raw_as_millis", averageIntervallRaw.asMillis()); - } - } - Iterator marksForStartLine = race.getStartLine(beforeRaceStartTime).getWaypoint().getControlPoint().getMarks().iterator(); Mark first = marksForStartLine.next(); Mark second = null; @@ -343,8 +345,6 @@ public class LeaderboardData extends ExportAction { addNamedElementWithValue(competitorRaceDataElement, "rank_based_on_distance_from_starboard_side_of_start_line", competitorToDistanceRank.get(competitor)); addNamedElementWithValue(competitorRaceDataElement, "speed_when_crossing_start_line_in_knots", race.getSpeedWhenCrossingStartLine(competitor).getKnots()); addNamedElementWithValue(competitorRaceDataElement, "maximum_race_speed_over_ground_in_knots", getMaximumSpeedOverGround(competitor, race).getKnots()); - addNamedElementWithValue(competitorRaceDataElement, "start_advantage_in_meters", start.getAdvantage().getMeters()); - addNamedElementWithValue(competitorRaceDataElement, "advantageous_side_while_approaching_start_line", start.getAdvantageousSideWhileApproachingLine().name()); Distance distanceTraveledInThisRace = race.getDistanceTraveled(competitor, race.getEndOfRace()); if (distanceTraveledInThisRace == null) { raceConfidenceAndErrorMessages.getB().add("Competitor " + competitor.getName() + " has no valid distance traveled for this race!");