From 7791ff8659f8040cee02540b560235077c494685 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sat, 1 Nov 2025 17:24:03 +0100 Subject: [PATCH] Cleanup: Track simplify constructors. --- .../io/file/TrackFilenameGenerator2Test.java | 3 +- .../io/file/TrackFilenameGeneratorTest.java | 3 +- .../IntervalStatisticsUpdaterTest.java | 8 ++--- .../opentracks/data/ContentProviderUtils.java | 35 +++++++++---------- .../opentracks/data/models/Track.java | 2 +- .../io/file/TrackFilenameGenerator.java | 3 +- .../services/TrackRecordingManager.java | 6 ++-- .../SettingsCustomLayoutEditAdapter.java | 2 +- 8 files changed, 29 insertions(+), 33 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/TrackFilenameGenerator2Test.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/TrackFilenameGenerator2Test.java index bf53c99bb..3453e083b 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/TrackFilenameGenerator2Test.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/TrackFilenameGenerator2Test.java @@ -34,10 +34,9 @@ public class TrackFilenameGenerator2Test { @Test(expected = TrackFilenameGenerator.TemplateInvalidException.class) public void testFilenameTemplate() { // given - Track track = new Track(); + Track track = new Track(new Statistics(Instant.parse("2020-02-02T02:02:02Z"), null, null, null, null, null, null, null, null, null)); track.setName("Best Track"); track.setUuid(UUID.fromString("f81d4fae-7dec-11d0-a765-00a0c91e6bf6")); - track.setStatistics(new Statistics(Instant.parse("2020-02-02T02:02:02Z"), null, null, null, null, null, null, null, null, null)); // when subject.format(track, TrackFileFormat.GPX); diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/TrackFilenameGeneratorTest.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/TrackFilenameGeneratorTest.java index 84d675160..bbe28b40a 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/TrackFilenameGeneratorTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/TrackFilenameGeneratorTest.java @@ -48,10 +48,9 @@ public class TrackFilenameGeneratorTest { @Test public void testFilenameTemplate() { // given - Track track = new Track(); + Track track = new Track(new Statistics(Instant.parse("2020-02-02T02:02:02Z"), null, null, null, null, null, null, null, null, null)); track.setName("Best Track"); track.setUuid(UUID.fromString("0000fee0-0000-1000-8000-00805f9b34fb")); - track.setStatistics(new Statistics(Instant.parse("2020-02-02T02:02:02Z"), null, null, null, null, null, null, null, null, null)); // when String filename = subject.format(track, TrackFileFormat.GPX); diff --git a/src/androidTest/java/de/dennisguse/opentracks/ui/intervals/IntervalStatisticsUpdaterTest.java b/src/androidTest/java/de/dennisguse/opentracks/ui/intervals/IntervalStatisticsUpdaterTest.java index f06502185..71e618ce5 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/ui/intervals/IntervalStatisticsUpdaterTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/ui/intervals/IntervalStatisticsUpdaterTest.java @@ -99,9 +99,6 @@ public class IntervalStatisticsUpdaterTest { // given float distanceInterval = 1000f; int numberOfPoints = 10000; - Track dummyTrack = new Track(); - dummyTrack.setId(new Track.Id(System.currentTimeMillis())); - dummyTrack.setName("Dummy Track Without Elevation Loss"); TrackStatisticsUpdater trackStatisticsUpdater = new TrackStatisticsUpdater(); ArrayList trackPoints = new ArrayList<>(); @@ -110,7 +107,10 @@ public class IntervalStatisticsUpdaterTest { } trackStatisticsUpdater.addTrackPoints(trackPoints); - dummyTrack.setStatistics(trackStatisticsUpdater.getTrackStatistics()); + Track dummyTrack = new Track(trackStatisticsUpdater.getTrackStatistics()); + dummyTrack.setId(new Track.Id(System.currentTimeMillis())); + dummyTrack.setName("Dummy Track Without Elevation Loss"); + Pair> trackWithStats = new Pair<>(dummyTrack, trackPoints); // when and then diff --git a/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java b/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java index 7084bdb24..46e55c96f 100644 --- a/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java +++ b/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java @@ -118,7 +118,23 @@ public class ContentProviderUtils { int altitudeGainIndex = cursor.getColumnIndexOrThrow(TracksColumns.ALTITUDE_GAIN); int altitudeLossIndex = cursor.getColumnIndexOrThrow(TracksColumns.ALTITUDE_LOSS); - Track track = new Track(ZoneOffset.ofTotalSeconds(cursor.getInt(startTimeOffsetIndex))); + Statistics trackStatistics = new Statistics( + cursor.isNull(startTimeIndex) ? null : Instant.ofEpochMilli(cursor.getLong(startTimeIndex)), + cursor.isNull(stopTimeIndex) ? null : Instant.ofEpochMilli(cursor.getLong(stopTimeIndex)), + cursor.isNull(totalTimeIndex) ? null : Duration.ofMillis(cursor.getLong(totalTimeIndex)), + cursor.isNull(movingTimeIndex) ? null : Duration.ofMillis(cursor.getLong(movingTimeIndex)), + + cursor.isNull(totalDistanceIndex) ? null : Distance.of(cursor.getFloat(totalDistanceIndex)), + + cursor.isNull(maxSpeedIndex) ? null : Speed.of(cursor.getFloat(maxSpeedIndex)), + cursor.isNull(minAltitudeIndex) || cursor.isNull(maxAltitudeIndex) ? null : new AltitudeExtremities(cursor.getFloat(minAltitudeIndex), cursor.getFloat(maxAltitudeIndex)), + cursor.isNull(altitudeGainIndex) || cursor.isNull(altitudeLossIndex) ? null : new AltitudeGainLoss(cursor.getFloat(altitudeGainIndex), cursor.getFloat(altitudeLossIndex)), + + null, + null + ); + + Track track = new Track(ZoneOffset.ofTotalSeconds(cursor.getInt(startTimeOffsetIndex)), trackStatistics); if (!cursor.isNull(idIndex)) { track.setId(new Track.Id(cursor.getLong(idIndex))); } @@ -138,23 +154,6 @@ public class ContentProviderUtils { track.setActivityTypeLocalized(cursor.getString(activityTypeLocalizedIndex)); } - Statistics trackStatistics = new Statistics( - cursor.isNull(startTimeIndex) ? null : Instant.ofEpochMilli(cursor.getLong(startTimeIndex)), - cursor.isNull(stopTimeIndex) ? null : Instant.ofEpochMilli(cursor.getLong(stopTimeIndex)), - cursor.isNull(totalTimeIndex) ? null : Duration.ofMillis(cursor.getLong(totalTimeIndex)), - cursor.isNull(movingTimeIndex) ? null : Duration.ofMillis(cursor.getLong(movingTimeIndex)), - - cursor.isNull(totalDistanceIndex) ? null : Distance.of(cursor.getFloat(totalDistanceIndex)), - - cursor.isNull(maxSpeedIndex) ? null : Speed.of(cursor.getFloat(maxSpeedIndex)), - cursor.isNull(minAltitudeIndex) || cursor.isNull(maxAltitudeIndex) ? null : new AltitudeExtremities(cursor.getFloat(minAltitudeIndex), cursor.getFloat(maxAltitudeIndex)), - cursor.isNull(altitudeGainIndex) || cursor.isNull(altitudeLossIndex) ? null : new AltitudeGainLoss(cursor.getFloat(altitudeGainIndex), cursor.getFloat(altitudeLossIndex)), - - null, - null - ); - - track.setStatistics(trackStatistics); return track; } diff --git a/src/main/java/de/dennisguse/opentracks/data/models/Track.java b/src/main/java/de/dennisguse/opentracks/data/models/Track.java index 55b36b43f..5fb13f762 100644 --- a/src/main/java/de/dennisguse/opentracks/data/models/Track.java +++ b/src/main/java/de/dennisguse/opentracks/data/models/Track.java @@ -48,7 +48,7 @@ public class Track { private ActivityType activityType; - //TODO Move to Statistics? + @NonNull private ZoneOffset zoneOffset; @NonNull diff --git a/src/main/java/de/dennisguse/opentracks/io/file/TrackFilenameGenerator.java b/src/main/java/de/dennisguse/opentracks/io/file/TrackFilenameGenerator.java index 7da35dff0..111053260 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/TrackFilenameGenerator.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/TrackFilenameGenerator.java @@ -89,10 +89,9 @@ public class TrackFilenameGenerator { } public String getExample() { - Track track = new Track(); + Track track = new Track(new Statistics(Instant.EPOCH, null, null, null, null, null, null, null, null, null)); track.setName("Berlin"); track.setUuid(UUID.fromString("f81d4fae-7dec-11d0-a765-00a0c91e6bf6")); - track.setStatistics(new Statistics(Instant.EPOCH, null, null, null, null, null, null, null, null, null)); return format(track, TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES); } diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java index e674c610d..bb76fb8b6 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java @@ -69,12 +69,12 @@ public class TrackRecordingManager implements SharedPreferences.OnSharedPreferen TrackPoint segmentStartTrackPoint = trackPointCreator.createSegmentStartManual(); ZoneOffset zoneOffset = ZoneOffset.systemDefault().getRules().getOffset(segmentStartTrackPoint.getTime()); - Track track = new Track(zoneOffset); + trackStatisticsUpdater = new TrackStatisticsUpdater(); + + Track track = new Track(zoneOffset, trackStatisticsUpdater.getTrackStatistics()); trackId = contentProviderUtils.insertTrack(track); track.setId(trackId); - trackStatisticsUpdater = new TrackStatisticsUpdater(); - onNewTrackPoint(segmentStartTrackPoint); String activityTypeLocalized = PreferencesUtils.getDefaultActivityTypeLocalized(); diff --git a/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/SettingsCustomLayoutEditAdapter.java b/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/SettingsCustomLayoutEditAdapter.java index 5f8dab3ca..6632c2eb6 100644 --- a/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/SettingsCustomLayoutEditAdapter.java +++ b/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/SettingsCustomLayoutEditAdapter.java @@ -54,7 +54,7 @@ public class SettingsCustomLayoutEditAdapter extends RecyclerView.Adapter