From ce911cf3be599e69d8f0a98f8e33e94f4e7fa6dd Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fr=C3=A9d=C3=A9ric=20Perrin?= Date: Sun, 7 Mar 2021 19:42:19 +0000 Subject: [PATCH] Fix times with holes and misordered segments --- src/tim/prune/data/RangeStats.java | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/tim/prune/data/RangeStats.java b/src/tim/prune/data/RangeStats.java index 1f57626..b32f12f 100644 --- a/src/tim/prune/data/RangeStats.java +++ b/src/tim/prune/data/RangeStats.java @@ -11,7 +11,7 @@ public class RangeStats private boolean _foundTrackPoint = false; protected AltitudeRange _totalAltitudeRange = new AltitudeRange(); protected AltitudeRange _movingAltitudeRange = new AltitudeRange(); - private Timestamp _earliestTimestamp = null, _latestTimestamp = null; + private Timestamp _earliestTimestamp = null, _latestTimestamp = null, _movingTimestamp = null; private long _movingMilliseconds = 0L; private boolean _timesIncomplete = false; private boolean _timesOutOfSequence = false; @@ -75,16 +75,26 @@ public class RangeStats } // timestamps + if (inPoint.getSegmentStart()) + { + // reset movingTimestamp for moving time at the start + // of each segment + _movingTimestamp = null; + } if (inPoint.hasTimestamp()) { Timestamp currTstamp = inPoint.getTimestamp(); if (_earliestTimestamp == null || currTstamp.isBefore(_earliestTimestamp)) { _earliestTimestamp = currTstamp; } + if (_latestTimestamp == null || currTstamp.isAfter(_latestTimestamp)) { + _latestTimestamp = currTstamp; + } + // Work out duration without segment gaps - if (!inPoint.getSegmentStart() && _latestTimestamp != null) + if (_movingTimestamp != null) { - long millisLater = currTstamp.getMillisecondsSince(_latestTimestamp); + long millisLater = currTstamp.getMillisecondsSince(_movingTimestamp); if (millisLater < 0) { _timesOutOfSequence = true; } @@ -92,9 +102,7 @@ public class RangeStats _movingMilliseconds += millisLater; } } - if (_latestTimestamp == null || currTstamp.isAfter(_latestTimestamp)) { - _latestTimestamp = currTstamp; - } + _movingTimestamp = currTstamp; } else { _timesIncomplete = true; -- 2.43.0