made live markers on RaceColumnDTO fleet specific

This commit is contained in:
Axel Uhl committed 2012-12-03 18:06:59 +01:00
1 parent 024ca01e4a
commit 39a55d8add
4 files changed
+24 -27

No files matched your search

@@ -462,8 +462,8 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
for (RaceColumn raceColumn : leaderboard.getRaceColumns()) {
RaceColumnDTO raceColumnDTO = result.createEmptyRaceColumn(raceColumn.getName(), raceColumn.isMedalRace(),
leaderboard.getScoringScheme().isValidInTotalScore(leaderboard, raceColumn, timePoint));
TimePoint latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive = null;
for (Fleet fleet : raceColumn.getFleets()) {
TimePoint latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive = null;
RegattaAndRaceIdentifier raceIdentifier = null;
TrackedRace trackedRace = raceColumn.getTrackedRace(fleet);
final FleetDTO fleetDTO = convertToFleetDTO(fleet);
@@ -476,19 +476,16 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
if (endOfRace != null) {
liveTimePointForTrackedRace = endOfRace;
}
if (latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive == null ||
liveTimePointForTrackedRace.after(latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive)) {
latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive = liveTimePointForTrackedRace;
}
latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive = liveTimePointForTrackedRace;
}
}
// Note: the RaceColumnDTO won't be created by the following addRace call because it has been created
// above by the result.createEmptyRaceColumn call
result.addRace(raceColumn.getName(), raceColumn.getExplicitFactor(), fleetDTO,
raceColumn.isMedalRace(), raceIdentifier, /* StrippedRaceDTO */ null);
}
if (latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive != null) {
raceColumnDTO.setWhenLastTrackedRaceWasLive(latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive.asDate());
if (latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive != null) {
raceColumnDTO.setWhenLastTrackedRaceWasLive(fleetDTO, latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive.asDate());
}
}
result.setCompetitorsFromBestToWorst(raceColumnDTO, getCompetitorDTOList(leaderboard.getCompetitorsFromBestToWorst(raceColumn, timePoint)));
}
@@ -1943,8 +1940,8 @@ 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()) {
TimePoint latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive = null;
RaceDTO raceDTO = null;
RegattaAndRaceIdentifier raceIdentifier = null;
TrackedRace trackedRace = raceColumn.getTrackedRace(fleet);
@@ -1970,18 +1967,14 @@ public class SailingServiceImpl extends ProxiedRemoteServiceServlet implements S
if (endOfRace != null) {
liveTimePointForTrackedRace = endOfRace;
}
if (latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive == null
|| liveTimePointForTrackedRace
.after(latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive)) {
latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive = liveTimePointForTrackedRace;
}
latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive = liveTimePointForTrackedRace;
}
}
final FleetDTO fleetDTO = convertToFleetDTO(fleet);
RaceColumnDTO raceColumnDTO = leaderboardDTO.addRace(raceColumn.getName(), raceColumn.getExplicitFactor(), fleetDTO,
raceColumn.isMedalRace(), raceIdentifier, raceDTO);
if (latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive != null) {
raceColumnDTO.setWhenLastTrackedRaceWasLive(latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive.asDate());
raceColumnDTO.setWhenLastTrackedRaceWasLive(fleetDTO, latestTimePointAfterQueryTimePointWhenATrackedRaceWasLive.asDate());
}
}
}
@@ -263,8 +263,10 @@ public abstract class AbstractLeaderboardDTO implements IsSerializable {
*/
public boolean containsLiveRace() {
for (RaceColumnDTO race : getRaceList()) {
if (race.isLive()) {
return true;
for (FleetDTO fleet : race.getFleets()) {
if (race.isLive(fleet)) {
return true;
}
}
}
return false;
@@ -34,7 +34,7 @@ public class RaceColumnDTO extends NamedDTO implements IsSerializable {
* If no tracked race is attached to this column or none of the tracked races attached has started at the query time
* point, this field is <code>null</code>.
*/
private Date whenLastTrackedRaceWasLive;
private Map<FleetDTO, Date> whenLastTrackedRaceWasLiveByFleet;
RaceColumnDTO() {} // for GWT serialization
@@ -43,6 +43,7 @@ public class RaceColumnDTO extends NamedDTO implements IsSerializable {
trackedRaceIdentifiersPerFleet = new HashMap<FleetDTO, RegattaAndRaceIdentifier>();
racesPerFleet = new HashMap<FleetDTO, RaceDTO>();
fleets = new ArrayList<FleetDTO>();
whenLastTrackedRaceWasLiveByFleet = new HashMap<FleetDTO, Date>();
}
public boolean isValidInTotalScore() {
@@ -142,13 +143,14 @@ public class RaceColumnDTO extends NamedDTO implements IsSerializable {
}
/**
* @param fleet TODO
* @return <code>true</code> if the startOfTracking is after the current date and there's no end of the race
*/
public boolean isLive() {
public boolean isLive(FleetDTO fleet) {
boolean result = false;
final long now = System.currentTimeMillis();
if (getWhenLastTrackedRaceWasLive() != null
&& getWhenLastTrackedRaceWasLive().getTime() > now - IS_LIVE_GRACE_PERIOD_IN_MILLIS) {
if (getWhenLastTrackedRaceWasLive(fleet) != null
&& getWhenLastTrackedRaceWasLive(fleet).getTime() > now - IS_LIVE_GRACE_PERIOD_IN_MILLIS) {
result = true;
}
return result;
@@ -208,11 +210,11 @@ public class RaceColumnDTO extends NamedDTO implements IsSerializable {
fleets.add(fleet);
}
private Date getWhenLastTrackedRaceWasLive() {
return whenLastTrackedRaceWasLive;
private Date getWhenLastTrackedRaceWasLive(FleetDTO fleet) {
return whenLastTrackedRaceWasLiveByFleet.get(fleet);
}
public void setWhenLastTrackedRaceWasLive(Date whenLastTrackedRaceWasLive) {
this.whenLastTrackedRaceWasLive = whenLastTrackedRaceWasLive;
public void setWhenLastTrackedRaceWasLive(FleetDTO fleet, Date whenLastTrackedRaceWasLive) {
this.whenLastTrackedRaceWasLiveByFleet.put(fleet, whenLastTrackedRaceWasLive);
}
}
@@ -371,7 +371,7 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
for (RaceColumnDTO raceColumn : raceColumnsPerDay) {
String raceColumnName = raceColumn.getRaceColumnName();
RaceDTO race = raceColumn.getRace(defaultFleet);
renderRaceLink(leaderboard.name, race, raceColumn.isLive(), raceColumnName, b);
renderRaceLink(leaderboard.name, race, raceColumn.isLive(defaultFleet), raceColumnName, b);
}
b.appendHtmlConstant("</div>");
@@ -424,7 +424,7 @@ public class LeaderboardGroupPanel extends FormPanel implements HasWelcomeWidget
for (RaceColumnDTO raceColumn : raceColumns) {
String raceColumnName = raceColumn.getRaceColumnName();
RaceDTO race = raceColumn.getRace(fleet);
renderRaceLink(leaderboardName, race, raceColumn.isLive(), raceColumnName, b);
renderRaceLink(leaderboardName, race, raceColumn.isLive(fleet), raceColumnName, b);
}
}