From 6a3c4e1bae45539451cda2545b349a7cff827a1b Mon Sep 17 00:00:00 2001 From: Axel Uhl Date: Fri, 29 May 2015 14:47:22 +0200 Subject: [PATCH] added more null safety for unstarted races Conflicts: mobile/github-advrecyclerview_lib/.settings/org.eclipse.jdt.core.prefs --- .../domain/ranking/AbstractRankingMetric.java | 2 +- .../TimeOnTimeAndDistanceRankingMetric.java | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/ranking/AbstractRankingMetric.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/ranking/AbstractRankingMetric.java index 30504b26178..ed0ef1b9d7d 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/ranking/AbstractRankingMetric.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/ranking/AbstractRankingMetric.java @@ -224,7 +224,7 @@ public abstract class AbstractRankingMetric implements RankingMetric { (c1, c2) -> durationComparatorNullsLast.compare( competitorRankingInfo.get(c1).getCorrectedTimeAtEstimatedArrivalAtCompetitorFarthestAhead(), competitorRankingInfo.get(c2).getCorrectedTimeAtEstimatedArrivalAtCompetitorFarthestAhead())). - findFirst().get(); + findFirst().orElse(null); } @Override 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 2c76600b098..e4c3e8bd728 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 @@ -252,13 +252,19 @@ public class TimeOnTimeAndDistanceRankingMetric extends AbstractRankingMetric { */ @Override public Duration getGapToLeaderInOwnTime(RankingMetric.RankingInfo rankingInfo, Competitor competitor, WindLegTypeAndLegBearingCache cache) { + final Duration result; // actual times and common distance: final Competitor leaderByCorrectedEstimatedTimeToCompetitorFarthestAhead = rankingInfo.getLeaderByCorrectedEstimatedTimeToCompetitorFarthestAhead(); - final Duration t_k = rankingInfo.getCompetitorRankingInfo().apply(leaderByCorrectedEstimatedTimeToCompetitorFarthestAhead). - getEstimatedActualDurationFromRaceStartToCompetitorFarthestAhead(); - final Duration t_i = rankingInfo.getCompetitorRankingInfo().apply(competitor).getEstimatedActualDurationFromRaceStartToCompetitorFarthestAhead(); - final Distance d = rankingInfo.getCompetitorRankingInfo().apply(rankingInfo.getCompetitorFarthestAhead()).getWindwardDistanceSailed(); - return getGapToCompetitorInOwnTime(competitor, leaderByCorrectedEstimatedTimeToCompetitorFarthestAhead, t_i, t_k, d); + if (leaderByCorrectedEstimatedTimeToCompetitorFarthestAhead == null) { + result = null; + } else { + final Duration t_k = rankingInfo.getCompetitorRankingInfo().apply(leaderByCorrectedEstimatedTimeToCompetitorFarthestAhead). + getEstimatedActualDurationFromRaceStartToCompetitorFarthestAhead(); + final Duration t_i = rankingInfo.getCompetitorRankingInfo().apply(competitor).getEstimatedActualDurationFromRaceStartToCompetitorFarthestAhead(); + final Distance d = rankingInfo.getCompetitorRankingInfo().apply(rankingInfo.getCompetitorFarthestAhead()).getWindwardDistanceSailed(); + result = getGapToCompetitorInOwnTime(competitor, leaderByCorrectedEstimatedTimeToCompetitorFarthestAhead, t_i, t_k, d); + } + return result; } /**