Create SegmentStatisticUpdater by passing Statistics (2/2).

This commit is contained in:
Dennis Guse
2025-10-28 18:19:14 +01:00
parent fff5f2d406
commit 0ad32f676c
6 changed files with 18 additions and 13 deletions
@@ -9,6 +9,7 @@ import java.util.Collection;
import java.util.List; import java.util.List;
import java.util.UUID; import java.util.UUID;
import de.dennisguse.opentracks.data.models.Statistics;
import de.dennisguse.opentracks.data.models.Track; import de.dennisguse.opentracks.data.models.Track;
//TODO Merge with TrackFilenameGeneratorTest whenever Junit5 gets available. //TODO Merge with TrackFilenameGeneratorTest whenever Junit5 gets available.
@@ -36,9 +37,9 @@ public class TrackFilenameGenerator2Test {
Track track = new Track(); Track track = new Track();
track.setName("Best Track"); track.setName("Best Track");
track.setUuid(UUID.fromString("f81d4fae-7dec-11d0-a765-00a0c91e6bf6")); track.setUuid(UUID.fromString("f81d4fae-7dec-11d0-a765-00a0c91e6bf6"));
track.getTrackStatistics().setStartTime(Instant.parse("2020-02-02T02:02:02Z")); track.setStatistics(new Statistics(Instant.parse("2020-02-02T02:02:02Z"), null, null, null, null, false, null, null, null, null, null));
// when // when
String filename = subject.format(track, TrackFileFormat.GPX); subject.format(track, TrackFileFormat.GPX);
} }
} }
@@ -17,6 +17,7 @@ import java.util.UUID;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.TimezoneRule; import de.dennisguse.opentracks.TimezoneRule;
import de.dennisguse.opentracks.data.models.Statistics;
import de.dennisguse.opentracks.data.models.Track; import de.dennisguse.opentracks.data.models.Track;
@RunWith(Parameterized.class) @RunWith(Parameterized.class)
@@ -50,7 +51,7 @@ public class TrackFilenameGeneratorTest {
Track track = new Track(); Track track = new Track();
track.setName("Best Track"); track.setName("Best Track");
track.setUuid(UUID.fromString("0000fee0-0000-1000-8000-00805f9b34fb")); track.setUuid(UUID.fromString("0000fee0-0000-1000-8000-00805f9b34fb"));
track.getTrackStatistics().setStartTime(Instant.parse("2020-02-02T02:02:02Z")); track.setStatistics(new Statistics(Instant.parse("2020-02-02T02:02:02Z"), null, null, null, null, false, null, null, null, null, null));
// when // when
String filename = subject.format(track, TrackFileFormat.GPX); String filename = subject.format(track, TrackFileFormat.GPX);
@@ -610,7 +610,7 @@ public class TrackRecordingServiceRecordingTest {
service.endCurrentTrack(); service.endCurrentTrack();
// then // then
assertEquals(new Statistics(Instant.parse(startTime), Instant.parse(stopTime), Duration.ofSeconds(4), Duration.ofSeconds(4), Distance.of(11113.275390625), false, Speed.of(1111.3275390625), new AltitudeExtremities(0.0, 0.0), new AltitudeGainLoss(0, 0), null, null) assertEquals(new Statistics(Instant.parse(startTime), Instant.parse(stopTime), Duration.ofSeconds(10), Duration.ofSeconds(10), Distance.of(11113.275390625), false, Speed.of(1111.3275146484375), new AltitudeExtremities(0.0, 0.0), new AltitudeGainLoss(0, 0), null, null)
, contentProviderUtils.getTrack(trackId).getStatistics()); , contentProviderUtils.getTrack(trackId).getStatistics());
@@ -142,8 +142,9 @@ public class Track {
return trackStatistics.getStatistics(); return trackStatistics.getStatistics();
} }
public Statistics setStatistics() { public void setStatistics(Statistics statistics) {
throw new RuntimeException("TODO"); //TODO Implementation is used for refactoring: this.statistics = statistics;
setTrackStatistics(new SegmentStatisticUpdater(statistics));
} }
@Deprecated @Deprecated
@@ -11,6 +11,7 @@ import java.util.UUID;
import java.util.regex.Matcher; import java.util.regex.Matcher;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import de.dennisguse.opentracks.data.models.Statistics;
import de.dennisguse.opentracks.data.models.Track; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.util.FileUtils; import de.dennisguse.opentracks.util.FileUtils;
@@ -91,7 +92,7 @@ public class TrackFilenameGenerator {
Track track = new Track(); Track track = new Track();
track.setName("Berlin"); track.setName("Berlin");
track.setUuid(UUID.fromString("f81d4fae-7dec-11d0-a765-00a0c91e6bf6")); track.setUuid(UUID.fromString("f81d4fae-7dec-11d0-a765-00a0c91e6bf6"));
track.getTrackStatistics().setStartTime(Instant.ofEpochMilli(0)); track.setStatistics(new Statistics(Instant.MIN, null, null, null, null, false, null, null, null, null, null));
return format(track, TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES); return format(track, TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES);
} }
@@ -8,6 +8,7 @@ import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import de.dennisguse.opentracks.data.models.Statistics;
import de.dennisguse.opentracks.data.models.Track; import de.dennisguse.opentracks.data.models.Track;
import de.dennisguse.opentracks.stats.SegmentStatisticUpdater; import de.dennisguse.opentracks.stats.SegmentStatisticUpdater;
@@ -35,9 +36,9 @@ public class AggregatedStatistics {
public void aggregate(@NonNull Track track) { public void aggregate(@NonNull Track track) {
String activityTypeLocalized = track.getActivityTypeLocalized(); String activityTypeLocalized = track.getActivityTypeLocalized();
if (dataMap.containsKey(activityTypeLocalized)) { if (dataMap.containsKey(activityTypeLocalized)) {
dataMap.get(activityTypeLocalized).add(track.getTrackStatistics()); dataMap.get(activityTypeLocalized).add(track.getStatistics());
} else { } else {
dataMap.put(activityTypeLocalized, new AggregatedStatistic(activityTypeLocalized, track.getTrackStatistics())); dataMap.put(activityTypeLocalized, new AggregatedStatistic(activityTypeLocalized, track.getStatistics()));
} }
} }
@@ -58,9 +59,9 @@ public class AggregatedStatistics {
private final SegmentStatisticUpdater trackStatistics; private final SegmentStatisticUpdater trackStatistics;
private int countTracks = 1; private int countTracks = 1;
public AggregatedStatistic(String activityTypeLocalized, SegmentStatisticUpdater trackStatistics) { public AggregatedStatistic(String activityTypeLocalized, Statistics trackStatistics) {
this.activityTypeLocalized = activityTypeLocalized; this.activityTypeLocalized = activityTypeLocalized;
this.trackStatistics = trackStatistics; this.trackStatistics = new SegmentStatisticUpdater(trackStatistics);
} }
public String getActivityTypeLocalized() { public String getActivityTypeLocalized() {
@@ -75,8 +76,8 @@ public class AggregatedStatistics {
return countTracks; return countTracks;
} }
void add(SegmentStatisticUpdater statistics) { void add(Statistics statistics) {
trackStatistics.merge(statistics); trackStatistics.merge(new SegmentStatisticUpdater(statistics));
countTracks++; countTracks++;
} }
} }