Replaced duration of tracks by start and end time in REST API

This commit is contained in:
Vladislav Chumak committed 2018-04-25 22:52:42 +02:00
1 parent c42539d4ec
commit 2bbf2e1291
1 file changed
+15 -11
@@ -8,6 +8,7 @@ import com.sap.sailing.domain.common.tracking.GPSFixMoving;
import com.sap.sailing.domain.maneuverdetection.CompleteManeuverCurveWithEstimationData;
import com.sap.sailing.domain.maneuverdetection.ManeuverDetector;
import com.sap.sailing.domain.maneuverdetection.impl.ManeuverDetectorImpl;
import com.sap.sailing.domain.maneuverdetection.impl.TrackTimeInfo;
import com.sap.sailing.domain.tracking.CompleteManeuverCurve;
import com.sap.sailing.domain.tracking.GPSFixTrack;
import com.sap.sailing.domain.tracking.Maneuver;
@@ -25,7 +26,8 @@ public class CompleteManeuverCurvesWithEstimationDataJsonSerializer extends Abst
public static final String COMPETITOR_NAME = "competitorName";
public static final String AVG_INTERVAL_BETWEEN_FIXES_IN_SECONDS = "avgIntervalBetweenFixesInSeconds";
public static final String DISTANCE_TRAVELLED_IN_METERS = "distanceTravelledInMeters";
public static final String DURATION_IN_SECONDS = "durationInSeconds";
public static final String START_TIME_POINT = "startUnixTime";
public static final String END_TIME_POINT = "endUnixTime";
private final BoatClassJsonSerializer boatClassJsonSerializer;
private final CompleteManeuverCurveWithEstimationDataJsonSerializer maneuverWithEstimationDataJsonSerializer;
@@ -57,23 +59,25 @@ public class CompleteManeuverCurvesWithEstimationDataJsonSerializer extends Abst
Duration averageIntervalBetweenFixes = trackedRace.getTrack(competitor).getAverageIntervalBetweenFixes();
forCompetitorJson.put(AVG_INTERVAL_BETWEEN_FIXES_IN_SECONDS,
averageIntervalBetweenFixes == null ? 0 : averageIntervalBetweenFixes.asSeconds());
GPSFixTrack<Competitor,GPSFixMoving> track = trackedRace.getTrack(competitor);
GPSFixTrack<Competitor, GPSFixMoving> track = trackedRace.getTrack(competitor);
Double distanceTravelledInMeters = null;
Double durationInSeconds = null;
GPSFixMoving firstRawFix = track.getFirstRawFix();
GPSFixMoving lastRawFix = track.getLastRawFix();
if(firstRawFix != null && lastRawFix != null) {
durationInSeconds = firstRawFix.getTimePoint().until(lastRawFix.getTimePoint()).asSeconds();
distanceTravelledInMeters = track.getDistanceTraveled(firstRawFix.getTimePoint(), lastRawFix.getTimePoint()).getMeters();
ManeuverDetectorImpl maneuverDetector = new ManeuverDetectorImpl(trackedRace, competitor);
TrackTimeInfo trackTimeInfo = maneuverDetector.getTrackTimeInfo();
if (trackTimeInfo.getTrackStartTimePoint() != null && trackTimeInfo.getTrackEndTimePoint() != null) {
distanceTravelledInMeters = track.getDistanceTraveled(trackTimeInfo.getTrackStartTimePoint(),
trackTimeInfo.getTrackEndTimePoint()).getMeters();
}
forCompetitorJson.put(DISTANCE_TRAVELLED_IN_METERS, distanceTravelledInMeters);
forCompetitorJson.put(DURATION_IN_SECONDS, durationInSeconds);
forCompetitorJson.put(START_TIME_POINT, trackTimeInfo.getTrackStartTimePoint() == null ? null
: trackTimeInfo.getTrackStartTimePoint().asMillis());
forCompetitorJson.put(END_TIME_POINT, trackTimeInfo.getTrackEndTimePoint() == null ? null
: trackTimeInfo.getTrackEndTimePoint().asMillis());
}
return result;
}
private Iterable<CompleteManeuverCurveWithEstimationData> getCompleteManeuverCurvesWithEstimationData(TrackedRace trackedRace,
Competitor competitor) {
private Iterable<CompleteManeuverCurveWithEstimationData> getCompleteManeuverCurvesWithEstimationData(
TrackedRace trackedRace, Competitor competitor) {
Iterable<Maneuver> maneuvers = trackedRace.getManeuvers(competitor, false);
ManeuverDetector maneuverDetector = new ManeuverDetectorImpl(trackedRace, competitor);
Iterable<CompleteManeuverCurveWithEstimationData> maneuversWithEstimationData = null;