mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-05 11:53:53 +00:00
unified the way RaceColumnDTO.isLive() works for stripped and complete leaderboards
This commit is contained in:
1 parent
835460f255
commit
024ca01e4a
2 files changed
+21
-17
No files matched your search
+18
-1
@@ -1924,6 +1924,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
private StrippedLeaderboardDTO createStrippedLeaderboardDTO(Leaderboard leaderboard, boolean withGeoLocationData) {
|
||||
StrippedLeaderboardDTO leaderboardDTO = new StrippedLeaderboardDTO();
|
||||
TimePoint startOfLatestRace = null;
|
||||
TimePoint now = MillisecondsTimePoint.now();
|
||||
Long delayToLiveInMillisForLatestRace = null;
|
||||
leaderboardDTO.name = leaderboard.getName();
|
||||
leaderboardDTO.competitorDisplayNames = new HashMap<CompetitorDTO, String>();
|
||||
@@ -1942,6 +1943,7 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
leaderboardDTO.hasCarriedPoints = leaderboard.hasCarriedPoints();
|
||||
leaderboardDTO.discardThresholds = leaderboard.getResultDiscardingRule().getDiscardIndexResultsStartingWithHowManyRaces();
|
||||
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
|
||||
TimePoint latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive = null;
|
||||
for (Fleet fleet : raceColumn.getFleets()) {
|
||||
RaceDTO raceDTO = null;
|
||||
RegattaAndRaceIdentifier raceIdentifier = null;
|
||||
@@ -1962,10 +1964,25 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
|
||||
raceDTO.places = racePlaces;
|
||||
raceDTO.startOfRace = trackedRace.getStartOfRace() == null ? null : trackedRace.getStartOfRace().asDate();
|
||||
raceDTO.endOfRace = trackedRace.getEndOfRace() == null ? null : trackedRace.getEndOfRace().asDate();
|
||||
if (trackedRace.hasStarted(now) && trackedRace.hasGPSData() && trackedRace.hasWindData()) {
|
||||
TimePoint liveTimePointForTrackedRace = now;
|
||||
final TimePoint endOfRace = trackedRace.getEndOfRace();
|
||||
if (endOfRace != null) {
|
||||
liveTimePointForTrackedRace = endOfRace;
|
||||
}
|
||||
if (latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive == null
|
||||
|| liveTimePointForTrackedRace
|
||||
.after(latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive)) {
|
||||
latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive = liveTimePointForTrackedRace;
|
||||
}
|
||||
}
|
||||
}
|
||||
final FleetDTO fleetDTO = convertToFleetDTO(fleet);
|
||||
leaderboardDTO.addRace(raceColumn.getName(), raceColumn.getExplicitFactor(), fleetDTO,
|
||||
RaceColumnDTO raceColumnDTO = leaderboardDTO.addRace(raceColumn.getName(), raceColumn.getExplicitFactor(), fleetDTO,
|
||||
raceColumn.isMedalRace(), raceIdentifier, raceDTO);
|
||||
if (latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive != null) {
|
||||
raceColumnDTO.setWhenLastTrackedRaceWasLive(latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive.asDate());
|
||||
}
|
||||
}
|
||||
}
|
||||
return leaderboardDTO;
|
||||
|
||||
+3
-16
@@ -13,7 +13,7 @@ import com.sap.sailing.domain.common.RaceIdentifier;
|
||||
import com.sap.sailing.domain.common.RegattaAndRaceIdentifier;
|
||||
|
||||
public class RaceColumnDTO extends NamedDTO implements IsSerializable {
|
||||
private static final long IS_LIVE_GRACE_PERIOD_IN_MILLIS = 5 * 60 * 1000; // five minutes
|
||||
private static final long IS_LIVE_GRACE_PERIOD_IN_MILLIS = 3 * 60 * 1000; // three minutes
|
||||
|
||||
private boolean medalRace;
|
||||
private List<FleetDTO> fleets;
|
||||
@@ -146,23 +146,10 @@ public class RaceColumnDTO extends NamedDTO implements IsSerializable {
|
||||
*/
|
||||
public boolean isLive() {
|
||||
boolean result = false;
|
||||
final long now = System.currentTimeMillis();
|
||||
if (getWhenLastTrackedRaceWasLive() != null
|
||||
&& getWhenLastTrackedRaceWasLive().getTime() > System.currentTimeMillis() - IS_LIVE_GRACE_PERIOD_IN_MILLIS) {
|
||||
&& getWhenLastTrackedRaceWasLive().getTime() > now - IS_LIVE_GRACE_PERIOD_IN_MILLIS) {
|
||||
result = true;
|
||||
} else {
|
||||
for (FleetDTO fleet : getFleets()) {
|
||||
final RaceDTO raceDTO = racesPerFleet.get(fleet);
|
||||
if (trackedRaceIdentifiersPerFleet.get(fleet) != null
|
||||
&& raceDTO != null
|
||||
&& raceDTO.trackedRace != null
|
||||
&& raceDTO.trackedRace.hasGPSData && raceDTO.trackedRace.hasWindData
|
||||
&& raceDTO.endOfRace == null
|
||||
&& (raceDTO.trackedRace.startOfTracking != null ? new Date()
|
||||
.after(raceDTO.trackedRace.startOfTracking) : false)) {
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user