Merge remote-tracking branch 'origin/master'

This commit is contained in:
fmittag committed 2012-06-10 18:24:47 +02:00
commit 2670266e70
4 files changed
+35 -7

No files matched your search

@@ -48,6 +48,12 @@ public interface Leaderboard extends Named {
* Tells if the net points have been corrected by a {@link ScoreCorrection}
*/
boolean isNetPointsCorrected();
/**
* @return <code>null</code>, if the competitor's fleet in the race column cannot be determined, the
* {@link Fleet} otherwise
*/
Fleet getFleet();
}
/**
@@ -77,7 +77,10 @@ public abstract class AbstractLeaderboardImpl implements Leaderboard, RaceColumn
private final int totalPoints;
private final MaxPointsReason maxPointsReason;
private final boolean discarded;
private EntryImpl(int trackedPoints, int netPoints, boolean isNetPointsCorrected, int totalPoints, MaxPointsReason maxPointsReason, boolean discarded) {
private final Fleet fleet;
private EntryImpl(int trackedPoints, int netPoints, boolean isNetPointsCorrected, int totalPoints,
MaxPointsReason maxPointsReason, boolean discarded, Fleet fleet) {
super();
this.trackedPoints = trackedPoints;
this.netPoints = netPoints;
@@ -85,6 +88,7 @@ public abstract class AbstractLeaderboardImpl implements Leaderboard, RaceColumn
this.totalPoints = totalPoints;
this.maxPointsReason = maxPointsReason;
this.discarded = discarded;
this.fleet = fleet;
}
@Override
public int getTrackedPoints() {
@@ -110,6 +114,10 @@ public abstract class AbstractLeaderboardImpl implements Leaderboard, RaceColumn
public boolean isDiscarded() {
return discarded;
}
@Override
public Fleet getFleet() {
return fleet;
}
}
/**
@@ -286,7 +294,7 @@ public abstract class AbstractLeaderboardImpl implements Leaderboard, RaceColumn
return new EntryImpl(trackedPoints, correctedResults.getCorrectedScore(), correctedResults.isCorrected(),
discarded ? 0
: correctedResults.getCorrectedScore() * (race.isMedalRace() ? MEDAL_RACE_FACTOR : 1),
correctedResults.getMaxPointsReason(), discarded);
correctedResults.getMaxPointsReason(), discarded, race.getFleetOfCompetitor(competitor));
}
@Override
@@ -312,7 +320,8 @@ public abstract class AbstractLeaderboardImpl implements Leaderboard, RaceColumn
boolean discarded = discardedRacesForCompetitor.contains(raceColumn);
Entry entry = new EntryImpl(trackedPoints, correctedResults.getCorrectedScore(),
correctedResults.isCorrected(), discarded ? 0 : correctedResults.getCorrectedScore()
* (raceColumn.isMedalRace() ? 2 : 1), correctedResults.getMaxPointsReason(), discarded);
* (raceColumn.isMedalRace() ? 2 : 1), correctedResults.getMaxPointsReason(), discarded,
raceColumn.getFleetOfCompetitor(competitor));
result.put(new Pair<Competitor, RaceColumn>(competitor, raceColumn), entry);
}
}
@@ -271,7 +271,7 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
throws NoWindException {
long startOfRequestHandling = System.currentTimeMillis();
LeaderboardDTO result = null;
Leaderboard leaderboard = getService().getLeaderboardByName(leaderboardName);
final Leaderboard leaderboard = getService().getLeaderboardByName(leaderboardName);
if (leaderboard != null) {
result = new LeaderboardDTO();
final TimePoint timePoint = new MillisecondsTimePoint(date);
@@ -304,12 +304,12 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
result.competitors.add(competitorDTO);
Map<String, Future<LeaderboardEntryDTO>> futuresForColumnName = new HashMap<String, Future<LeaderboardEntryDTO>>();
for (final RaceColumn raceColumn : leaderboard.getRaceColumns()) {
final Entry entry = leaderboard.getEntry(competitor, raceColumn, timePoint);
RunnableFuture<LeaderboardEntryDTO> future = new FutureTask<LeaderboardEntryDTO>(new Callable<LeaderboardEntryDTO>() {
@Override
public LeaderboardEntryDTO call() {
try {
return getLeaderboardEntryDTO(entry, raceColumn.getTrackedRace(competitor), competitor, timePoint,
Entry entry = leaderboard.getEntry(competitor, raceColumn, timePoint);
return getLeaderboardEntryDTO(entry, raceColumn.getTrackedRace(competitor), competitor, timePoint,
namesOfRaceColumnsForWhichToLoadLegDetails != null
&& namesOfRaceColumnsForWhichToLoadLegDetails.contains(raceColumn.getName()));
} catch (NoWindException e) {
@@ -389,6 +389,8 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
entryDTO.legDetails.add(legEntry);
}
}
final Fleet fleet = entry.getFleet();
entryDTO.fleet = fleet == null ? null : createFleetDTO(fleet);
final Distance windwardDistanceToOverallLeader = trackedRace == null ? null : trackedRace.getWindwardDistanceToOverallLeader(competitor, timePoint);
entryDTO.windwardDistanceToOverallLeaderInMeters = windwardDistanceToOverallLeader == null ? null : windwardDistanceToOverallLeader.getMeters();
final Distance averageCrossTrackError = trackedRace == null ? null : trackedRace.getAverageCrossTrackError(competitor, timePoint);
@@ -495,7 +497,7 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
private SeriesDTO createSeriesDTO(Series series) {
List<FleetDTO> fleets = new ArrayList<FleetDTO>();
for (Fleet fleet : series.getFleets()) {
fleets.add(new FleetDTO(fleet.getName(), fleet.getOrdering(), fleet.getColor()));
fleets.add(createFleetDTO(fleet));
}
List<RaceColumnDTO> raceColumns = new ArrayList<RaceColumnDTO>();
for (RaceColumnInSeries raceColumn : series.getRaceColumns()) {
@@ -508,6 +510,10 @@ public class SailingServiceImpl extends RemoteServiceServlet implements SailingS
return result;
}
private FleetDTO createFleetDTO(Fleet fleet) {
return new FleetDTO(fleet.getName(), fleet.getOrdering(), fleet.getColor());
}
private List<RaceDTO> getRaceDTOs(Regatta regatta) {
List<RaceDTO> result = new ArrayList<RaceDTO>();
for (RaceDefinition r : regatta.getAllRaces()) {
@@ -48,6 +48,13 @@ public class LeaderboardEntryDTO implements IsSerializable {
*/
public List<LegEntryDTO> legDetails;
/**
* <code>null</code>, if the fleet couldn't be determined, e.g., because the tracked race isn't known and therefore
* the link to the fleet is not known; otherwise the description of the fleet in which the competitor scored this
* entry
*/
public FleetDTO fleet;
public LeaderboardEntryDTO() { }
@Override