mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-04 03:13:49 +00:00
made live markers on RaceColumnDTO fleet specific
This commit is contained in:
1 parent
024ca01e4a
commit
39a55d8add
4 files changed
+24
-27
No files matched your search
+8
-15
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+4
-2
@@ -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;
|
||||
|
||||
+10
-8
@@ -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);
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user