diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/DetailType.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/DetailType.java
index a59b164a98e..a5db2f6ecbd 100755
--- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/DetailType.java
+++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/DetailType.java
@@ -43,7 +43,7 @@ public enum DetailType implements Serializable {
RACE_TOTAL_POINTS(2, ASCENDING), REGATTA_TOTAL_POINTS(2, ASCENDING), REGATTA_TOTAL_POINTS_SUM(2, ASCENDING),
RACE_RATIO_BETWEEN_TIME_SINCE_LAST_POSITION_FIX_AND_AVERAGE_SAMPLING_INTERVAL(1, ASCENDING), RACE_DISTANCE_TO_START_FIVE_SECONDS_BEFORE_RACE_START(1, ASCENDING),
RACE_SPEED_OVER_GROUND_FIVE_SECONDS_BEFORE_START(2, DESCENDING),
- RACE_CORRECTED_TIME_TRAVELED(0, ASCENDING),
+ RACE_CORRECTED_TIME_TRAVELED(0, ASCENDING), RACE_CORRECTED_TIME_AT_ESTIMATED_ARRIVAL_AT_COMPETITOR_FARTHEST_AHEAD(0, ASCENDING),
RACE_TIME_TRAVELED(0, ASCENDING), RACE_TIME_TRAVELED_UPWIND(0, ASCENDING), RACE_TIME_TRAVELED_DOWNWIND(0, ASCENDING), RACE_TIME_TRAVELED_REACHING(0, ASCENDING),
DISTANCE_TO_START_LINE(0, ASCENDING), BEAT_ANGLE(0, ASCENDING), COURSE_OVER_GROUND_TRUE_DEGREES(0, ASCENDING);
diff --git a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/LeaderboardEntryDTO.java b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/LeaderboardEntryDTO.java
index 83383a551d7..1e846807219 100755
--- a/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/LeaderboardEntryDTO.java
+++ b/java/com.sap.sailing.domain.common/src/com/sap/sailing/domain/common/dto/LeaderboardEntryDTO.java
@@ -105,6 +105,13 @@ public class LeaderboardEntryDTO implements Serializable {
* For one-design classes this equals the time spent in the race.
*/
public Duration correctedTime;
+
+ /**
+ * The corrections applied to the time and distance sailed when the competitor would have reached the
+ * competitor farthest ahead, based on average VMG on the current leg and equal performance to the boat
+ * farthest ahead for all subsequent legs.
+ */
+ public Duration correctedTimeAtEstimatedArrivalAtCompetitorFarthestAhead;
/**
* If null, no leg details are known yet, the race is not being tracked or the details
@@ -136,6 +143,8 @@ public class LeaderboardEntryDTO implements Serializable {
+ ((gapToLeaderInOwnTime == null) ? 0 : gapToLeaderInOwnTime.hashCode());
result = prime * result
+ ((correctedTime == null) ? 0 : correctedTime.hashCode());
+ result = prime * result
+ + ((correctedTimeAtEstimatedArrivalAtCompetitorFarthestAhead == null) ? 0 : correctedTimeAtEstimatedArrivalAtCompetitorFarthestAhead.hashCode());
result = prime * result
+ ((averageSignedCrossTrackErrorInMeters == null) ? 0 : averageSignedCrossTrackErrorInMeters.hashCode());
result = prime * result + (discarded ? 1231 : 1237);
@@ -194,6 +203,11 @@ public class LeaderboardEntryDTO implements Serializable {
return false;
} else if (!correctedTime.equals(other.correctedTime))
return false;
+ if (correctedTimeAtEstimatedArrivalAtCompetitorFarthestAhead == null) {
+ if (other.correctedTimeAtEstimatedArrivalAtCompetitorFarthestAhead != null)
+ return false;
+ } else if (!correctedTimeAtEstimatedArrivalAtCompetitorFarthestAhead.equals(other.correctedTimeAtEstimatedArrivalAtCompetitorFarthestAhead))
+ return false;
if (averageAbsoluteCrossTrackErrorInMeters == null) {
if (other.averageAbsoluteCrossTrackErrorInMeters != null)
return false;
diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java
index 9bdcf37fd0c..9a97fcb5f33 100755
--- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java
+++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/leaderboard/impl/AbstractSimpleLeaderboardImpl.java
@@ -1400,6 +1400,7 @@ public abstract class AbstractSimpleLeaderboardImpl implements Leaderboard, Race
entryDTO.averageSignedCrossTrackErrorInMeters = raceDetails.getAverageSignedCrossTrackError() == null ? null
: raceDetails.getAverageSignedCrossTrackError().getMeters();
entryDTO.correctedTime = raceDetails.getCorrectedTime();
+ entryDTO.correctedTimeAtEstimatedArrivalAtCompetitorFarthestAhead = raceDetails.getCorrectedTimeAtEstimatedArrivalAtCompetitorFarthestAhead();
entryDTO.gapToLeaderInOwnTime = raceDetails.getGapToLeaderInOwnTime();
final TimePoint startOfRace = trackedRace.getStartOfRace();
if (startOfRace != null) {
@@ -1485,8 +1486,12 @@ public abstract class AbstractSimpleLeaderboardImpl implements Leaderboard, Race
private final Distance averageSignedCrossTrackError;
private final Duration gapToLeaderInOwnTime;
private final Duration correctedTime;
+ private final Duration correctedTimeAtEstimatedArrivalAtCompetitorFarthestAhead;
+
public RaceDetails(List legDetails, Distance windwardDistanceToOverallLeader,
- Distance averageAbsoluteCrossTrackError, Distance averageSignedCrossTrackError, Duration gapToLeaderInOwnTime, Duration correctedTime) {
+ Distance averageAbsoluteCrossTrackError, Distance averageSignedCrossTrackError,
+ Duration gapToLeaderInOwnTime, Duration correctedTime,
+ Duration correctedTimeAtEstimatedArrivalAtCompetitorFarthestAhead) {
super();
this.legDetails = legDetails;
this.windwardDistanceToOverallLeader = windwardDistanceToOverallLeader;
@@ -1494,6 +1499,7 @@ public abstract class AbstractSimpleLeaderboardImpl implements Leaderboard, Race
this.averageSignedCrossTrackError = averageSignedCrossTrackError;
this.gapToLeaderInOwnTime = gapToLeaderInOwnTime;
this.correctedTime = correctedTime;
+ this.correctedTimeAtEstimatedArrivalAtCompetitorFarthestAhead = correctedTimeAtEstimatedArrivalAtCompetitorFarthestAhead;
}
public List getLegDetails() {
return legDetails;
@@ -1513,6 +1519,9 @@ public abstract class AbstractSimpleLeaderboardImpl implements Leaderboard, Race
public Duration getCorrectedTime() {
return correctedTime;
}
+ public Duration getCorrectedTimeAtEstimatedArrivalAtCompetitorFarthestAhead() {
+ return correctedTimeAtEstimatedArrivalAtCompetitorFarthestAhead;
+ }
}
/**
@@ -1610,7 +1619,8 @@ public abstract class AbstractSimpleLeaderboardImpl implements Leaderboard, Race
}
return new RaceDetails(legDetails, windwardDistanceToOverallLeader, averageAbsoluteCrossTrackError, averageSignedCrossTrackError,
trackedRace.getRankingMetric().getGapToLeaderInOwnTime(rankingInfo, competitor, cache),
- trackedRace.getRankingMetric().getCorrectedTime(competitor, timePoint));
+ trackedRace.getRankingMetric().getCorrectedTime(competitor, timePoint),
+ rankingInfo.getCompetitorRankingInfo().apply(competitor).getCorrectedTimeAtEstimatedArrivalAtCompetitorFarthestAhead());
} finally {
course.unlockAfterRead();
}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/DetailTypeFormatter.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/DetailTypeFormatter.java
index 7f4a11aa2bf..d62f2f12d55 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/DetailTypeFormatter.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/DetailTypeFormatter.java
@@ -130,6 +130,8 @@ public class DetailTypeFormatter {
return stringMessages.time();
case RACE_CORRECTED_TIME_TRAVELED:
return stringMessages.correctedTimeTraveled();
+ case RACE_CORRECTED_TIME_AT_ESTIMATED_ARRIVAL_AT_COMPETITOR_FARTHEST_AHEAD:
+ return stringMessages.raceCorrectedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSeconds();
case RACE_TIME_TRAVELED_DOWNWIND:
return stringMessages.timeDownwind();
case RACE_TIME_TRAVELED_REACHING:
@@ -204,6 +206,7 @@ public class DetailTypeFormatter {
case RACE_TIME_TRAVELED_REACHING:
case RACE_TIME_TRAVELED_UPWIND:
case TIME_BETWEEN_RACE_START_AND_COMPETITOR_START:
+ case RACE_CORRECTED_TIME_AT_ESTIMATED_ARRIVAL_AT_COMPETITOR_FARTHEST_AHEAD:
return stringMessages.secondsUnit();
case TIME_ON_DISTANCE_ALLOWANCE_IN_SECONDS_PER_NAUTICAL_MILE:
@@ -325,6 +328,8 @@ public class DetailTypeFormatter {
return stringMessages.gapToLeaderInSecondsTooltip();
case RACE_CORRECTED_TIME_TRAVELED:
return stringMessages.correctedTimeTraveledTooltip();
+ case RACE_CORRECTED_TIME_AT_ESTIMATED_ARRIVAL_AT_COMPETITOR_FARTHEST_AHEAD:
+ return stringMessages.raceCorrectedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip();
case RACE_RANK:
return stringMessages.rankTooltip();
case REGATTA_RANK:
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java
index c1c72a7c62b..8c33c821644 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.java
@@ -1292,4 +1292,6 @@ public interface StringMessages extends com.sap.sse.gwt.client.StringMessages, c
String correctedTimeTraveledTooltip();
String timeOnTimeFactorTooltip();
String timeOnDistanceAllowanceInSecondsPerNauticalMileTooltip();
+ String raceCorrectedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSeconds();
+ String raceCorrectedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip();
}
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties
index d5f1757626f..a347dbddb75 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages.properties
@@ -1260,3 +1260,5 @@ timeOnTimeFactorTooltip=Time-on-Time factor; actual time is multiplied with this
timeOnDistanceAllowanceInSecondsPerNauticalMileTooltip=Time-on-Distance allowance in seconds per nautical mile;\ndistance sailed is multiplied with this allowance, and the resulting seconds are subtracted from the actual time sailed\n(optionally corrected by the time-on-time factor) in the calculated time formula
correctedTimeTraveled=Corrected Time
correctedTimeTraveledTooltip=Corrected time according to competitor''s handicap\nbased on time since start of race and (windward) distance traveled
+raceCorrectedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSeconds=Corr.Time@Fastest
+raceCorrectedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Corrected time at estimated arrival at the competitor that is currently farthest ahead in the race;\nestimation based on average VMG in current leg and equal (corrected) performance to fastest boat in all subsequent legs
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_cn.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_cn.properties
index d0372b92c00..0981a062730 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_cn.properties
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_cn.properties
@@ -1250,4 +1250,6 @@ timeOnDistanceAllowanceInSecondsPerNauticalMile=Time-on-distance handicap allowa
timeOnTimeFactorTooltip=Time-on-Time factor; actual time is multiplied with this factor in calculated time formula
timeOnDistanceAllowanceInSecondsPerNauticalMileTooltip=Time-on-Distance allowance in seconds per nautical mile;\ndistance sailed is multiplied with this allowance, and the resulting seconds are subtracted from the actual time sailed\n(optionally corrected by the time-on-time factor) in the calculated time formula
correctedTimeTraveled=Corrected Time
-correctedTimeTraveledTooltip=Corrected time according to competitor''s handicap\nbased on time since start of race and (windward) distance traveled
\ No newline at end of file
+correctedTimeTraveledTooltip=Corrected time according to competitor''s handicap\nbased on time since start of race and (windward) distance traveled
+raceCorrectedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSeconds=Corr.Time@Fastest
+raceCorrectedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Corrected time at estimated arrival at the competitor that is currently farthest ahead in the race;\nestimation based on average VMG in current leg and equal (corrected) performance to fastest boat in all subsequent legs
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties
index 891a9d0ab1f..35e98f5df5b 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_de.properties
@@ -1246,7 +1246,9 @@ orcPerformanceCurveRankingMetricDescription=ORC Performance Curve: Aufwendiges H
timeOnTimeAndDistanceRankingMetricDescription=Time-on-Time / Time-on-Distance: Abschließende Rangreihenfolge nach korrigierter Zeit;\nDie Zeit wird korrigiert, indem ein optionaler Faktor an die tatsächlich gesegelte Zeit angebracht wird;\nZusätzlich kann eine optionale erwartete Zeit pro Seemeile, skaliert auf die Renndistanz, subtrahiert werden, angewandt auf die Kurslänge\nWährend der Wettfahrt wird die Rangreihenfolge anhand der korrigierten erwarteten Zeit bei Ankunft an der Position\ndes jetzt absolut in Führung liegenden Teilnehmers bestimmt,\nbasierend auf dem durchschnittlichen VMG/VMC des momentanen Bahnschenkels
timeOnTimeFactor=ToT Faktor
timeOnDistanceAllowanceInSecondsPerNauticalMile=ToD Zuteilung
-timeOnTimeFactorTooltip=Zeit-auf-Zeit Faktor; tatsächlich gesegelte Zeit wird für die Berechnete Zeit mit diesem Faktor multipliziert
+timeOnTimeFactorTooltip=Zeit-auf-Zeit Faktor; tatsächlich gesegelte Zeit wird für die berechnete Zeit mit diesem Faktor multipliziert
timeOnDistanceAllowanceInSecondsPerNauticalMileTooltip=Zeit-auf-Distanz Zuteilung in Sekunden pro Seemeile;\ndie gesegelte Distanz wird mit diesem Wert multipliziert, und die sich ergebende Zeit wird von der (ggf. per ToT-Faktor angepassten) Zeit subtrahiert
-correctedTimeTraveled=Korrigierte Zeit
-correctedTimeTraveledTooltip=Korrigierte Zeit anhand Teilnehmer-Handicap\nauf der Grundlage von Zeit seit Rennstart und zurückgelegter Distanz
+correctedTimeTraveled=Berechnete Zeit
+correctedTimeTraveledTooltip=Berechnete Zeit anhand Teilnehmer-Handicap\nauf der Grundlage von Zeit seit Rennstart und zurückgelegter Distanz
+raceCorrectedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSeconds=Ber.Zeit@Führender
+raceCorrectedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Berechnete Zeit bei erwarteter Ankunft am derzeit absolut in Führung liegenden Teilnehmers;\nSchätzung basierend auf durchschnittlichem VMG im aktuellen Bahnschenkel und gleicher verrechneter Geschwindigket wie der absolut in Führung liegende Teilnehmer\nfür alle nachfolgenden Bahnschenkel
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties
index 2430e62f98b..98420b7ecd8 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/StringMessages_ru.properties
@@ -1198,4 +1198,6 @@ timeOnDistanceAllowanceInSecondsPerNauticalMile=Time-on-distance handicap allowa
timeOnTimeFactorTooltip=Time-on-Time factor; actual time is multiplied with this factor in calculated time formula
timeOnDistanceAllowanceInSecondsPerNauticalMileTooltip=Time-on-Distance allowance in seconds per nautical mile;\ndistance sailed is multiplied with this allowance, and the resulting seconds are subtracted from the actual time sailed\n(optionally corrected by the time-on-time factor) in the calculated time formula
correctedTimeTraveled=Corrected Time
-correctedTimeTraveledTooltip=Corrected time according to competitor''s handicap\nbased on time since start of race and (windward) distance traveled
\ No newline at end of file
+correctedTimeTraveledTooltip=Corrected time according to competitor''s handicap\nbased on time since start of race and (windward) distance traveled
+raceCorrectedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSeconds=Corr.Time@Fastest
+raceCorrectedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSecondsTooltip=Corrected time at estimated arrival at the competitor that is currently farthest ahead in the race;\nestimation based on average VMG in current leg and equal (corrected) performance to fastest boat in all subsequent legs
diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java
index ab49f4c7a61..d58c115ab70 100755
--- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java
+++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/leaderboard/LeaderboardPanel.java
@@ -862,6 +862,7 @@ public class LeaderboardPanel extends SimplePanel implements TimeListener, PlayS
DetailType.RACE_AVERAGE_SPEED_OVER_GROUND_IN_KNOTS,
DetailType.RACE_DISTANCE_TRAVELED, DetailType.RACE_DISTANCE_TRAVELED_INCLUDING_GATE_START,
DetailType.RACE_TIME_TRAVELED, DetailType.RACE_CORRECTED_TIME_TRAVELED,
+ DetailType.RACE_CORRECTED_TIME_AT_ESTIMATED_ARRIVAL_AT_COMPETITOR_FARTHEST_AHEAD,
DetailType.RACE_CURRENT_SPEED_OVER_GROUND_IN_KNOTS, DetailType.RACE_DISTANCE_TO_LEADER_IN_METERS,
DetailType.NUMBER_OF_MANEUVERS, DetailType.DISPLAY_LEGS, DetailType.CURRENT_LEG,
DetailType.RACE_AVERAGE_ABSOLUTE_CROSS_TRACK_ERROR_IN_METERS,
@@ -872,7 +873,8 @@ public class LeaderboardPanel extends SimplePanel implements TimeListener, PlayS
DetailType.SPEED_OVER_GROUND_WHEN_PASSING_START,
DetailType.DISTANCE_TO_STARBOARD_END_OF_STARTLINE_WHEN_PASSING_START_IN_METERS,
DetailType.START_TACK,
- DetailType.RACE_RATIO_BETWEEN_TIME_SINCE_LAST_POSITION_FIX_AND_AVERAGE_SAMPLING_INTERVAL };
+ DetailType.RACE_RATIO_BETWEEN_TIME_SINCE_LAST_POSITION_FIX_AND_AVERAGE_SAMPLING_INTERVAL,
+ DetailType.RACE_CORRECTED_TIME_AT_ESTIMATED_ARRIVAL_AT_COMPETITOR_FARTHEST_AHEAD};
}
public static DetailType[] getAvailableOverallDetailColumnTypes() {
@@ -979,7 +981,10 @@ public class LeaderboardPanel extends SimplePanel implements TimeListener, PlayS
result.put(DetailType.RACE_CORRECTED_TIME_TRAVELED,
new FormattedDoubleDetailTypeColumn(DetailType.RACE_CORRECTED_TIME_TRAVELED, new RaceCorrectedTimeTraveledInSeconds(),
LEG_COLUMN_HEADER_STYLE, LEG_COLUMN_STYLE, LeaderboardPanel.this));
-
+ result.put(DetailType.RACE_CORRECTED_TIME_TRAVELED, new FormattedDoubleDetailTypeColumn(
+ DetailType.RACE_CORRECTED_TIME_AT_ESTIMATED_ARRIVAL_AT_COMPETITOR_FARTHEST_AHEAD,
+ new RaceCorrectedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSeconds(),
+ LEG_COLUMN_HEADER_STYLE, LEG_COLUMN_STYLE, LeaderboardPanel.this));
return result;
}
@@ -1287,6 +1292,19 @@ public class LeaderboardPanel extends SimplePanel implements TimeListener, PlayS
}
}
+ private class RaceCorrectedTimeAtEstimatedArrivalAtCompetitorFarthestAheadInSeconds implements LegDetailField {
+ @Override
+ public Double get(LeaderboardRowDTO row) {
+ Double result = null;
+ LeaderboardEntryDTO fieldsForRace = row.fieldsByRaceColumnName.get(getRaceColumnName());
+ if (fieldsForRace != null) {
+ result = fieldsForRace.correctedTimeAtEstimatedArrivalAtCompetitorFarthestAhead == null ? null
+ : fieldsForRace.correctedTimeAtEstimatedArrivalAtCompetitorFarthestAhead.asSeconds();
+ }
+ return result;
+ }
+ }
+
/**
* Accumulates the distance traveled over all legs of a race and considers the specifics of a gate start. The
* first leg of a gate start gets as additional distance traveled the distance from the port side of the line to