From 2bbf2e129141e32c239d93bf9a3e23b204d53633 Mon Sep 17 00:00:00 2001 From: Vladislav Chumak Date: Wed, 25 Apr 2018 22:52:42 +0200 Subject: [PATCH] Replaced duration of tracks by start and end time in REST API --- ...urvesWithEstimationDataJsonSerializer.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/CompleteManeuverCurvesWithEstimationDataJsonSerializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/CompleteManeuverCurvesWithEstimationDataJsonSerializer.java index 84b357d4537..4081db54951 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/CompleteManeuverCurvesWithEstimationDataJsonSerializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/serialization/impl/CompleteManeuverCurvesWithEstimationDataJsonSerializer.java @@ -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 track = trackedRace.getTrack(competitor); + GPSFixTrack 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 getCompleteManeuverCurvesWithEstimationData(TrackedRace trackedRace, - Competitor competitor) { + private Iterable getCompleteManeuverCurvesWithEstimationData( + TrackedRace trackedRace, Competitor competitor) { Iterable maneuvers = trackedRace.getManeuvers(competitor, false); ManeuverDetector maneuverDetector = new ManeuverDetectorImpl(trackedRace, competitor); Iterable maneuversWithEstimationData = null;