IntervalStatisticsUpdater now uses Statistics.

This commit is contained in:
Dennis Guse
2025-10-29 08:43:49 +01:00
parent 3222a0c497
commit 7521f906ed
3 changed files with 29 additions and 23 deletions
@@ -361,10 +361,6 @@ public class SegmentStatisticUpdater {
}
}
public boolean hasTotalAltitudeGain() {
return totalAltitudeGain_m != null;
}
@Nullable
public Float getTotalAltitudeGain() {
return totalAltitudeGain_m;
@@ -79,6 +79,7 @@ public class TrackStatisticsUpdater {
}
//TODO Return Statistic?
@Deprecated
public SegmentStatisticUpdater getTrackStatistics() {
// Take a snapshot - we don't want anyone messing with our trackStatistics
SegmentStatisticUpdater stats = new SegmentStatisticUpdater(segmentStatisticUpdater);
@@ -86,6 +87,10 @@ public class TrackStatisticsUpdater {
return stats;
}
public Statistics getStatistics() {
return getTrackStatistics().getStatistics();
}
public Statistics getCurrentSegment() {
return currentSegment.getStatistics();
}
@@ -11,8 +11,8 @@ import de.dennisguse.opentracks.data.models.Distance;
import de.dennisguse.opentracks.data.models.HeartRate;
import de.dennisguse.opentracks.data.models.Power;
import de.dennisguse.opentracks.data.models.Speed;
import de.dennisguse.opentracks.data.models.Statistics;
import de.dennisguse.opentracks.data.models.TrackPoint;
import de.dennisguse.opentracks.stats.SegmentStatisticUpdater;
import de.dennisguse.opentracks.stats.TrackStatisticsUpdater;
public class IntervalStatisticsUpdater {
@@ -46,8 +46,8 @@ public class IntervalStatisticsUpdater {
trackPoint = trackPointIterator.next();
trackStatisticsUpdater.addTrackPoint(trackPoint);
if (trackStatisticsUpdater.getTrackStatistics().getTotalDistance().plus(interval.distance).greaterOrEqualThan(distanceInterval)) {
interval.add(trackStatisticsUpdater.getTrackStatistics(), trackPoint);
if (trackStatisticsUpdater.getStatistics().totalDistance().plus(interval.distance).greaterOrEqualThan(distanceInterval)) {
interval.add(trackStatisticsUpdater.getStatistics(), trackPoint);
double adjustFactor = distanceInterval.dividedBy(interval.distance);
Interval adjustedInterval = new Interval(interval, adjustFactor);
@@ -66,9 +66,9 @@ public class IntervalStatisticsUpdater {
}
if (newIntervalAdded) {
lastInterval.add(trackStatisticsUpdater.getTrackStatistics(), null);
lastInterval.add(trackStatisticsUpdater.getStatistics(), null);
} else {
lastInterval.set(trackStatisticsUpdater.getTrackStatistics());
lastInterval.set(trackStatisticsUpdater.getStatistics());
}
return trackPoint != null ? trackPoint.getId() : null;
@@ -98,6 +98,7 @@ public class IntervalStatisticsUpdater {
return null;
}
//TODO Could be replaced with Statistics?
public static class Interval {
private Distance distance = Distance.of(0);
private Duration time = Duration.ofSeconds(0);
@@ -172,13 +173,15 @@ public class IntervalStatisticsUpdater {
return avgPower;
}
private void add(SegmentStatisticUpdater trackStatistics, @Nullable TrackPoint lastTrackPoint) {
distance = distance.plus(trackStatistics.getTotalDistance());
time = time.plus(trackStatistics.getTotalTime());
gain_m = trackStatistics.hasTotalAltitudeGain() ? trackStatistics.getTotalAltitudeGain() : gain_m;
loss_m = trackStatistics.hasTotalAltitudeLoss() ? trackStatistics.getTotalAltitudeLoss() : loss_m;
avgHeartRate = trackStatistics.getAverageHeartRate();
avgPower = trackStatistics.getAveragePower();
private void add(Statistics trackStatistics, @Nullable TrackPoint lastTrackPoint) {
distance = distance.plus(trackStatistics.totalDistance());
time = time.plus(trackStatistics.totalTime());
if (trackStatistics.altitudeGainLoss() != null) {
gain_m = trackStatistics.altitudeGainLoss().gain_m();
loss_m = trackStatistics.altitudeGainLoss().loss_m();
}
avgHeartRate = trackStatistics.avgHeartRate();
avgPower = trackStatistics.avgPower();
if (lastTrackPoint == null) {
return;
}
@@ -190,13 +193,15 @@ public class IntervalStatisticsUpdater {
}
}
private void set(SegmentStatisticUpdater trackStatistics) {
distance = trackStatistics.getTotalDistance();
time = trackStatistics.getTotalTime();
gain_m = trackStatistics.hasTotalAltitudeGain() ? trackStatistics.getTotalAltitudeGain() : gain_m;
loss_m = trackStatistics.hasTotalAltitudeLoss() ? trackStatistics.getTotalAltitudeLoss() : loss_m;
avgHeartRate = trackStatistics.getAverageHeartRate();
avgPower = trackStatistics.getAveragePower();
private void set(Statistics trackStatistics) {
distance = trackStatistics.totalDistance();
time = trackStatistics.totalTime();
if (trackStatistics.altitudeGainLoss() != null) {
gain_m = trackStatistics.altitudeGainLoss().gain_m();
loss_m = trackStatistics.altitudeGainLoss().loss_m();
}
avgHeartRate = trackStatistics.avgHeartRate();
avgPower = trackStatistics.avgPower();
}
}
}