mirror of
https://github.com/eclipse-sailing-analytics/sailing-analytics.git
synced 2026-10-21 03:30:12 +00:00
Bug 4044: No fixes aren't loaded until startOfTracking is set. This
prevents all fixes to get loaded into tracks of the race while startOfTracking isn't known yet.
This commit is contained in:
1 parent
2f6c930abc
commit
eabf024aaa
1 file changed
+34
-8
+34
-8
@@ -72,17 +72,39 @@ public class FixLoaderAndTracker implements TrackingDataLoader {
|
||||
private final AbstractRaceChangeListener raceChangeListener = new AbstractRaceChangeListener() {
|
||||
@Override
|
||||
public void startOfTrackingChanged(TimePoint oldStartOfTracking, TimePoint newStartOfTracking) {
|
||||
if ((newStartOfTracking == null
|
||||
|| (oldStartOfTracking != null && newStartOfTracking.before(oldStartOfTracking)))) {
|
||||
loadFixesForExtendedTimeRange(newStartOfTracking, oldStartOfTracking);
|
||||
if (newStartOfTracking == null) {
|
||||
// Fixes aren't loaded at all if startOfTracking isn't set yet
|
||||
return;
|
||||
}
|
||||
TimeRange timeRangeToLoad;
|
||||
if(oldStartOfTracking == null) {
|
||||
// Fixes wheren't loaded while startOfTracking was null. So we need to load all fixes in the tracking interval now.
|
||||
timeRangeToLoad = getTrackingTimeRange();
|
||||
} else if (newStartOfTracking.before(oldStartOfTracking)) {
|
||||
timeRangeToLoad = new TimeRangeImpl(newStartOfTracking, oldStartOfTracking);
|
||||
} else {
|
||||
// no new timerange is covered
|
||||
return;
|
||||
}
|
||||
loadFixesForExtendedTimeRange(timeRangeToLoad);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void endOfTrackingChanged(TimePoint oldEndOfTracking, TimePoint newEndOfTracking) {
|
||||
if (newEndOfTracking == null || (oldEndOfTracking != null && newEndOfTracking.after(oldEndOfTracking))) {
|
||||
loadFixesForExtendedTimeRange(oldEndOfTracking, newEndOfTracking);
|
||||
if (trackedRace.getStartOfRace() == null) {
|
||||
// Fixes aren't loaded at all if startOfTracking isn't set yet
|
||||
return;
|
||||
}
|
||||
TimeRange timeRangeToLoad;
|
||||
if(newEndOfTracking == null && oldEndOfTracking != null) {
|
||||
timeRangeToLoad = new TimeRangeImpl(oldEndOfTracking, TimePoint.EndOfTime);
|
||||
} else if(newEndOfTracking != null && oldEndOfTracking != null && oldEndOfTracking.before(newEndOfTracking)) {
|
||||
timeRangeToLoad = new TimeRangeImpl(oldEndOfTracking, newEndOfTracking);
|
||||
} else {
|
||||
// no new timerange is covered
|
||||
return;
|
||||
}
|
||||
loadFixesForExtendedTimeRange(timeRangeToLoad);
|
||||
}
|
||||
|
||||
public void regattaLogAttached(RegattaLog regattaLog) {
|
||||
@@ -92,7 +114,7 @@ public class FixLoaderAndTracker implements TrackingDataLoader {
|
||||
private final FixReceivedListener<Timed> listener = new FixReceivedListener<Timed>() {
|
||||
@Override
|
||||
public void fixReceived(DeviceIdentifier device, Timed fix) {
|
||||
if (preemptiveStopRequested.get()) {
|
||||
if (preemptiveStopRequested.get() || trackedRace.getStartOfTracking() == null) {
|
||||
return;
|
||||
}
|
||||
final TimePoint timePoint = fix.getTimePoint();
|
||||
@@ -215,6 +237,11 @@ public class FixLoaderAndTracker implements TrackingDataLoader {
|
||||
*/
|
||||
private void loadFixesForNewlyCoveredTimeRanges(WithID item,
|
||||
Map<RegattaLogDeviceMappingEvent<WithID>, MultiTimeRange> newlyCoveredTimeRanges) {
|
||||
if(trackedRace.getStartOfTracking() == null) {
|
||||
// No fixes are loaded if startOfTracking isn't set.
|
||||
// This helps to prevent that all fixes are loaded into tracks of the tracked race.
|
||||
return;
|
||||
}
|
||||
TimeRange trackingTimeRange = getTrackingTimeRange();
|
||||
loadFixesInTrackingTimeRange(newlyCoveredTimeRanges, trackingTimeRange);
|
||||
if (item instanceof Mark) {
|
||||
@@ -435,8 +462,7 @@ public class FixLoaderAndTracker implements TrackingDataLoader {
|
||||
}
|
||||
}
|
||||
|
||||
private void loadFixesForExtendedTimeRange(TimePoint loadFixesFrom, TimePoint loadFixesTo) {
|
||||
final TimeRangeImpl extendedTimeRange = new TimeRangeImpl(loadFixesFrom, loadFixesTo);
|
||||
private void loadFixesForExtendedTimeRange(final TimeRange extendedTimeRange) {
|
||||
deviceMappings.forEachItemAndCoveredTimeRanges((item, mappingsAndCoveredTimeRanges) -> loadFixesInTrackingTimeRange(mappingsAndCoveredTimeRanges, extendedTimeRange));
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user