mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-19 02:29:58 +00:00
By default let a leaderboard use the delay to live of the latest tracked race associated with it
This commit is contained in:
1 parent
e6c4982c41
commit
9cbb07ab4b
5 files changed
+26
-33
No files matched your search
+2
-15
@@ -1332,21 +1332,8 @@ public class LeaderboardPanel extends FormPanel implements TimeListener, PlaySta
|
||||
* explicit setting changes} were performed, automatically adjusts the delay accordingly.
|
||||
*/
|
||||
private void adjustDelayToLive() {
|
||||
if (!settingsUpdatedExplicitly) {
|
||||
long latestNonNullDelayToLiveInMillis = 0; // if we don't fine anything, use zero delay ("now")
|
||||
Date latestStartTime = new Date(0l);
|
||||
for (RaceColumnDTO raceColumn : selectedRaceColumns) {
|
||||
for (FleetDTO fleet : raceColumn.getFleets()) {
|
||||
Date startTime = raceColumn.getStartDate(fleet);
|
||||
if (startTime != null && startTime.after(latestStartTime)) {
|
||||
Long delayToLiveInMillis = raceColumn.getDelayToLiveInMillis(fleet);
|
||||
if (delayToLiveInMillis != null) {
|
||||
latestNonNullDelayToLiveInMillis = delayToLiveInMillis;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
setDelayInMilliseconds(latestNonNullDelayToLiveInMillis);
|
||||
if (!settingsUpdatedExplicitly && leaderboard.getDelayToLiveInMillisForLatestRace() != null) {
|
||||
setDelayInMilliseconds(leaderboard.getDelayToLiveInMillisForLatestRace());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+13
-6
@@ -426,6 +426,8 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
|
||||
result.competitors = new ArrayList<CompetitorDTO>();
|
||||
result.name = leaderboard.getName();
|
||||
result.competitorDisplayNames = new HashMap<CompetitorDTO, String>();
|
||||
TimePoint startOfLatestRace = null;
|
||||
Long delayToLiveInMillisForLatestRace = null;
|
||||
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
|
||||
RaceColumnDTO raceColumnDTO = result.createEmptyRaceColumn(raceColumn.getName(), raceColumn.isMedalRace());
|
||||
for (Fleet fleet : raceColumn.getFleets()) {
|
||||
@@ -433,7 +435,9 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
|
||||
TrackedRace trackedRace = raceColumn.getTrackedRace(fleet);
|
||||
final FleetDTO fleetDTO = createFleetDTO(fleet);
|
||||
if (trackedRace != null) {
|
||||
raceColumnDTO.setDelayToLiveInMillis(fleetDTO, trackedRace.getDelayToLiveInMillis());
|
||||
if (startOfLatestRace == null || (trackedRace.getStartOfRace() != null && trackedRace.getStartOfRace().compareTo(startOfLatestRace) > 0)) {
|
||||
delayToLiveInMillisForLatestRace = trackedRace.getDelayToLiveInMillis();
|
||||
}
|
||||
raceIdentifier = new RegattaNameAndRaceName(trackedRace.getTrackedRegatta().getRegatta()
|
||||
.getName(), trackedRace.getRace().getName());
|
||||
}
|
||||
@@ -442,6 +446,7 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
|
||||
}
|
||||
result.setCompetitorsFromBestToWorst(raceColumnDTO, getCompetitorDTOList(leaderboard.getCompetitorsFromBestToWorst(raceColumn, timePoint)));
|
||||
}
|
||||
result.setDelayToLiveInMillisForLatestRace(delayToLiveInMillisForLatestRace);
|
||||
result.rows = new HashMap<CompetitorDTO, LeaderboardRowDTO>();
|
||||
result.hasCarriedPoints = leaderboard.hasCarriedPoints();
|
||||
result.discardThresholds = leaderboard.getResultDiscardingRule().getDiscardIndexResultsStartingWithHowManyRaces();
|
||||
@@ -1792,16 +1797,19 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
|
||||
*/
|
||||
private StrippedLeaderboardDTO createStrippedLeaderboardDTO(Leaderboard leaderboard, boolean withGeoLocationData) {
|
||||
StrippedLeaderboardDTO leaderboardDTO = new StrippedLeaderboardDTO();
|
||||
TimePoint startOfLatestRace = null;
|
||||
Long delayToLiveInMillisForLatestRace = null;
|
||||
leaderboardDTO.name = leaderboard.getName();
|
||||
leaderboardDTO.competitorDisplayNames = new HashMap<CompetitorDTO, String>();
|
||||
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
|
||||
StrippedRaceDTO race = null;
|
||||
for (Fleet fleet : raceColumn.getFleets()) {
|
||||
RegattaAndRaceIdentifier raceIdentifier = null;
|
||||
long delayToLiveInMillis = 0;
|
||||
if (raceColumn.getTrackedRace(fleet) != null) {
|
||||
TrackedRace trackedRace = raceColumn.getTrackedRace(fleet);
|
||||
delayToLiveInMillis = trackedRace.getDelayToLiveInMillis();
|
||||
if (startOfLatestRace == null || (trackedRace.getStartOfRace() != null && trackedRace.getStartOfRace().compareTo(startOfLatestRace) > 0)) {
|
||||
delayToLiveInMillisForLatestRace = trackedRace.getDelayToLiveInMillis();
|
||||
}
|
||||
raceIdentifier = new RegattaNameAndRaceName(trackedRace.getTrackedRegatta().getRegatta().getName(), trackedRace.getRace().getName());
|
||||
// Optional: Getting the places of the race
|
||||
PlacemarkOrderDTO racePlaces = withGeoLocationData ? getRacePlaces(trackedRace) : null;
|
||||
@@ -1812,13 +1820,12 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
|
||||
race.endOfRace = trackedRace.getEndOfRace() == null ? null : trackedRace.getEndOfRace().asDate();
|
||||
}
|
||||
final FleetDTO fleetDTO = createFleetDTO(fleet);
|
||||
RaceColumnDTO raceColumnDTO = leaderboardDTO.addRace(raceColumn.getName(), fleetDTO,
|
||||
raceColumn.isMedalRace(), raceIdentifier, race);
|
||||
raceColumnDTO.setDelayToLiveInMillis(fleetDTO, delayToLiveInMillis);
|
||||
leaderboardDTO.addRace(raceColumn.getName(), fleetDTO, raceColumn.isMedalRace(), raceIdentifier, race);
|
||||
}
|
||||
}
|
||||
leaderboardDTO.hasCarriedPoints = leaderboard.hasCarriedPoints();
|
||||
leaderboardDTO.discardThresholds = leaderboard.getResultDiscardingRule().getDiscardIndexResultsStartingWithHowManyRaces();
|
||||
leaderboardDTO.setDelayToLiveInMillisForLatestRace(delayToLiveInMillisForLatestRace);
|
||||
return leaderboardDTO;
|
||||
}
|
||||
|
||||
|
||||
+10
@@ -21,6 +21,8 @@ public abstract class AbstractLeaderboardDTO implements IsSerializable {
|
||||
public int[] discardThresholds;
|
||||
public RegattaDTO regatta;
|
||||
|
||||
private Long delayToLiveInMillisForLatestRace;
|
||||
|
||||
public AbstractLeaderboardDTO() {
|
||||
races = new ArrayList<RaceColumnDTO>();
|
||||
}
|
||||
@@ -324,4 +326,12 @@ public abstract class AbstractLeaderboardDTO implements IsSerializable {
|
||||
return competitorDisplayNames.get(competitor) != null;
|
||||
}
|
||||
|
||||
|
||||
public Long getDelayToLiveInMillisForLatestRace() {
|
||||
return delayToLiveInMillisForLatestRace;
|
||||
}
|
||||
|
||||
public void setDelayToLiveInMillisForLatestRace(Long delayToLiveInMillisForLatestRace) {
|
||||
this.delayToLiveInMillisForLatestRace = delayToLiveInMillisForLatestRace;
|
||||
}
|
||||
}
|
||||
+1
-2
@@ -26,7 +26,7 @@ public class LeaderboardDTO extends AbstractLeaderboardDTO implements IsSerializ
|
||||
private Date timePointOfLastCorrectionsValidity;
|
||||
|
||||
private String comment;
|
||||
|
||||
|
||||
LeaderboardDTO() {} // for serialization
|
||||
|
||||
public LeaderboardDTO(Date timePointOfLastCorrectionsValidity, String comment) {
|
||||
@@ -76,5 +76,4 @@ public class LeaderboardDTO extends AbstractLeaderboardDTO implements IsSerializ
|
||||
return super.equals(obj) && ((competitors == null) ?
|
||||
(((LeaderboardDTO) competitors) != null) ? false : (!competitors.equals(((LeaderboardDTO) obj).competitors)) ? false : true : true);
|
||||
}
|
||||
|
||||
}
|
||||
-10
@@ -17,13 +17,11 @@ public class RaceColumnDTO extends NamedDTO implements IsSerializable {
|
||||
private List<FleetDTO> fleets;
|
||||
private Map<FleetDTO, RegattaAndRaceIdentifier> trackedRaceIdentifiersPerFleet;
|
||||
private Map<FleetDTO, StrippedRaceDTO> racesPerFleet;
|
||||
private Map<FleetDTO, Long> delayToLiveInMillisPerFleet;
|
||||
|
||||
public RaceColumnDTO() {
|
||||
trackedRaceIdentifiersPerFleet = new HashMap<FleetDTO, RegattaAndRaceIdentifier>();
|
||||
racesPerFleet = new HashMap<FleetDTO, StrippedRaceDTO>();
|
||||
fleets = new ArrayList<FleetDTO>();
|
||||
delayToLiveInMillisPerFleet = new HashMap<FleetDTO, Long>();
|
||||
}
|
||||
|
||||
public String getRaceColumnName() {
|
||||
@@ -182,12 +180,4 @@ public class RaceColumnDTO extends NamedDTO implements IsSerializable {
|
||||
public void addFleet(FleetDTO fleet) {
|
||||
fleets.add(fleet);
|
||||
}
|
||||
|
||||
public long getDelayToLiveInMillis(FleetDTO fleet) {
|
||||
return delayToLiveInMillisPerFleet.get(fleet);
|
||||
}
|
||||
|
||||
public void setDelayToLiveInMillis(FleetDTO fleet, long delayToLiveInMillis) {
|
||||
this.delayToLiveInMillisPerFleet.put(fleet, delayToLiveInMillis);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user