From 5af42c85a9379db0e20c78ed483d80d4fdd8a8a1 Mon Sep 17 00:00:00 2001 From: Lennart Hensler Date: Sun, 23 Oct 2016 11:57:49 +0200 Subject: [PATCH 1/4] Created a simple Medal Race dimension --- .../stringmessages/Sailing_StringMessages.properties | 3 ++- .../stringmessages/Sailing_StringMessages_de.properties | 3 ++- .../sap/sailing/datamining/data/HasTrackedRaceContext.java | 3 +++ .../sailing/datamining/impl/data/TrackedRaceWithContext.java | 5 +++++ 4 files changed, 12 insertions(+), 2 deletions(-) diff --git a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties index c05cc401159..c3317d84fd8 100644 --- a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties +++ b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages.properties @@ -81,4 +81,5 @@ RankThirtySecondsAfterStart=Rank 30s After Start WindwardDistanceToAdvantageousEndOfLine=Windward Distance to Advantageous End of Line RankAfterHalfOfTheFirstLeg=Rank after the half of the first leg AdvantageousEndOfLine=Advantageous End of Line -TimeSpentInSeconds=Time Spent in Seconds \ No newline at end of file +TimeSpentInSeconds=Time Spent in Seconds +MedalRace=Medal Race \ No newline at end of file diff --git a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties index a12a8452ec2..4c6d486e4ca 100644 --- a/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties +++ b/java/com.sap.sailing.datamining/resources/stringmessages/Sailing_StringMessages_de.properties @@ -81,4 +81,5 @@ RankThirtySecondsAfterStart=Absolute Platzierung 30s nach dem Startzeitpunkt WindwardDistanceToAdvantageousEndOfLine=Windwärtige Distanz zum Bevorteilten Ende der Startlinie RankAfterHalfOfTheFirstLeg=Platzierung nach der Hälfte des ersten Schenkels AdvantageousEndOfLine=Bevorteiltes Ende der Startlinie -TimeSpentInSeconds=Benötigte Zeit in Sekunden \ No newline at end of file +TimeSpentInSeconds=Benötigte Zeit in Sekunden +MedalRace=Medaillenrennen \ No newline at end of file diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedRaceContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedRaceContext.java index 059a000e659..1b5f0200163 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedRaceContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/data/HasTrackedRaceContext.java @@ -40,6 +40,9 @@ public interface HasTrackedRaceContext { @Dimension(messageKey="AdvantageousEndOfLine", ordinal=6) public NauticalSide getAdvantageousEndOfLine(); + @Dimension(messageKey="MedalRace", ordinal=7) + public Boolean isMedalRace(); + @Dimension(messageKey="IsTracked", ordinal=7) public Boolean isTracked(); diff --git a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedRaceWithContext.java b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedRaceWithContext.java index a7e4a0893c0..49409d39887 100644 --- a/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedRaceWithContext.java +++ b/java/com.sap.sailing.datamining/src/com/sap/sailing/datamining/impl/data/TrackedRaceWithContext.java @@ -98,6 +98,11 @@ public class TrackedRaceWithContext implements HasTrackedRaceContext { LineDetails startLine = getTrackedRace().getStartLine(getTrackedRace().getStartOfRace()); return startLine.getAdvantageousSideWhileApproachingLine(); } + + @Override + public Boolean isMedalRace() { + return getLeaderboardContext().getLeaderboard().getRaceColumnAndFleet(getTrackedRace()).getA().isMedalRace(); + } @Override public Boolean isTracked() { From ca10c00b3010a6f2e1b8d23c9a00b62545df7150 Mon Sep 17 00:00:00 2001 From: Kai Boernert Date: Tue, 25 Oct 2016 13:36:36 +0200 Subject: [PATCH 2/4] prevent a race from being live, if endOfTracking is null, instead clamp the time using endOfRace and MAX_TIME_AFTER_RACE_END --- .../sap/sailing/gwt/ui/client/RaceTimePanel.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) 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..177364fc30f 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 @@ -6,6 +6,7 @@ import java.util.List; import java.util.Map; import java.util.Set; +import com.google.gwt.core.shared.GWT; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.security.Permission; import com.sap.sailing.domain.common.security.SailingPermissionsForRoleProvider; @@ -235,7 +236,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,8 +245,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; } else { From b8dc4dccff7b2e729841320ed0a7d798fd87284e Mon Sep 17 00:00:00 2001 From: Kai Boernert Date: Tue, 25 Oct 2016 13:38:00 +0200 Subject: [PATCH 3/4] fixed warnings --- .../main/java/com/sap/sailing/gwt/ui/client/RaceTimePanel.java | 1 - 1 file changed, 1 deletion(-) 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 177364fc30f..82641ff76be 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 @@ -6,7 +6,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import com.google.gwt.core.shared.GWT; import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.security.Permission; import com.sap.sailing.domain.common.security.SailingPermissionsForRoleProvider; From 7da6078e7b328b3ba246160bef46760b98199515 Mon Sep 17 00:00:00 2001 From: Steffen Schaefer Date: Tue, 25 Oct 2016 14:52:09 +0200 Subject: [PATCH 4/4] Formatting changes --- .../com/sap/sailing/gwt/ui/client/RaceTimePanel.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) 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 82641ff76be..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 @@ -245,14 +245,15 @@ public class RaceTimePanel extends TimePanel implements R new Date(latestOfNewestTrackingEventAndEndOfRace.getTime() + RaceTimesCalculationUtil.TIME_AFTER_LIVE); } else { 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)){ + 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; } else {