diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/RibDashboardService.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/RibDashboardService.java index 75bb5fbb7ea..b7dc461ca98 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/RibDashboardService.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/RibDashboardService.java @@ -7,10 +7,13 @@ import com.sap.sailing.dashboards.gwt.shared.dto.RibDashboardRaceInfoDTO; import com.sap.sailing.dashboards.gwt.shared.dto.StartlineAdvantagesWithMaxAndAverageDTO; import com.sap.sailing.dashboards.gwt.shared.dto.startanalysis.StartAnalysisDTO; import com.sap.sailing.domain.common.NoWindException; +import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.dto.CompetitorDTO; public interface RibDashboardService extends RemoteService { - RibDashboardRaceInfoDTO getLiveRaceInfo(String leaderboardName) throws NoWindException; + RibDashboardRaceInfoDTO getLiveRaceInfo(String leaderboardName) throws NoWindException; + + RegattaAndRaceIdentifier getIDFromRaceThatTakesWindFixesNow(String leaderboardName); List getStartAnalysisListForCompetitorIDAndLeaderboardName(String competitorIdAsString, String leaderboardName); diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/RibDashboardServiceAsync.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/RibDashboardServiceAsync.java index 378bf3e9bc7..11dd9508bcf 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/RibDashboardServiceAsync.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/client/RibDashboardServiceAsync.java @@ -6,6 +6,7 @@ import com.google.gwt.user.client.rpc.AsyncCallback; import com.sap.sailing.dashboards.gwt.shared.dto.RibDashboardRaceInfoDTO; import com.sap.sailing.dashboards.gwt.shared.dto.StartlineAdvantagesWithMaxAndAverageDTO; import com.sap.sailing.dashboards.gwt.shared.dto.startanalysis.StartAnalysisDTO; +import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.dto.CompetitorDTO; public interface RibDashboardServiceAsync { @@ -17,4 +18,7 @@ public interface RibDashboardServiceAsync { void getCompetitorsInLeaderboard(String leaderboardName, AsyncCallback> callback); void getAdvantagesOnStartline(String leaderboardName, AsyncCallback callback); + + void getIDFromRaceThatTakesWindFixesNow(String leaderboardName, AsyncCallback callback); + } diff --git a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/RibDashboardServiceImpl.java b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/RibDashboardServiceImpl.java index fbd6e9f09f1..80ead9eb69c 100644 --- a/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/RibDashboardServiceImpl.java +++ b/java/com.sap.sailing.dashboards.gwt/src/main/java/com/sap/sailing/dashboards/gwt/server/RibDashboardServiceImpl.java @@ -6,6 +6,7 @@ import java.util.Iterator; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.stream.Collectors; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; @@ -31,6 +32,7 @@ import com.sap.sailing.domain.base.Waypoint; import com.sap.sailing.domain.common.Distance; import com.sap.sailing.domain.common.NoWindException; import com.sap.sailing.domain.common.Position; +import com.sap.sailing.domain.common.RegattaAndRaceIdentifier; import com.sap.sailing.domain.common.dto.CompetitorDTO; import com.sap.sailing.domain.common.tracking.GPSFix; import com.sap.sailing.domain.leaderboard.Leaderboard; @@ -129,6 +131,22 @@ public class RibDashboardServiceImpl extends RemoteServiceServlet implements Rib } return lRInfo; } + + @Override + public RegattaAndRaceIdentifier getIDFromRaceThatTakesWindFixesNow(String leaderboardName) { + RegattaAndRaceIdentifier result = null; + if(leaderboardName != null) { + List trackedRaces = getTrackedRacesFromLeaderboard(leaderboardName); + List filteredTrackedRaces = trackedRaces.stream().filter(trackedRace -> trackedRace.takesWindFixWithTimePoint(MillisecondsTimePoint.now())).collect(Collectors.toList()); + if(filteredTrackedRaces != null) { + TrackedRace raceThatTakesWindNow = filteredTrackedRaces.get(0); + if(raceThatTakesWindNow != null) { + result = raceThatTakesWindNow.getRaceIdentifier(); + } + } + } + return result; + } private void fillLiveRaceInfoDTOWithRaceData(RibDashboardRaceInfoDTO lRInfo, TimePoint now) { if (runningRace != null) {