mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-11-08 20:12:23 +00:00
Implemented serialization/deserialization test for estimation data
This commit is contained in:
1 parent
c585833459
commit
f702fea3d0
4 files changed
+371
-15
No files matched your search
+359
@@ -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());
|
||||
}
|
||||
|
||||
}
|
||||
+4
-3
@@ -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);
|
||||
}
|
||||
|
||||
+6
-10
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
+2
-2
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user