From 3ffd736edf610b09a78740026c1a75a92e24f233 Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 29 May 2015 15:22:35 +0200 Subject: [PATCH] fixed case where a competitor was identified as farthest ahead but hasn't started a leg for which a comparator is requested --- .../ranking/TimeOnTimeAndDistanceRankingMetric.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/ranking/TimeOnTimeAndDistanceRankingMetric.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/ranking/TimeOnTimeAndDistanceRankingMetric.java index e4c3e8bd728..bc893cd3516 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/ranking/TimeOnTimeAndDistanceRankingMetric.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/ranking/TimeOnTimeAndDistanceRankingMetric.java @@ -104,8 +104,10 @@ public class TimeOnTimeAndDistanceRankingMetric extends AbstractRankingMetric { // competitors that have not yet started the leg will get a duration based on Long.MAX_VALUE final Map correctedTimesToReachFastestBoatsPositionAtTimePointOrEndOfLegMeasuredFromStartOfRace = new HashMap<>(); final Competitor fastestCompetitorInLeg = getCompetitorFarthestAheadInLeg(trackedLeg, timePoint, cache); + final boolean fastestCompetitorHasStartedLeg; if (fastestCompetitorInLeg != null) { final TrackedLegOfCompetitor trackedLegOfFastestCompetitorInLeg = trackedLeg.getTrackedLeg(fastestCompetitorInLeg); + fastestCompetitorHasStartedLeg = trackedLegOfFastestCompetitorInLeg.hasStartedLeg(timePoint); final Distance totalWindwardDistanceLegLeaderTraveledUpToTimePointOrLegEnd; final TimePoint startOfRace = getTrackedRace().getStartOfRace(); final Position positionOfFastestBoatInLegAtTimePointOrLegEnd; @@ -152,10 +154,12 @@ public class TimeOnTimeAndDistanceRankingMetric extends AbstractRankingMetric { } correctedTimesToReachFastestBoatsPositionAtTimePointOrEndOfLegMeasuredFromStartOfRace.put(competitor, correctedTime); } + } else { + fastestCompetitorHasStartedLeg = false; } - return (tloc1, tloc2) -> fastestCompetitorInLeg==null ? 0 : + return (tloc1, tloc2) -> fastestCompetitorHasStartedLeg ? correctedTimesToReachFastestBoatsPositionAtTimePointOrEndOfLegMeasuredFromStartOfRace.get(tloc1.getCompetitor()). - compareTo(correctedTimesToReachFastestBoatsPositionAtTimePointOrEndOfLegMeasuredFromStartOfRace.get(tloc2.getCompetitor())); + compareTo(correctedTimesToReachFastestBoatsPositionAtTimePointOrEndOfLegMeasuredFromStartOfRace.get(tloc2.getCompetitor())) : 0; } @Override