mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-16 17:21:00 +00:00
Fixes StackOverflow in updateStartAndEndOfTracking
This commit is contained in:
1 parent
a5c6e1e376
commit
63eb29a015
3 files changed
+14
-12
No files matched your search
+3
-4
@@ -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
|
||||
|
||||
+1
@@ -308,6 +308,7 @@ DynamicTrackedRace, GPSTrackListener<Competitor, GPSFixMoving> {
|
||||
if (!Util.equalsWithNull(oldStartOfRace, newStartOfRace)) {
|
||||
notifyListenersStartOfRaceChanged(oldStartOfRace, newStartOfRace);
|
||||
}
|
||||
updateStartAndEndOfTracking();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+10
-8
@@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in new issue
Block a user