diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/RaceTimePanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/RaceTimePanel.java index 2d4272927b8..5dc61e13e33 100644 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/RaceTimePanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/client/RaceTimePanel.java @@ -235,7 +235,7 @@ public class RaceTimePanel extends TimePanel implements R // neither do we know about the end time if both, startOfTracking and endOfTracking are null // and we have neither a valid newestTrackingEvent nor an endOfRace value; if we do, we would // have to be before the later one plus some leeway. - final Date endTimeOfLivePeriod; + Date endTimeOfLivePeriod; if (lastRaceTimesInfo.startOfTracking == null && lastRaceTimesInfo.endOfTracking == null) { Date latestOfNewestTrackingEventAndEndOfRace = lastRaceTimesInfo.newestTrackingEvent; if (latestOfNewestTrackingEventAndEndOfRace == null || (lastRaceTimesInfo.endOfRace != null && lastRaceTimesInfo.endOfRace.after(latestOfNewestTrackingEventAndEndOfRace))) { @@ -244,7 +244,15 @@ public class RaceTimePanel extends TimePanel implements R endTimeOfLivePeriod = latestOfNewestTrackingEventAndEndOfRace == null ? null : new Date(latestOfNewestTrackingEventAndEndOfRace.getTime() + RaceTimesCalculationUtil.TIME_AFTER_LIVE); } else { - endTimeOfLivePeriod = lastRaceTimesInfo.endOfTracking == null ? null : lastRaceTimesInfo.endOfTracking; + endTimeOfLivePeriod = lastRaceTimesInfo.endOfTracking == null ? null : lastRaceTimesInfo.endOfTracking; + if (lastRaceTimesInfo.endOfRace != null) { + // this is a failsafe, if the tracking was never finsihed, the race was always assumed to be live. + Date latestAllowedTime = new Date( + lastRaceTimesInfo.endOfRace.getTime() + RaceTimesCalculationUtil.MAX_TIME_AFTER_RACE_END); + if (endTimeOfLivePeriod == null || endTimeOfLivePeriod.after(latestAllowedTime)) { + endTimeOfLivePeriod = latestAllowedTime; + } + } } isLiveModeToBeMadePossible = endTimeOfLivePeriod == null /* meaning we don't know an end time */ || endTimeOfLivePeriod.getTime() >= liveTimePointInMillis;