mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-20 11:10:00 +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.
|
* explicit setting changes} were performed, automatically adjusts the delay accordingly.
|
||||||
*/
|
*/
|
||||||
private void adjustDelayToLive() {
|
private void adjustDelayToLive() {
|
||||||
if (!settingsUpdatedExplicitly) {
|
if (!settingsUpdatedExplicitly && leaderboard.getDelayToLiveInMillisForLatestRace() != null) {
|
||||||
long latestNonNullDelayToLiveInMillis = 0; // if we don't fine anything, use zero delay ("now")
|
setDelayInMilliseconds(leaderboard.getDelayToLiveInMillisForLatestRace());
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+13
-6
@@ -426,6 +426,8 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
|
|||||||
result.competitors = new ArrayList<CompetitorDTO>();
|
result.competitors = new ArrayList<CompetitorDTO>();
|
||||||
result.name = leaderboard.getName();
|
result.name = leaderboard.getName();
|
||||||
result.competitorDisplayNames = new HashMap<CompetitorDTO, String>();
|
result.competitorDisplayNames = new HashMap<CompetitorDTO, String>();
|
||||||
|
TimePoint startOfLatestRace = null;
|
||||||
|
Long delayToLiveInMillisForLatestRace = null;
|
||||||
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
|
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
|
||||||
RaceColumnDTO raceColumnDTO = result.createEmptyRaceColumn(raceColumn.getName(), raceColumn.isMedalRace());
|
RaceColumnDTO raceColumnDTO = result.createEmptyRaceColumn(raceColumn.getName(), raceColumn.isMedalRace());
|
||||||
for (Fleet fleet : raceColumn.getFleets()) {
|
for (Fleet fleet : raceColumn.getFleets()) {
|
||||||
@@ -433,7 +435,9 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
|
|||||||
TrackedRace trackedRace = raceColumn.getTrackedRace(fleet);
|
TrackedRace trackedRace = raceColumn.getTrackedRace(fleet);
|
||||||
final FleetDTO fleetDTO = createFleetDTO(fleet);
|
final FleetDTO fleetDTO = createFleetDTO(fleet);
|
||||||
if (trackedRace != null) {
|
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()
|
raceIdentifier = new RegattaNameAndRaceName(trackedRace.getTrackedRegatta().getRegatta()
|
||||||
.getName(), trackedRace.getRace().getName());
|
.getName(), trackedRace.getRace().getName());
|
||||||
}
|
}
|
||||||
@@ -442,6 +446,7 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
|
|||||||
}
|
}
|
||||||
result.setCompetitorsFromBestToWorst(raceColumnDTO, getCompetitorDTOList(leaderboard.getCompetitorsFromBestToWorst(raceColumn, timePoint)));
|
result.setCompetitorsFromBestToWorst(raceColumnDTO, getCompetitorDTOList(leaderboard.getCompetitorsFromBestToWorst(raceColumn, timePoint)));
|
||||||
}
|
}
|
||||||
|
result.setDelayToLiveInMillisForLatestRace(delayToLiveInMillisForLatestRace);
|
||||||
result.rows = new HashMap<CompetitorDTO, LeaderboardRowDTO>();
|
result.rows = new HashMap<CompetitorDTO, LeaderboardRowDTO>();
|
||||||
result.hasCarriedPoints = leaderboard.hasCarriedPoints();
|
result.hasCarriedPoints = leaderboard.hasCarriedPoints();
|
||||||
result.discardThresholds = leaderboard.getResultDiscardingRule().getDiscardIndexResultsStartingWithHowManyRaces();
|
result.discardThresholds = leaderboard.getResultDiscardingRule().getDiscardIndexResultsStartingWithHowManyRaces();
|
||||||
@@ -1792,16 +1797,19 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
|
|||||||
*/
|
*/
|
||||||
private StrippedLeaderboardDTO createStrippedLeaderboardDTO(Leaderboard leaderboard, boolean withGeoLocationData) {
|
private StrippedLeaderboardDTO createStrippedLeaderboardDTO(Leaderboard leaderboard, boolean withGeoLocationData) {
|
||||||
StrippedLeaderboardDTO leaderboardDTO = new StrippedLeaderboardDTO();
|
StrippedLeaderboardDTO leaderboardDTO = new StrippedLeaderboardDTO();
|
||||||
|
TimePoint startOfLatestRace = null;
|
||||||
|
Long delayToLiveInMillisForLatestRace = null;
|
||||||
leaderboardDTO.name = leaderboard.getName();
|
leaderboardDTO.name = leaderboard.getName();
|
||||||
leaderboardDTO.competitorDisplayNames = new HashMap<CompetitorDTO, String>();
|
leaderboardDTO.competitorDisplayNames = new HashMap<CompetitorDTO, String>();
|
||||||
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
|
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
|
||||||
StrippedRaceDTO race = null;
|
StrippedRaceDTO race = null;
|
||||||
for (Fleet fleet : raceColumn.getFleets()) {
|
for (Fleet fleet : raceColumn.getFleets()) {
|
||||||
RegattaAndRaceIdentifier raceIdentifier = null;
|
RegattaAndRaceIdentifier raceIdentifier = null;
|
||||||
long delayToLiveInMillis = 0;
|
|
||||||
if (raceColumn.getTrackedRace(fleet) != null) {
|
if (raceColumn.getTrackedRace(fleet) != null) {
|
||||||
TrackedRace trackedRace = raceColumn.getTrackedRace(fleet);
|
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());
|
raceIdentifier = new RegattaNameAndRaceName(trackedRace.getTrackedRegatta().getRegatta().getName(), trackedRace.getRace().getName());
|
||||||
// Optional: Getting the places of the race
|
// Optional: Getting the places of the race
|
||||||
PlacemarkOrderDTO racePlaces = withGeoLocationData ? getRacePlaces(trackedRace) : null;
|
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();
|
race.endOfRace = trackedRace.getEndOfRace() == null ? null : trackedRace.getEndOfRace().asDate();
|
||||||
}
|
}
|
||||||
final FleetDTO fleetDTO = createFleetDTO(fleet);
|
final FleetDTO fleetDTO = createFleetDTO(fleet);
|
||||||
RaceColumnDTO raceColumnDTO = leaderboardDTO.addRace(raceColumn.getName(), fleetDTO,
|
leaderboardDTO.addRace(raceColumn.getName(), fleetDTO, raceColumn.isMedalRace(), raceIdentifier, race);
|
||||||
raceColumn.isMedalRace(), raceIdentifier, race);
|
|
||||||
raceColumnDTO.setDelayToLiveInMillis(fleetDTO, delayToLiveInMillis);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
leaderboardDTO.hasCarriedPoints = leaderboard.hasCarriedPoints();
|
leaderboardDTO.hasCarriedPoints = leaderboard.hasCarriedPoints();
|
||||||
leaderboardDTO.discardThresholds = leaderboard.getResultDiscardingRule().getDiscardIndexResultsStartingWithHowManyRaces();
|
leaderboardDTO.discardThresholds = leaderboard.getResultDiscardingRule().getDiscardIndexResultsStartingWithHowManyRaces();
|
||||||
|
leaderboardDTO.setDelayToLiveInMillisForLatestRace(delayToLiveInMillisForLatestRace);
|
||||||
return leaderboardDTO;
|
return leaderboardDTO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+10
@@ -21,6 +21,8 @@ public abstract class AbstractLeaderboardDTO implements IsSerializable {
|
|||||||
public int[] discardThresholds;
|
public int[] discardThresholds;
|
||||||
public RegattaDTO regatta;
|
public RegattaDTO regatta;
|
||||||
|
|
||||||
|
private Long delayToLiveInMillisForLatestRace;
|
||||||
|
|
||||||
public AbstractLeaderboardDTO() {
|
public AbstractLeaderboardDTO() {
|
||||||
races = new ArrayList<RaceColumnDTO>();
|
races = new ArrayList<RaceColumnDTO>();
|
||||||
}
|
}
|
||||||
@@ -324,4 +326,12 @@ public abstract class AbstractLeaderboardDTO implements IsSerializable {
|
|||||||
return competitorDisplayNames.get(competitor) != null;
|
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 Date timePointOfLastCorrectionsValidity;
|
||||||
|
|
||||||
private String comment;
|
private String comment;
|
||||||
|
|
||||||
LeaderboardDTO() {} // for serialization
|
LeaderboardDTO() {} // for serialization
|
||||||
|
|
||||||
public LeaderboardDTO(Date timePointOfLastCorrectionsValidity, String comment) {
|
public LeaderboardDTO(Date timePointOfLastCorrectionsValidity, String comment) {
|
||||||
@@ -76,5 +76,4 @@ public class LeaderboardDTO extends AbstractLeaderboardDTO implements IsSerializ
|
|||||||
return super.equals(obj) && ((competitors == null) ?
|
return super.equals(obj) && ((competitors == null) ?
|
||||||
(((LeaderboardDTO) competitors) != null) ? false : (!competitors.equals(((LeaderboardDTO) obj).competitors)) ? false : true : true);
|
(((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 List<FleetDTO> fleets;
|
||||||
private Map<FleetDTO, RegattaAndRaceIdentifier> trackedRaceIdentifiersPerFleet;
|
private Map<FleetDTO, RegattaAndRaceIdentifier> trackedRaceIdentifiersPerFleet;
|
||||||
private Map<FleetDTO, StrippedRaceDTO> racesPerFleet;
|
private Map<FleetDTO, StrippedRaceDTO> racesPerFleet;
|
||||||
private Map<FleetDTO, Long> delayToLiveInMillisPerFleet;
|
|
||||||
|
|
||||||
public RaceColumnDTO() {
|
public RaceColumnDTO() {
|
||||||
trackedRaceIdentifiersPerFleet = new HashMap<FleetDTO, RegattaAndRaceIdentifier>();
|
trackedRaceIdentifiersPerFleet = new HashMap<FleetDTO, RegattaAndRaceIdentifier>();
|
||||||
racesPerFleet = new HashMap<FleetDTO, StrippedRaceDTO>();
|
racesPerFleet = new HashMap<FleetDTO, StrippedRaceDTO>();
|
||||||
fleets = new ArrayList<FleetDTO>();
|
fleets = new ArrayList<FleetDTO>();
|
||||||
delayToLiveInMillisPerFleet = new HashMap<FleetDTO, Long>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getRaceColumnName() {
|
public String getRaceColumnName() {
|
||||||
@@ -182,12 +180,4 @@ public class RaceColumnDTO extends NamedDTO implements IsSerializable {
|
|||||||
public void addFleet(FleetDTO fleet) {
|
public void addFleet(FleetDTO fleet) {
|
||||||
fleets.add(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