diff --git a/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/EstimationDataSerializationDeserializationTest.java b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/EstimationDataSerializationDeserializationTest.java new file mode 100644 index 00000000000..59dbd3b994a --- /dev/null +++ b/java/com.sap.sailing.server.gateway.serialization.test/src/com/sap/sailing/server/gateway/serialization/test/EstimationDataSerializationDeserializationTest.java @@ -0,0 +1,359 @@ +package com.sap.sailing.server.gateway.serialization.test; + +import static org.junit.Assert.assertEquals; + +import java.text.ParseException; +import java.text.SimpleDateFormat; + +import org.json.simple.JSONObject; +import org.junit.Test; + +import com.sap.sailing.domain.common.Bearing; +import com.sap.sailing.domain.common.Distance; +import com.sap.sailing.domain.common.Speed; +import com.sap.sailing.domain.common.SpeedWithBearing; +import com.sap.sailing.domain.common.Wind; +import com.sap.sailing.domain.common.impl.DegreeBearingImpl; +import com.sap.sailing.domain.common.impl.DegreePosition; +import com.sap.sailing.domain.common.impl.KnotSpeedImpl; +import com.sap.sailing.domain.common.impl.KnotSpeedWithBearingImpl; +import com.sap.sailing.domain.common.impl.MeterDistance; +import com.sap.sailing.domain.common.impl.WindImpl; +import com.sap.sailing.domain.maneuverdetection.CompleteManeuverCurveWithEstimationData; +import com.sap.sailing.domain.maneuverdetection.ManeuverMainCurveWithEstimationData; +import com.sap.sailing.domain.maneuverdetection.impl.CompleteManeuverCurveWithEstimationDataImpl; +import com.sap.sailing.domain.maneuverdetection.impl.ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataImpl; +import com.sap.sailing.domain.maneuverdetection.impl.ManeuverMainCurveWithEstimationDataImpl; +import com.sap.sailing.server.gateway.deserialization.JsonDeserializationException; +import com.sap.sailing.server.gateway.deserialization.impl.CompleteManeuverCurveWithEstimationDataJsonDeserializer; +import com.sap.sailing.server.gateway.deserialization.impl.ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonDeserializer; +import com.sap.sailing.server.gateway.deserialization.impl.ManeuverMainCurveWithEstimationDataJsonDeserializer; +import com.sap.sailing.server.gateway.deserialization.impl.PositionJsonDeserializer; +import com.sap.sailing.server.gateway.deserialization.impl.WindJsonDeserializer; +import com.sap.sailing.server.gateway.serialization.impl.CompleteManeuverCurveWithEstimationDataJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.ManeuverMainCurveWithEstimationDataJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.PositionJsonSerializer; +import com.sap.sailing.server.gateway.serialization.impl.WindJsonSerializer; +import com.sap.sse.common.Duration; +import com.sap.sse.common.impl.MillisecondsDurationImpl; +import com.sap.sse.common.impl.MillisecondsTimePoint; + +/** + * + * @author Vladislav Chumak (D069712) + * + */ +public class EstimationDataSerializationDeserializationTest { + + private static final double DELTA = 0.000001; + protected SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/yyyy-HH:mm:ss"); + + @Test + public void testCompleteManeuverCurveWithEstimationData() throws ParseException, JsonDeserializationException { + MillisecondsTimePoint timePointMainCurveBefore = new MillisecondsTimePoint( + dateFormat.parse("06/23/2011-15:28:24")); + MillisecondsTimePoint timePointMainCurveAfter = new MillisecondsTimePoint( + dateFormat.parse("06/23/2011-15:28:34")); + SpeedWithBearing speedWithBearingMainCurveBefore = new KnotSpeedWithBearingImpl(5, new DegreeBearingImpl(30)); + SpeedWithBearing speedWithBearingMainCurveAfter = new KnotSpeedWithBearingImpl(5.5, new DegreeBearingImpl(90)); + double directionChangeMainCurveInDegrees = 60; + SpeedWithBearing lowestSpeed = new KnotSpeedWithBearingImpl(3, new DegreeBearingImpl(60.5)); + MillisecondsTimePoint lowestSpeedTimePoint = new MillisecondsTimePoint(dateFormat.parse("06/23/2011-15:28:29")); + SpeedWithBearing highestSpeed = new KnotSpeedWithBearingImpl(6, new DegreeBearingImpl(65)); + MillisecondsTimePoint highestSpeedTimePoint = new MillisecondsTimePoint( + dateFormat.parse("06/23/2011-15:28:32")); + double maxTurningRateInDegreesPerSecond = 11.2043; + double avgTurningRateInDegreesPerSecond = 9; + Bearing courseAtMaxTurningRate = new DegreeBearingImpl(70.2244242); + MillisecondsTimePoint maxTurningRateTimePoint = new MillisecondsTimePoint( + dateFormat.parse("06/23/2011-15:28:33")); + int gpsFixesCountMainCurve = 4; + Distance distanceSailedWithinManeuverMainCurve = new MeterDistance(4.4); + Distance distanceSailedWithinManeuverTowardMiddleAngleProjectionMainCurve = new MeterDistance(3.6); + Distance distanceSailedIfNotManeuveringMainCurve = new MeterDistance(6.4); + Distance distanceSailedTowardMiddleAngleProjectionIfNotManeuveringMainCurve = new MeterDistance(5.7); + ManeuverMainCurveWithEstimationData mainCurve = new ManeuverMainCurveWithEstimationDataImpl( + timePointMainCurveBefore, timePointMainCurveAfter, speedWithBearingMainCurveBefore, + speedWithBearingMainCurveAfter, directionChangeMainCurveInDegrees, lowestSpeed, lowestSpeedTimePoint, + highestSpeed, highestSpeedTimePoint, maxTurningRateTimePoint, maxTurningRateInDegreesPerSecond, + courseAtMaxTurningRate, distanceSailedWithinManeuverMainCurve, + distanceSailedWithinManeuverTowardMiddleAngleProjectionMainCurve, + distanceSailedIfNotManeuveringMainCurve, + distanceSailedTowardMiddleAngleProjectionIfNotManeuveringMainCurve, avgTurningRateInDegreesPerSecond, + gpsFixesCountMainCurve); + + MillisecondsTimePoint timePointBefore = new MillisecondsTimePoint(dateFormat.parse("06/23/2011-15:28:10")); + MillisecondsTimePoint timePointAfter = new MillisecondsTimePoint(dateFormat.parse("06/23/2011-15:28:55")); + SpeedWithBearing speedWithBearingBefore = new KnotSpeedWithBearingImpl(6, new DegreeBearingImpl(20)); + SpeedWithBearing speedWithBearingAfter = new KnotSpeedWithBearingImpl(7.5, new DegreeBearingImpl(101.1)); + double directionChangeInDegrees = 81.1; + Speed maneuverLowestSpeed = new KnotSpeedImpl(2.9); + SpeedWithBearing avgSpeedWithBearingBefore = new KnotSpeedWithBearingImpl(4.999, new DegreeBearingImpl(32.202)); + SpeedWithBearing avgSpeedWithBearingAfter = new KnotSpeedWithBearingImpl(5.3333, new DegreeBearingImpl(90.234)); + Duration durationFromPreviousManeuverEndToManeuverStart = new MillisecondsDurationImpl(10001); + Duration durationFromManeuverEndToNextManeuverStart = new MillisecondsDurationImpl(20000); + int gpsFixesCountFromPreviousManeuverEndToManeuverStart = 2; + int gpsFixesCountFromManeuverEndToNextManeuverStart = 222; + Distance distanceSailedWithinManeuver = new MeterDistance(77.4); + Distance distanceSailedWithinManeuverTowardMiddleAngleProjection = new MeterDistance(66.6); + Distance distanceSailedIfNotManeuvering = new MeterDistance(99.4); + Distance distanceSailedTowardMiddleAngleProjectionIfNotManeuvering = new MeterDistance(88.7); + int gpsFixesCount = 133445; + ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataImpl curve = new ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataImpl( + timePointBefore, timePointAfter, speedWithBearingBefore, speedWithBearingAfter, + directionChangeInDegrees, maneuverLowestSpeed, avgSpeedWithBearingBefore, + durationFromPreviousManeuverEndToManeuverStart, gpsFixesCountFromPreviousManeuverEndToManeuverStart, + avgSpeedWithBearingAfter, durationFromManeuverEndToNextManeuverStart, + gpsFixesCountFromManeuverEndToNextManeuverStart, distanceSailedWithinManeuver, + distanceSailedWithinManeuverTowardMiddleAngleProjection, distanceSailedIfNotManeuvering, + distanceSailedTowardMiddleAngleProjectionIfNotManeuvering, gpsFixesCount); + + MillisecondsTimePoint windTimePoint = new MillisecondsTimePoint(dateFormat.parse("06/23/2011-15:28:25")); + SpeedWithBearing windSpeedWithBearing = new KnotSpeedWithBearingImpl(2, new DegreeBearingImpl(340)); + DegreePosition windPosition = new DegreePosition(54.325246, 10.148556); + Wind wind = new WindImpl(windPosition, windTimePoint, windSpeedWithBearing); + + int jibingCount = 203; + int tackingCount = 12345; + boolean maneuverStartsByRunningAwayFromWind = true; + Bearing relativeBearingToNextMarkBeforeManeuver = new DegreeBearingImpl(202.23); + Bearing relativeBearingToNextMarkAfterManeuver = new DegreeBearingImpl(10.01); + boolean markPassing = true; + + CompleteManeuverCurveWithEstimationData toSerialize = new CompleteManeuverCurveWithEstimationDataImpl(mainCurve, + curve, wind, tackingCount, jibingCount, maneuverStartsByRunningAwayFromWind, + relativeBearingToNextMarkBeforeManeuver, relativeBearingToNextMarkAfterManeuver, markPassing); + CompleteManeuverCurveWithEstimationDataJsonSerializer serializer = new CompleteManeuverCurveWithEstimationDataJsonSerializer( + new ManeuverMainCurveWithEstimationDataJsonSerializer(), + new ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonSerializer(), + new WindJsonSerializer(new PositionJsonSerializer())); + JSONObject json = serializer.serialize(toSerialize); + CompleteManeuverCurveWithEstimationDataJsonDeserializer deserializer = new CompleteManeuverCurveWithEstimationDataJsonDeserializer( + new ManeuverMainCurveWithEstimationDataJsonDeserializer(), + new ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonDeserializer(), + new WindJsonDeserializer(new PositionJsonDeserializer())); + CompleteManeuverCurveWithEstimationData deserialized = deserializer.deserialize(json); + + assertEquals(tackingCount, deserialized.getTackingCount()); + assertEquals(jibingCount, deserialized.getJibingCount()); + assertEquals(maneuverStartsByRunningAwayFromWind, deserialized.isManeuverStartsByRunningAwayFromWind()); + assertEquals(markPassing, deserialized.isMarkPassing()); + assertEquals(relativeBearingToNextMarkBeforeManeuver, + deserialized.getRelativeBearingToNextMarkBeforeManeuver()); + assertEquals(relativeBearingToNextMarkAfterManeuver, deserialized.getRelativeBearingToNextMarkAfterManeuver()); + assertEquals(windTimePoint, deserialized.getWind().getTimePoint()); + assertEquals(windPosition, deserialized.getWind().getPosition()); + assertEquals(windSpeedWithBearing.getBearing(), deserialized.getWind().getBearing()); + assertEquals(windSpeedWithBearing.getMetersPerSecond(), deserialized.getWind().getMetersPerSecond(), DELTA); + + assertEquals(timePointBefore, deserialized.getCurveWithUnstableCourseAndSpeed().getTimePointBefore()); + assertEquals(timePointAfter, deserialized.getCurveWithUnstableCourseAndSpeed().getTimePointAfter()); + assertEquals(speedWithBearingBefore, + deserialized.getCurveWithUnstableCourseAndSpeed().getSpeedWithBearingBefore()); + assertEquals(speedWithBearingAfter, + deserialized.getCurveWithUnstableCourseAndSpeed().getSpeedWithBearingAfter()); + assertEquals(directionChangeInDegrees, + deserialized.getCurveWithUnstableCourseAndSpeed().getDirectionChangeInDegrees(), DELTA); + assertEquals(maneuverLowestSpeed, deserialized.getCurveWithUnstableCourseAndSpeed().getLowestSpeed()); + assertEquals(avgSpeedWithBearingBefore, + deserialized.getCurveWithUnstableCourseAndSpeed().getAverageSpeedWithBearingBefore()); + assertEquals(avgSpeedWithBearingAfter, + deserialized.getCurveWithUnstableCourseAndSpeed().getAverageSpeedWithBearingAfter()); + assertEquals(durationFromPreviousManeuverEndToManeuverStart, + deserialized.getCurveWithUnstableCourseAndSpeed().getDurationFromPreviousManeuverEndToManeuverStart()); + assertEquals(durationFromManeuverEndToNextManeuverStart, + deserialized.getCurveWithUnstableCourseAndSpeed().getDurationFromManeuverEndToNextManeuverStart()); + assertEquals(gpsFixesCountFromPreviousManeuverEndToManeuverStart, deserialized + .getCurveWithUnstableCourseAndSpeed().getGpsFixesCountFromPreviousManeuverEndToManeuverStart()); + assertEquals(gpsFixesCountFromManeuverEndToNextManeuverStart, + deserialized.getCurveWithUnstableCourseAndSpeed().getGpsFixesCountFromManeuverEndToNextManeuverStart()); + assertEquals(distanceSailedWithinManeuver, + deserialized.getCurveWithUnstableCourseAndSpeed().getDistanceSailedWithinManeuver()); + assertEquals(distanceSailedWithinManeuverTowardMiddleAngleProjection, deserialized + .getCurveWithUnstableCourseAndSpeed().getDistanceSailedWithinManeuverTowardMiddleAngleProjection()); + assertEquals(distanceSailedIfNotManeuvering, + deserialized.getCurveWithUnstableCourseAndSpeed().getDistanceSailedIfNotManeuvering()); + assertEquals(distanceSailedTowardMiddleAngleProjectionIfNotManeuvering, deserialized + .getCurveWithUnstableCourseAndSpeed().getDistanceSailedTowardMiddleAngleProjectionIfNotManeuvering()); + assertEquals(gpsFixesCount, deserialized.getCurveWithUnstableCourseAndSpeed().getGpsFixesCount()); + + assertEquals(timePointMainCurveBefore, deserialized.getMainCurve().getTimePointBefore()); + assertEquals(timePointMainCurveAfter, deserialized.getMainCurve().getTimePointAfter()); + assertEquals(speedWithBearingMainCurveBefore, deserialized.getMainCurve().getSpeedWithBearingBefore()); + assertEquals(speedWithBearingMainCurveAfter, deserialized.getMainCurve().getSpeedWithBearingAfter()); + assertEquals(directionChangeMainCurveInDegrees, deserialized.getMainCurve().getDirectionChangeInDegrees(), + DELTA); + assertEquals(lowestSpeed, deserialized.getMainCurve().getLowestSpeed()); + assertEquals(lowestSpeedTimePoint, deserialized.getMainCurve().getLowestSpeedTimePoint()); + assertEquals(highestSpeed, deserialized.getMainCurve().getHighestSpeed()); + assertEquals(highestSpeedTimePoint, deserialized.getMainCurve().getHighestSpeedTimePoint()); + assertEquals(maxTurningRateInDegreesPerSecond, + deserialized.getMainCurve().getMaxTurningRateInDegreesPerSecond(), DELTA); + assertEquals(avgTurningRateInDegreesPerSecond, + deserialized.getMainCurve().getAvgTurningRateInDegreesPerSecond(), DELTA); + assertEquals(courseAtMaxTurningRate, deserialized.getMainCurve().getCourseAtMaxTurningRate()); + assertEquals(maxTurningRateTimePoint, deserialized.getMainCurve().getTimePointOfMaxTurningRate()); + assertEquals(gpsFixesCountMainCurve, deserialized.getMainCurve().getGpsFixesCount()); + assertEquals(distanceSailedWithinManeuverMainCurve, + deserialized.getMainCurve().getDistanceSailedWithinManeuver()); + assertEquals(distanceSailedWithinManeuverTowardMiddleAngleProjectionMainCurve, + deserialized.getMainCurve().getDistanceSailedWithinManeuverTowardMiddleAngleProjection()); + assertEquals(distanceSailedIfNotManeuveringMainCurve, + deserialized.getMainCurve().getDistanceSailedIfNotManeuvering()); + assertEquals(distanceSailedTowardMiddleAngleProjectionIfNotManeuveringMainCurve, + deserialized.getMainCurve().getDistanceSailedTowardMiddleAngleProjectionIfNotManeuvering()); + } + + @Test + public void testCompleteManeuverCurveWithEstimationDataNullValues() + throws ParseException, JsonDeserializationException { + MillisecondsTimePoint timePointMainCurveBefore = new MillisecondsTimePoint( + dateFormat.parse("06/23/2011-15:28:24")); + MillisecondsTimePoint timePointMainCurveAfter = new MillisecondsTimePoint( + dateFormat.parse("06/23/2011-15:28:34")); + SpeedWithBearing speedWithBearingMainCurveBefore = new KnotSpeedWithBearingImpl(5, new DegreeBearingImpl(30)); + SpeedWithBearing speedWithBearingMainCurveAfter = new KnotSpeedWithBearingImpl(5.5, new DegreeBearingImpl(90)); + double directionChangeMainCurveInDegrees = 60; + SpeedWithBearing lowestSpeed = new KnotSpeedWithBearingImpl(3, new DegreeBearingImpl(60.5)); + MillisecondsTimePoint lowestSpeedTimePoint = new MillisecondsTimePoint(dateFormat.parse("06/23/2011-15:28:29")); + SpeedWithBearing highestSpeed = new KnotSpeedWithBearingImpl(6, new DegreeBearingImpl(65)); + MillisecondsTimePoint highestSpeedTimePoint = new MillisecondsTimePoint( + dateFormat.parse("06/23/2011-15:28:32")); + double maxTurningRateInDegreesPerSecond = 11.2043; + double avgTurningRateInDegreesPerSecond = 9; + Bearing courseAtMaxTurningRate = new DegreeBearingImpl(70.2244242); + MillisecondsTimePoint maxTurningRateTimePoint = new MillisecondsTimePoint( + dateFormat.parse("06/23/2011-15:28:33")); + int gpsFixesCountMainCurve = 0; + Distance distanceSailedWithinManeuverMainCurve = null; + Distance distanceSailedWithinManeuverTowardMiddleAngleProjectionMainCurve = null; + Distance distanceSailedIfNotManeuveringMainCurve = null; + Distance distanceSailedTowardMiddleAngleProjectionIfNotManeuveringMainCurve = null; + ManeuverMainCurveWithEstimationData mainCurve = new ManeuverMainCurveWithEstimationDataImpl( + timePointMainCurveBefore, timePointMainCurveAfter, speedWithBearingMainCurveBefore, + speedWithBearingMainCurveAfter, directionChangeMainCurveInDegrees, lowestSpeed, lowestSpeedTimePoint, + highestSpeed, highestSpeedTimePoint, maxTurningRateTimePoint, maxTurningRateInDegreesPerSecond, + courseAtMaxTurningRate, distanceSailedWithinManeuverMainCurve, + distanceSailedWithinManeuverTowardMiddleAngleProjectionMainCurve, + distanceSailedIfNotManeuveringMainCurve, + distanceSailedTowardMiddleAngleProjectionIfNotManeuveringMainCurve, avgTurningRateInDegreesPerSecond, + gpsFixesCountMainCurve); + + MillisecondsTimePoint timePointBefore = new MillisecondsTimePoint(dateFormat.parse("06/23/2011-15:28:10")); + MillisecondsTimePoint timePointAfter = new MillisecondsTimePoint(dateFormat.parse("06/23/2011-15:28:55")); + SpeedWithBearing speedWithBearingBefore = new KnotSpeedWithBearingImpl(6, new DegreeBearingImpl(20)); + SpeedWithBearing speedWithBearingAfter = new KnotSpeedWithBearingImpl(7.5, new DegreeBearingImpl(101.1)); + double directionChangeInDegrees = 81.1; + Speed maneuverLowestSpeed = new KnotSpeedImpl(2.9); + SpeedWithBearing avgSpeedWithBearingBefore = null; + SpeedWithBearing avgSpeedWithBearingAfter = null; + Duration durationFromPreviousManeuverEndToManeuverStart = null; + Duration durationFromManeuverEndToNextManeuverStart = null; + int gpsFixesCountFromPreviousManeuverEndToManeuverStart = 0; + int gpsFixesCountFromManeuverEndToNextManeuverStart = 0; + Distance distanceSailedWithinManeuver = null; + Distance distanceSailedWithinManeuverTowardMiddleAngleProjection = null; + Distance distanceSailedIfNotManeuvering = null; + Distance distanceSailedTowardMiddleAngleProjectionIfNotManeuvering = null; + int gpsFixesCount = 133445; + ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataImpl curve = new ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataImpl( + timePointBefore, timePointAfter, speedWithBearingBefore, speedWithBearingAfter, + directionChangeInDegrees, maneuverLowestSpeed, avgSpeedWithBearingBefore, + durationFromPreviousManeuverEndToManeuverStart, gpsFixesCountFromPreviousManeuverEndToManeuverStart, + avgSpeedWithBearingAfter, durationFromManeuverEndToNextManeuverStart, + gpsFixesCountFromManeuverEndToNextManeuverStart, distanceSailedWithinManeuver, + distanceSailedWithinManeuverTowardMiddleAngleProjection, distanceSailedIfNotManeuvering, + distanceSailedTowardMiddleAngleProjectionIfNotManeuvering, gpsFixesCount); + + Wind wind = null; + + int jibingCount = 0; + int tackingCount = 0; + boolean maneuverStartsByRunningAwayFromWind = false; + Bearing relativeBearingToNextMarkBeforeManeuver = null; + Bearing relativeBearingToNextMarkAfterManeuver = null; + boolean markPassing = false; + + CompleteManeuverCurveWithEstimationData toSerialize = new CompleteManeuverCurveWithEstimationDataImpl(mainCurve, + curve, wind, tackingCount, jibingCount, maneuverStartsByRunningAwayFromWind, + relativeBearingToNextMarkBeforeManeuver, relativeBearingToNextMarkAfterManeuver, markPassing); + CompleteManeuverCurveWithEstimationDataJsonSerializer serializer = new CompleteManeuverCurveWithEstimationDataJsonSerializer( + new ManeuverMainCurveWithEstimationDataJsonSerializer(), + new ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonSerializer(), + new WindJsonSerializer(new PositionJsonSerializer())); + JSONObject json = serializer.serialize(toSerialize); + CompleteManeuverCurveWithEstimationDataJsonDeserializer deserializer = new CompleteManeuverCurveWithEstimationDataJsonDeserializer( + new ManeuverMainCurveWithEstimationDataJsonDeserializer(), + new ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonDeserializer(), + new WindJsonDeserializer(new PositionJsonDeserializer())); + CompleteManeuverCurveWithEstimationData deserialized = deserializer.deserialize(json); + + assertEquals(tackingCount, deserialized.getTackingCount()); + assertEquals(jibingCount, deserialized.getJibingCount()); + assertEquals(maneuverStartsByRunningAwayFromWind, deserialized.isManeuverStartsByRunningAwayFromWind()); + assertEquals(markPassing, deserialized.isMarkPassing()); + assertEquals(relativeBearingToNextMarkBeforeManeuver, + deserialized.getRelativeBearingToNextMarkBeforeManeuver()); + assertEquals(relativeBearingToNextMarkAfterManeuver, deserialized.getRelativeBearingToNextMarkAfterManeuver()); + assertEquals(wind, deserialized.getWind()); + + assertEquals(timePointBefore, deserialized.getCurveWithUnstableCourseAndSpeed().getTimePointBefore()); + assertEquals(timePointAfter, deserialized.getCurveWithUnstableCourseAndSpeed().getTimePointAfter()); + assertEquals(speedWithBearingBefore, + deserialized.getCurveWithUnstableCourseAndSpeed().getSpeedWithBearingBefore()); + assertEquals(speedWithBearingAfter, + deserialized.getCurveWithUnstableCourseAndSpeed().getSpeedWithBearingAfter()); + assertEquals(directionChangeInDegrees, + deserialized.getCurveWithUnstableCourseAndSpeed().getDirectionChangeInDegrees(), DELTA); + assertEquals(maneuverLowestSpeed, deserialized.getCurveWithUnstableCourseAndSpeed().getLowestSpeed()); + assertEquals(avgSpeedWithBearingBefore, + deserialized.getCurveWithUnstableCourseAndSpeed().getAverageSpeedWithBearingBefore()); + assertEquals(avgSpeedWithBearingAfter, + deserialized.getCurveWithUnstableCourseAndSpeed().getAverageSpeedWithBearingAfter()); + assertEquals(durationFromPreviousManeuverEndToManeuverStart, + deserialized.getCurveWithUnstableCourseAndSpeed().getDurationFromPreviousManeuverEndToManeuverStart()); + assertEquals(durationFromManeuverEndToNextManeuverStart, + deserialized.getCurveWithUnstableCourseAndSpeed().getDurationFromManeuverEndToNextManeuverStart()); + assertEquals(gpsFixesCountFromPreviousManeuverEndToManeuverStart, deserialized + .getCurveWithUnstableCourseAndSpeed().getGpsFixesCountFromPreviousManeuverEndToManeuverStart()); + assertEquals(gpsFixesCountFromManeuverEndToNextManeuverStart, + deserialized.getCurveWithUnstableCourseAndSpeed().getGpsFixesCountFromManeuverEndToNextManeuverStart()); + assertEquals(distanceSailedWithinManeuver, + deserialized.getCurveWithUnstableCourseAndSpeed().getDistanceSailedWithinManeuver()); + assertEquals(distanceSailedWithinManeuverTowardMiddleAngleProjection, deserialized + .getCurveWithUnstableCourseAndSpeed().getDistanceSailedWithinManeuverTowardMiddleAngleProjection()); + assertEquals(distanceSailedIfNotManeuvering, + deserialized.getCurveWithUnstableCourseAndSpeed().getDistanceSailedIfNotManeuvering()); + assertEquals(distanceSailedTowardMiddleAngleProjectionIfNotManeuvering, deserialized + .getCurveWithUnstableCourseAndSpeed().getDistanceSailedTowardMiddleAngleProjectionIfNotManeuvering()); + assertEquals(gpsFixesCount, deserialized.getCurveWithUnstableCourseAndSpeed().getGpsFixesCount()); + + assertEquals(timePointMainCurveBefore, deserialized.getMainCurve().getTimePointBefore()); + assertEquals(timePointMainCurveAfter, deserialized.getMainCurve().getTimePointAfter()); + assertEquals(speedWithBearingMainCurveBefore, deserialized.getMainCurve().getSpeedWithBearingBefore()); + assertEquals(speedWithBearingMainCurveAfter, deserialized.getMainCurve().getSpeedWithBearingAfter()); + assertEquals(directionChangeMainCurveInDegrees, deserialized.getMainCurve().getDirectionChangeInDegrees(), + DELTA); + assertEquals(lowestSpeed, deserialized.getMainCurve().getLowestSpeed()); + assertEquals(lowestSpeedTimePoint, deserialized.getMainCurve().getLowestSpeedTimePoint()); + assertEquals(highestSpeed, deserialized.getMainCurve().getHighestSpeed()); + assertEquals(highestSpeedTimePoint, deserialized.getMainCurve().getHighestSpeedTimePoint()); + assertEquals(maxTurningRateInDegreesPerSecond, + deserialized.getMainCurve().getMaxTurningRateInDegreesPerSecond(), DELTA); + assertEquals(avgTurningRateInDegreesPerSecond, + deserialized.getMainCurve().getAvgTurningRateInDegreesPerSecond(), DELTA); + assertEquals(courseAtMaxTurningRate, deserialized.getMainCurve().getCourseAtMaxTurningRate()); + assertEquals(maxTurningRateTimePoint, deserialized.getMainCurve().getTimePointOfMaxTurningRate()); + assertEquals(gpsFixesCountMainCurve, deserialized.getMainCurve().getGpsFixesCount()); + assertEquals(distanceSailedWithinManeuverMainCurve, + deserialized.getMainCurve().getDistanceSailedWithinManeuver()); + assertEquals(distanceSailedWithinManeuverTowardMiddleAngleProjectionMainCurve, + deserialized.getMainCurve().getDistanceSailedWithinManeuverTowardMiddleAngleProjection()); + assertEquals(distanceSailedIfNotManeuveringMainCurve, + deserialized.getMainCurve().getDistanceSailedIfNotManeuvering()); + assertEquals(distanceSailedTowardMiddleAngleProjectionIfNotManeuveringMainCurve, + deserialized.getMainCurve().getDistanceSailedTowardMiddleAngleProjectionIfNotManeuvering()); + } + +} diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/CompleteManeuverCurveWithEstimationDataJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/CompleteManeuverCurveWithEstimationDataJsonDeserializer.java index 1611a82a202..4313f465e31 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/CompleteManeuverCurveWithEstimationDataJsonDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/CompleteManeuverCurveWithEstimationDataJsonDeserializer.java @@ -44,8 +44,9 @@ public class CompleteManeuverCurveWithEstimationDataJsonDeserializer CompleteManeuverCurveWithEstimationDataJsonSerializer.CURVE_WITH_UNSTABLE_COURSE_AND_SPEED)); JSONObject windJson = (JSONObject) object.get(CompleteManeuverCurveWithEstimationDataJsonSerializer.WIND); Wind wind = windJson == null ? null : windDeserializer.deserialize(windJson); - Long tackingCount = (Long) object.get(CompleteManeuverCurveWithEstimationDataJsonSerializer.TACKING_COUNT); - Long jibingCount = (Long) object.get(CompleteManeuverCurveWithEstimationDataJsonSerializer.JIBING_COUNT); + Integer tackingCount = (Integer) object + .get(CompleteManeuverCurveWithEstimationDataJsonSerializer.TACKING_COUNT); + Integer jibingCount = (Integer) object.get(CompleteManeuverCurveWithEstimationDataJsonSerializer.JIBING_COUNT); Boolean maneuverStartsByRunningAwayFromWind = (Boolean) object .get(CompleteManeuverCurveWithEstimationDataJsonSerializer.MANEUVER_STARTS_BY_RUNNING_AWAY_FROM_WIND); Double relativeBearingToNextMarkBeforeManeuver = (Double) object.get( @@ -53,7 +54,7 @@ public class CompleteManeuverCurveWithEstimationDataJsonDeserializer Double relativeBearingToNextMarkAfterManeuver = (Double) object.get( CompleteManeuverCurveWithEstimationDataJsonSerializer.RELATIVE_BEARING_TO_NEXT_MARK_AFTER_MANEUVER); return new CompleteManeuverCurveWithEstimationDataImpl(mainCurve, curveWithUnstableCourseAndSpeed, wind, - tackingCount.intValue(), jibingCount.intValue(), maneuverStartsByRunningAwayFromWind, + tackingCount, jibingCount, maneuverStartsByRunningAwayFromWind, convertBearing(relativeBearingToNextMarkBeforeManeuver), convertBearing(relativeBearingToNextMarkAfterManeuver), markPassing); } diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonDeserializer.java index 9f6a7f63022..2524bfa1085 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonDeserializer.java @@ -37,22 +37,22 @@ public class ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonDeseri ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonSerializer.AVERAGE_COURSE_AFTER_IN_DEGREES); Double secondsAfter = (Double) object.get( ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonSerializer.DURATION_TO_NEXT_MANEUVER_IN_SECONDS); - Long gpsFixesCountBefore = (Long) object.get( + Integer gpsFixesCountBefore = (Integer) object.get( ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonSerializer.GPS_FIXES_COUNT_FROM_PREVIOUS_MANEUVER_IN_SECONDS); - Long gpsFixesCountAfter = (Long) object.get( + Integer gpsFixesCountAfter = (Integer) object.get( ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonSerializer.GPS_FIXES_COUNT_TO_NEXT_MANEUVER_IN_SECONDS); - Long gpsFixesCount = (Long) object + Integer gpsFixesCount = (Integer) object .get(ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonSerializer.GPS_FIXES_COUNT); return new ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataImpl(boundaries.getTimePointBefore(), boundaries.getTimePointAfter(), boundaries.getSpeedWithBearingBefore(), boundaries.getSpeedWithBearingAfter(), boundaries.getDirectionChangeInDegrees(), boundaries.getLowestSpeed(), convertSpeedWithBearing(avgSpeedBeforeInKnots, avgCogBefore), - convertDuration(secondsBefore), convertCount(gpsFixesCountBefore), + convertDuration(secondsBefore), gpsFixesCountBefore, convertSpeedWithBearing(avgSpeedAfterInKnots, avgCogAfter), convertDuration(secondsAfter), - convertCount(gpsFixesCountAfter), boundaries.getDistanceSailedWithinManeuver(), + gpsFixesCountAfter, boundaries.getDistanceSailedWithinManeuver(), boundaries.getDistanceSailedWithinManeuverTowardMiddleAngleProjection(), boundaries.getDistanceSailedIfNotManeuvering(), - boundaries.getDistanceSailedTowardMiddleAngleProjectionIfNotManeuvering(), convertCount(gpsFixesCount)); + boundaries.getDistanceSailedTowardMiddleAngleProjectionIfNotManeuvering(), gpsFixesCount); } private SpeedWithBearing convertSpeedWithBearing(Double speedInKnots, Double cog) { @@ -64,8 +64,4 @@ public class ManeuverCurveWithUnstableCourseAndSpeedWithEstimationDataJsonDeseri return seconds == null ? null : new MillisecondsDurationImpl((long) (seconds * 1000.0)); } - private Integer convertCount(Long count) { - return count == null ? null : count.intValue(); - } - } diff --git a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/ManeuverMainCurveWithEstimationDataJsonDeserializer.java b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/ManeuverMainCurveWithEstimationDataJsonDeserializer.java index be2d73eae18..a6f016106e2 100644 --- a/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/ManeuverMainCurveWithEstimationDataJsonDeserializer.java +++ b/java/com.sap.sailing.server.gateway.serialization/src/com/sap/sailing/server/gateway/deserialization/impl/ManeuverMainCurveWithEstimationDataJsonDeserializer.java @@ -40,7 +40,7 @@ public class ManeuverMainCurveWithEstimationDataJsonDeserializer .get(ManeuverMainCurveWithEstimationDataJsonSerializer.AVG_TURNING_RATE_IN_DEGREES_PER_SECOND); Double maxTurningRateInDegreesPerSecond = (Double) object .get(ManeuverMainCurveWithEstimationDataJsonSerializer.MAX_TURNING_RATE_IN_DEGREES_PER_SECOND); - Long gpsFixesCount = (Long) object.get(ManeuverMainCurveWithEstimationDataJsonSerializer.GPS_FIXES_COUNT); + Integer gpsFixesCount = (Integer) object.get(ManeuverMainCurveWithEstimationDataJsonSerializer.GPS_FIXES_COUNT); return new ManeuverMainCurveWithEstimationDataImpl(boundaries.getTimePointBefore(), boundaries.getTimePointAfter(), boundaries.getSpeedWithBearingBefore(), boundaries.getSpeedWithBearingAfter(), boundaries.getDirectionChangeInDegrees(), @@ -54,6 +54,6 @@ public class ManeuverMainCurveWithEstimationDataJsonDeserializer boundaries.getDistanceSailedWithinManeuverTowardMiddleAngleProjection(), boundaries.getDistanceSailedIfNotManeuvering(), boundaries.getDistanceSailedTowardMiddleAngleProjectionIfNotManeuvering(), - avgTurningRateInDegreesPerSecond, gpsFixesCount.intValue()); + avgTurningRateInDegreesPerSecond, gpsFixesCount); } }