diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/impl/TrackedRaceStartTimeInferenceTest.java b/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/impl/TrackedRaceStartTimeInferenceTest.java index 5a1de6f30d2..fbc3b0cfab3 100644 --- a/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/impl/TrackedRaceStartTimeInferenceTest.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter.test/src/com/sap/sailing/domain/racelogtracking/test/impl/TrackedRaceStartTimeInferenceTest.java @@ -38,12 +38,11 @@ import com.sap.sailing.domain.tracking.TrackedRegatta; import com.sap.sailing.domain.tracking.impl.DynamicTrackedRaceImpl; import com.sap.sailing.domain.tracking.impl.DynamicTrackedRegattaImpl; import com.sap.sailing.domain.tracking.impl.EmptyWindStore; -import com.sap.sse.common.Duration; +import com.sap.sailing.domain.tracking.impl.TrackedRaceImpl; import com.sap.sse.common.NoCorrespondingServiceRegisteredException; import com.sap.sse.common.impl.MillisecondsTimePoint; public class TrackedRaceStartTimeInferenceTest extends AbstractGPSFixStoreTest { - private static final Duration BUFFER_DURATION = Duration.ONE_MINUTE.times(5); private final BoatClass boatClass = DomainFactory.INSTANCE.getOrCreateBoatClass("49er"); @Test @@ -71,8 +70,8 @@ public class TrackedRaceStartTimeInferenceTest extends AbstractGPSFixStoreTest { //test inference via race start/end time in racelog trackedRace.waitForLoadingFromGPSFixStoreToFinishRunning(regattaLog); - assertEquals(new MillisecondsTimePoint(10000).minus(BUFFER_DURATION), trackedRace.getStartOfTracking()); - assertEquals(new MillisecondsTimePoint(20000).plus(BUFFER_DURATION), trackedRace.getEndOfTracking()); + assertEquals(new MillisecondsTimePoint(10000).minus(TrackedRaceImpl.TRACKING_BUFFER_IN_MINUTES), trackedRace.getStartOfTracking()); + assertEquals(new MillisecondsTimePoint(20000).plus(TrackedRaceImpl.TRACKING_BUFFER_IN_MINUTES), trackedRace.getEndOfTracking()); //test inference via manually set start/end of tracking diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java index 25ac24e8a64..ea16c455843 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/DynamicTrackedRaceImpl.java @@ -308,6 +308,7 @@ DynamicTrackedRace, GPSTrackListener { if (!Util.equalsWithNull(oldStartOfRace, newStartOfRace)) { notifyListenersStartOfRaceChanged(oldStartOfRace, newStartOfRace); } + updateStartAndEndOfTracking(); } @Override diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java index d50effbf5b9..6dbebc19cbc 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/tracking/impl/TrackedRaceImpl.java @@ -160,7 +160,7 @@ import difflib.Patch; import difflib.PatchFailedException; public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials implements CourseListener { - private static final int TRACKING_BUFFER_IN_MINUTES = 5; + public static final int TRACKING_BUFFER_IN_MINUTES = 5; private static final long serialVersionUID = -4825546964220003507L; @@ -734,7 +734,6 @@ public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials impl @Override public TimePoint getStartOfTracking() { - updateStartAndEndOfTracking();//FIXME: unclear whether change listeners etc similar to DynamicTrackedRace can be used here for caching and invalidation return startOfTrackingReceived; } @@ -750,11 +749,11 @@ public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials impl if (trackingTimesFromRaceLog != null){ if (trackingTimesFromRaceLog.getA() != null){ - setStartOfTrackingReceived(trackingTimesFromRaceLog.getA(), false); + startOfTrackingReceived = trackingTimesFromRaceLog.getA(); startOfTrackingFound = true; } if (trackingTimesFromRaceLog.getB() != null){ - setEndOfTrackingReceived(trackingTimesFromRaceLog.getB(), false); + endOfTrackingReceived = trackingTimesFromRaceLog.getB(); endOfTrackingFound = true; } } @@ -762,11 +761,11 @@ public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials impl if(!startOfTrackingFound || !endOfTrackingFound){ if (startAndFinishedTimesFromRaceLog != null){ if (!startOfTrackingFound && startAndFinishedTimesFromRaceLog.getA() != null){ - setStartOfTrackingReceived(startAndFinishedTimesFromRaceLog.getA().minus(Duration.ONE_MINUTE.times(TRACKING_BUFFER_IN_MINUTES)), false); + startOfTrackingReceived = startAndFinishedTimesFromRaceLog.getA().minus(Duration.ONE_MINUTE.times(TRACKING_BUFFER_IN_MINUTES)); startOfTrackingFound = true; } if (!endOfTrackingFound && startAndFinishedTimesFromRaceLog.getB() != null){ - setEndOfTrackingReceived(startAndFinishedTimesFromRaceLog.getB().plus(Duration.ONE_MINUTE.times(TRACKING_BUFFER_IN_MINUTES)), false); + endOfTrackingReceived = startAndFinishedTimesFromRaceLog.getB().plus(Duration.ONE_MINUTE.times(TRACKING_BUFFER_IN_MINUTES)); endOfTrackingFound = true; } } @@ -795,11 +794,11 @@ public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials impl } if (!startOfTrackingFound && earliestMappingStart != null){ - setStartOfTrackingReceived(earliestMappingStart, false); + startOfTrackingReceived = earliestMappingStart; } if (!endOfTrackingFound && latestMappingEnd != null){ - setEndOfTrackingReceived(latestMappingEnd, false); + endOfTrackingReceived = latestMappingEnd; } } } @@ -834,16 +833,19 @@ public abstract class TrackedRaceImpl extends TrackedRaceWithWindEssentials impl public void invalidateStartTime() { startTime = null; startTimeWithoutInferenceFromStartMarkPassings = null; + updateStartAndEndOfTracking(); } public void invalidateEndTime() { endTime = null; + updateStartAndEndOfTracking(); } protected void invalidateMarkPassingTimes() { synchronized (markPassingsTimes) { markPassingsTimes.clear(); } + updateStartAndEndOfTracking(); } /**