java/com.sap.sailing.domain.persistence/src/com/sap/sailing/domain/persistence/impl/DomainObjectFactoryImpl.java
... ...
@@ -3353,9 +3353,6 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
3353 3353
}
3354 3354
3355 3355
private Maneuver loadManeuver(Competitor competitor, Document maneuvers, Course course, TrackedRace trackedRace) {
3356
- //final int waypointIndex = maneuvers.getInteger(FieldNames.MANEUVER.name());
3357
- //final Waypoint waypoint = Util.get(course.getWaypoints(), waypointIndex);
3358
- //final TimePoint timePoint = TimePoint.of(maneuvers.getLong(FieldNames.TIME_AS_MILLIS.name()));
3359 3356
final TimePoint timePoint = TimePoint.of( maneuvers.getLong(FieldNames.TIMEPOINT.name()));
3360 3357
final double maxTurningRateInDegreesPerSecond = maneuvers.getDouble(FieldNames.MAX_TURNING_RATE_IN_DEGREE_PER_SECOUND.name());
3361 3358
final String typeName = maneuvers.getString(FieldNames.TYPE.name());
... ...
@@ -3369,38 +3366,42 @@ public class DomainObjectFactoryImpl implements DomainObjectFactory {
3369 3366
final ManeuverCurveBoundaries mainCurveBoundaries = loadManeuverCurveBoundaries((Document) maneuvers.get(FieldNames.MAIN_CURVE_BOUNDARIES.name()));
3370 3367
final ManeuverCurveBoundaries maneuverCurveWithStableSpeedAndCourseBoundaries = loadManeuverCurveBoundaries((Document) maneuvers.get(FieldNames.MANEUVER_CURVE_WITH_STABLE_SPEED_AND_COURSE_BOUNDERIES.name()));
3371 3368
final ManeuverLoss maneuverLoss = loadManeuverLoss((Document) maneuvers.get(FieldNames.MANEUVER_LOSS.name()));
3372
- MarkPassingProxy markPassingProxy = new MarkPassingProxy(timePoint, waypointIndex, competitor.getId(), trackedRace );// wie kommt man auf das Race?
3369
+ final MarkPassingProxy markPassingProxy = new MarkPassingProxy(timePoint, waypointIndex, competitor.getId(), trackedRace );// wie kommt man auf das Race?
3370
+ final Maneuver maneuver;
3373 3371
if (waypointIndex == -1) {
3374
- final Maneuver maneuver = new ManeuverWithMainCurveBoundariesImpl(type, newTack, position, timePoint, mainCurveBoundaries, maneuverCurveWithStableSpeedAndCourseBoundaries,
3375
- maxTurningRateInDegreesPerSecond, null, maneuverLoss);
3376
- return maneuver;
3372
+ maneuver = new ManeuverWithMainCurveBoundariesImpl(type, newTack, position, timePoint, mainCurveBoundaries, maneuverCurveWithStableSpeedAndCourseBoundaries,
3373
+ maxTurningRateInDegreesPerSecond, /* mark passing */ null, maneuverLoss);
3374
+ } else {
3375
+ final MarkPassing markpassing = new MarkPassingImpl(timePoint, markPassingProxy.getWaypoint(), competitor);
3376
+ maneuver = new ManeuverWithMainCurveBoundariesImpl(type, newTack, position, timePoint, mainCurveBoundaries, maneuverCurveWithStableSpeedAndCourseBoundaries,
3377
+ maxTurningRateInDegreesPerSecond, markpassing, maneuverLoss);
3377 3378
}
3378
- MarkPassing markpassing = new MarkPassingImpl(timePoint, markPassingProxy.getWaypoint(), competitor);
3379
- final Maneuver maneuver = new ManeuverWithMainCurveBoundariesImpl(type, newTack, position, timePoint, mainCurveBoundaries, maneuverCurveWithStableSpeedAndCourseBoundaries,
3380
- maxTurningRateInDegreesPerSecond, markpassing, maneuverLoss);
3381 3379
return maneuver;
3382 3380
}
3383 3381
3384 3382
private ManeuverLoss loadManeuverLoss(Document document) {
3385
- if(document == null)
3386
- return null;
3387
- final Double distanceDouble = document.getDouble(FieldNames.DISTANCE_SAILED_POMA.name());
3388
- final Distance distance = new MeterDistance(distanceDouble);
3389
- final Distance distanceIfNorManeuvering = new MeterDistance(document.getDouble(FieldNames.DISTANCE_SAILED_INMPOMA.name()));
3390
- final double startPositionLatRad = document.getDouble(FieldNames.START_POSITION_LAT_RAD.name());
3391
- final double startPositionLngRad = document.getDouble(FieldNames.START_POSITION_LNG_RAD.name());
3392
- final Position startPosition = new RadianPosition(startPositionLatRad, startPositionLngRad);
3393
- final double endPositionLatRad = document.getDouble(FieldNames.END_POSITION_LAT_RAD.name());
3394
- final double endPositionLngRad = document.getDouble(FieldNames.END_POSITION_LNG_RAD.name());
3395
- final Position endPosition = new RadianPosition(endPositionLatRad, endPositionLngRad);
3396
- final Duration duration = Duration.ofMillis(document.getLong(FieldNames.DURATION.name()));
3397
- final Double SpeedWithBearingBeforeDegrees = document.getDouble(FieldNames.SPEED_WITH_BEARING_BEFORE_DEGREES.name());
3398
- final Double SpeedWithBearingBeforeSpeed = document.getDouble(FieldNames.SPEED_WITH_BEARING_BEFORE_SPEED.name());
3399
- final Bearing bearingBefore = new DegreeBearingImpl(SpeedWithBearingBeforeDegrees);
3400
- final SpeedWithBearing SpeedWithBearingBefore = new KnotSpeedWithBearingImpl(SpeedWithBearingBeforeSpeed, bearingBefore);
3401
- final Bearing middeManeuverAngle = new DegreeBearingImpl(document.getDouble(FieldNames.DEGREE_BEARING.name()));
3402
-
3403
- return new ManeuverLoss(distance, distanceIfNorManeuvering, startPosition, endPosition, duration, SpeedWithBearingBefore, middeManeuverAngle);
3383
+ final ManeuverLoss maneuverLoss;
3384
+ if (document != null) {
3385
+ final Double distanceDouble = document.getDouble(FieldNames.DISTANCE_SAILED_POMA.name());
3386
+ final Distance distance = new MeterDistance(distanceDouble);
3387
+ final Distance distanceIfNorManeuvering = new MeterDistance(document.getDouble(FieldNames.DISTANCE_SAILED_INMPOMA.name()));
3388
+ final double startPositionLatRad = document.getDouble(FieldNames.START_POSITION_LAT_RAD.name());
3389
+ final double startPositionLngRad = document.getDouble(FieldNames.START_POSITION_LNG_RAD.name());
3390
+ final Position startPosition = new RadianPosition(startPositionLatRad, startPositionLngRad);
3391
+ final double endPositionLatRad = document.getDouble(FieldNames.END_POSITION_LAT_RAD.name());
3392
+ final double endPositionLngRad = document.getDouble(FieldNames.END_POSITION_LNG_RAD.name());
3393
+ final Position endPosition = new RadianPosition(endPositionLatRad, endPositionLngRad);
3394
+ final Duration duration = Duration.ofMillis(document.getLong(FieldNames.DURATION.name()));
3395
+ final Double SpeedWithBearingBeforeDegrees = document.getDouble(FieldNames.SPEED_WITH_BEARING_BEFORE_DEGREES.name());
3396
+ final Double SpeedWithBearingBeforeSpeed = document.getDouble(FieldNames.SPEED_WITH_BEARING_BEFORE_SPEED.name());
3397
+ final Bearing bearingBefore = new DegreeBearingImpl(SpeedWithBearingBeforeDegrees);
3398
+ final SpeedWithBearing SpeedWithBearingBefore = new KnotSpeedWithBearingImpl(SpeedWithBearingBeforeSpeed, bearingBefore);
3399
+ final Bearing middeManeuverAngle = new DegreeBearingImpl(document.getDouble(FieldNames.DEGREE_BEARING.name()));
3400
+ maneuverLoss = new ManeuverLoss(distance, distanceIfNorManeuvering, startPosition, endPosition, duration, SpeedWithBearingBefore, middeManeuverAngle);
3401
+ } else {
3402
+ maneuverLoss = null;
3403
+ }
3404
+ return maneuverLoss;
3404 3405
}
3405 3406
3406 3407
private ManeuverCurveBoundaries loadManeuverCurveBoundaries(Document maneuvers) {