added code to fill timePointOfLastFix in LeaderboardEntryDTO

This commit is contained in:
Axel Uhl committed 2013-07-10 13:50:19 +02:00
1 parent 4c33c67cca
commit 5580c2a99c
1 file changed
+23
@@ -6,6 +6,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -72,6 +73,7 @@ import com.sap.sailing.domain.racelog.RaceLogEvent;
import com.sap.sailing.domain.racelog.RaceLogIdentifier;
import com.sap.sailing.domain.tracking.GPSFix;
import com.sap.sailing.domain.tracking.GPSFixMoving;
import com.sap.sailing.domain.tracking.GPSFixTrack;
import com.sap.sailing.domain.tracking.Maneuver;
import com.sap.sailing.domain.tracking.MarkPassing;
import com.sap.sailing.domain.tracking.MarkPassingManeuver;
@@ -1193,6 +1195,7 @@ public abstract class AbstractSimpleLeaderboardImpl implements Leaderboard, Race
entryDTO.totalPoints = entry.getTotalPoints();
entryDTO.reasonForMaxPoints = entry.getMaxPointsReason();
entryDTO.discarded = entry.isDiscarded();
entryDTO.timePointOfLastPositionFix = getTimePointOfLastFix(competitor, trackedRace);
if (addLegDetails && trackedRace != null) {
try {
RaceDetails raceDetails = getRaceDetails(trackedRace, competitor, timePoint, waitForLatestAnalyses, legRanksCache);
@@ -1245,6 +1248,26 @@ public abstract class AbstractSimpleLeaderboardImpl implements Leaderboard, Race
return entryDTO;
}
/**
* Determines the time point of the last raw fix (with outliers not removed) for <code>competitor</code> in
* <code>trackedRace</code>. If the competitor's track is <code>null</code> or empty, <code>null</code> is returned.
*/
private Date getTimePointOfLastFix(Competitor competitor, TrackedRace trackedRace) {
final Date timePointOfLastPositionFix;
GPSFixTrack<Competitor, GPSFixMoving> track = trackedRace.getTrack(competitor);
if (track == null) {
timePointOfLastPositionFix = null;
} else {
GPSFixMoving lastFix = track.getLastRawFix();
if (lastFix == null) {
timePointOfLastPositionFix = null;
} else {
timePointOfLastPositionFix = lastFix.getTimePoint().asDate();
}
}
return timePointOfLastPositionFix;
}
private static class RaceDetails {
private final List<LegEntryDTO> legDetails;
private final Distance windwardDistanceToOverallLeader;