By default let a leaderboard use the delay to live of the latest tracked race associated with it

This commit is contained in:
Axel Uhl committed 2012-07-21 22:09:32 +02:00
1 parent e6c4982c41
commit 9cbb07ab4b
5 files changed
+26 -33

No files matched your search

@@ -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());
}
}
@@ -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;
}
@@ -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;
}
}
@@ -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);
}
}
@@ -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);
}
}