diff --git a/java/com.sap.sailing.gwt.ui/GWT Sailing SDM.launch b/java/com.sap.sailing.gwt.ui/GWT Sailing SDM.launch
index 63e7e8dc021..280ee214cc8 100755
--- a/java/com.sap.sailing.gwt.ui/GWT Sailing SDM.launch
+++ b/java/com.sap.sailing.gwt.ui/GWT Sailing SDM.launch
@@ -36,84 +36,82 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/AbstractLeaderboardsResource.java b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/AbstractLeaderboardsResource.java
index 3e8a96c2a44..77193e06078 100644
--- a/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/AbstractLeaderboardsResource.java
+++ b/java/com.sap.sailing.server.gateway/src/com/sap/sailing/server/gateway/jaxrs/api/AbstractLeaderboardsResource.java
@@ -10,6 +10,8 @@ import org.apache.shiro.SecurityUtils;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
+import com.sap.sailing.domain.abstractlog.race.RaceLog;
+import com.sap.sailing.domain.abstractlog.race.analyzing.impl.ResultsAreOfficialFinder;
import com.sap.sailing.domain.base.Competitor;
import com.sap.sailing.domain.base.CompetitorWithBoat;
import com.sap.sailing.domain.base.Fleet;
@@ -193,6 +195,7 @@ public abstract class AbstractLeaderboardsResource extends AbstractSailingServer
? MillisecondsTimePoint.now().minus(trackedRace.getDelayToLiveInMillis())
: new MillisecondsTimePoint(resultTimePoint)));
trackedRaceInfo.put("delayToLiveInMillis", trackedRace.getDelayToLiveInMillis());
+ trackedRaceInfo.put("resultsAreOfficial", isResultsAreOfficial(trackedRace));
if (trackedRace.getStatus() != null) {
trackedRaceInfo.put("status", trackedRace.getStatus().getStatus().toString());
trackedRaceInfo.put("loadingProgress", trackedRace.getStatus().getLoadingProgress());
@@ -203,6 +206,15 @@ public abstract class AbstractLeaderboardsResource extends AbstractSailingServer
}
}
+ private boolean isResultsAreOfficial(TrackedRace trackedRace) {
+ for (final RaceLog raceLog : trackedRace.getAttachedRaceLogs()) {
+ if (new ResultsAreOfficialFinder(raceLog).analyze() != null) {
+ return true;
+ }
+ }
+ return false;
+ }
+
protected TimePoint calculateTimePointForResultState(Leaderboard leaderboard, ResultStates resultState) {
TimePoint result = null;
switch (resultState) {
diff --git a/java/com.sap.sailing.server/SailingServer (No Proxy, Axel).launch b/java/com.sap.sailing.server/SailingServer (No Proxy, Axel).launch
index 00088538bd1..1b352663e63 100644
--- a/java/com.sap.sailing.server/SailingServer (No Proxy, Axel).launch
+++ b/java/com.sap.sailing.server/SailingServer (No Proxy, Axel).launch
@@ -31,10 +31,183 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-