From d928468bb4baa3291ce5fee703d829897d50f550 Mon Sep 17 00:00:00 2001 From: Papick Garcia Taboada Date: Tue, 31 May 2016 13:46:37 +0200 Subject: [PATCH] Fixed up/to fix ranges for gps fix store (marks) --- .../impl/logtracker/RaceLogGPSFixTracker.java | 13 ++++++++++++- .../domain/racelog/impl/GPSFixStoreImpl.java | 7 +++++-- .../domain/racelog/tracking/EmptyGPSFixStore.java | 2 +- .../domain/racelog/tracking/GPSFixStore.java | 3 ++- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/logtracker/RaceLogGPSFixTracker.java b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/logtracker/RaceLogGPSFixTracker.java index ac14e72e8c2..8e7de928613 100644 --- a/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/logtracker/RaceLogGPSFixTracker.java +++ b/java/com.sap.sailing.domain.racelogtrackingadapter/src/com/sap/sailing/domain/racelogtracking/impl/logtracker/RaceLogGPSFixTracker.java @@ -184,7 +184,18 @@ public class RaceLogGPSFixTracker extends AbstractRaceLogFixTracker { protected void mappingAdded(DeviceMapping mapping) { DynamicGPSFixTrack track = trackedRace.getOrCreateTrack(mapping.getMappedTo()); try { - gpsFixStore.loadMarkTrack(track, mapping); + TimePoint from = getStartOfTracking(); + TimePoint to = getEndOfTracking(); + gpsFixStore.loadMarkTrack(track, mapping, from, to); + if (track.getFirstRawFix() == null) { + logger.fine("Loading mark positions from outside of start/end of tracking interval (" + from + ".." + + to + ") because no fixes were found in that interval"); + // got an empty track for the mark; try again without constraining the mapping interval + // by start/end of tracking to at least attempt to get fixes at all in case there were any + // within the device mapping interval specified + gpsFixStore.loadMarkTrack(track, mapping, /* startOfTimeWindowToLoad */ null, + /* endOfTimeWindowToLoad */ null); + } } catch (TransformationException | NoCorrespondingServiceRegisteredException e) { logger.log(Level.WARNING, "Could not load mark track " + mapping.getMappedTo()); } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/impl/GPSFixStoreImpl.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/impl/GPSFixStoreImpl.java index 6549559df04..cee25393fd4 100755 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/impl/GPSFixStoreImpl.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/impl/GPSFixStoreImpl.java @@ -92,9 +92,12 @@ public class GPSFixStoreImpl implements GPSFixStore { @Override - public void loadMarkTrack(DynamicGPSFixTrack track, DeviceMapping mapping) + public void loadMarkTrack(DynamicGPSFixTrack track, DeviceMapping mapping, TimePoint start, + TimePoint end) throws TransformationException, NoCorrespondingServiceRegisteredException { - loadTrack(track, mapping.getDevice(), mapping.getTimeRange().from(), mapping.getTimeRange().to(), true /*inclusive*/); + final TimePoint from = Util.getLatestOfTimePoints(start, mapping.getTimeRange().from()); + final TimePoint to = Util.getEarliestOfTimePoints(end, mapping.getTimeRange().to()); + loadTrack(track, mapping.getDevice(), from, to, true /* inclusive */); } @Override diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/tracking/EmptyGPSFixStore.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/tracking/EmptyGPSFixStore.java index 8647e873790..fd0c650151c 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/tracking/EmptyGPSFixStore.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/tracking/EmptyGPSFixStore.java @@ -44,7 +44,7 @@ public enum EmptyGPSFixStore implements GPSFixStore { @Override public void loadMarkTrack(DynamicGPSFixTrack track, - DeviceMapping mapping) { + DeviceMapping mapping, TimePoint start, TimePoint end) { } diff --git a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/tracking/GPSFixStore.java b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/tracking/GPSFixStore.java index a59c7968d52..a942ad06981 100644 --- a/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/tracking/GPSFixStore.java +++ b/java/com.sap.sailing.domain/src/com/sap/sailing/domain/racelog/tracking/GPSFixStore.java @@ -56,7 +56,8 @@ public interface GPSFixStore { /** * Load all fixes that correspond to the {@code mapping}. */ - void loadMarkTrack(DynamicGPSFixTrack track, DeviceMapping mapping) throws TransformationException, + void loadMarkTrack(DynamicGPSFixTrack track, DeviceMapping mapping, TimePoint start, + TimePoint end) throws TransformationException, NoCorrespondingServiceRegisteredException; /**