Fixed up/to fix ranges for gps fix store (marks)

This commit is contained in:
Papick Garcia Taboada
2016-05-31 13:46:37 +02:00
parent 9adcb03771
commit d928468bb4
4 changed files with 20 additions and 5 deletions
@@ -184,7 +184,18 @@ public class RaceLogGPSFixTracker extends AbstractRaceLogFixTracker {
protected void mappingAdded(DeviceMapping<Mark> mapping) {
DynamicGPSFixTrack<Mark, GPSFix> 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());
}
@@ -92,9 +92,12 @@ public class GPSFixStoreImpl implements GPSFixStore {
@Override
public void loadMarkTrack(DynamicGPSFixTrack<Mark, GPSFix> track, DeviceMapping<Mark> mapping)
public void loadMarkTrack(DynamicGPSFixTrack<Mark, GPSFix> track, DeviceMapping<Mark> 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
@@ -44,7 +44,7 @@ public enum EmptyGPSFixStore implements GPSFixStore {
@Override
public void loadMarkTrack(DynamicGPSFixTrack<Mark, GPSFix> track,
DeviceMapping<Mark> mapping) {
DeviceMapping<Mark> mapping, TimePoint start, TimePoint end) {
}
@@ -56,7 +56,8 @@ public interface GPSFixStore {
/**
* Load all fixes that correspond to the {@code mapping}.
*/
void loadMarkTrack(DynamicGPSFixTrack<Mark, GPSFix> track, DeviceMapping<Mark> mapping) throws TransformationException,
void loadMarkTrack(DynamicGPSFixTrack<Mark, GPSFix> track, DeviceMapping<Mark> mapping, TimePoint start,
TimePoint end) throws TransformationException,
NoCorrespondingServiceRegisteredException;
/**