From be653b73eefaaae15146990f278078afdc635f6e Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Tue, 28 Oct 2025 08:31:43 +0100 Subject: [PATCH] Added value object: AltitudeExtremities. --- ...rackRecordingServiceNotificationManagerTest.java | 1 - .../opentracks/data/ContentProviderUtils.java | 2 +- .../opentracks/data/models/AltitudeExtremities.java | 4 ++++ .../opentracks/data/models/Statistics.java | 13 +++++-------- .../share/TrackShareSummaryGenerator.java | 6 +++--- .../opentracks/stats/SegmentStatisticUpdater.java | 12 +++++------- .../SettingsCustomLayoutEditAdapter.java | 1 - 7 files changed, 18 insertions(+), 21 deletions(-) create mode 100644 src/main/java/de/dennisguse/opentracks/data/models/AltitudeExtremities.java diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManagerTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManagerTest.java index 450f4c53a..97a03e161 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManagerTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceNotificationManagerTest.java @@ -57,7 +57,6 @@ public class TrackRecordingServiceNotificationManagerTest { null, null, null, - null, null )); when(notificationCompatBuilder.setOnlyAlertOnce(anyBoolean())) diff --git a/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java b/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java index c5aba8275..65601f833 100644 --- a/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java +++ b/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java @@ -339,7 +339,7 @@ public class ContentProviderUtils { values.put(TracksColumns.AVGMOVINGSPEED, trackStatistics.getAverageMovingSpeed().toMPS()); values.put(TracksColumns.MAXSPEED, trackStatistics.maxSpeed().toMPS()); - if (track.getTrackStatistics().hasAltitudeExtremities()) { + if (trackStatistics.altitudeExtremities() != null) { values.put(TracksColumns.MIN_ALTITUDE, trackStatistics.getMinAltitude()); values.put(TracksColumns.MAX_ALTITUDE, trackStatistics.getMaxAltitude()); } diff --git a/src/main/java/de/dennisguse/opentracks/data/models/AltitudeExtremities.java b/src/main/java/de/dennisguse/opentracks/data/models/AltitudeExtremities.java new file mode 100644 index 000000000..605e0a10f --- /dev/null +++ b/src/main/java/de/dennisguse/opentracks/data/models/AltitudeExtremities.java @@ -0,0 +1,4 @@ +package de.dennisguse.opentracks.data.models; + +public record AltitudeExtremities(double min_m, double max_m) { +} diff --git a/src/main/java/de/dennisguse/opentracks/data/models/Statistics.java b/src/main/java/de/dennisguse/opentracks/data/models/Statistics.java index 1b284f4a3..4ca059629 100644 --- a/src/main/java/de/dennisguse/opentracks/data/models/Statistics.java +++ b/src/main/java/de/dennisguse/opentracks/data/models/Statistics.java @@ -17,11 +17,8 @@ public record Statistics( boolean isIdle, //TODO Check if this is persisted; if not: remove Speed maxSpeed, - //TODO Create record for min/max altitude @Nullable - Double altitudeMin_m, - @Nullable - Double altitudeMax_m, + AltitudeExtremities altitudeExtremities, @Nullable AltitudeGainLoss altitudeGainLoss, @@ -49,14 +46,14 @@ public record Statistics( @Deprecated //TODO null should be return (need adjusting ContentPtoviderUtils.createContentValues() public double getMinAltitude() { - if (altitudeMin_m == null) return 0; - return altitudeMin_m; + if (altitudeExtremities == null) return 0; + return altitudeExtremities.min_m(); } @Deprecated //TODO null should be return (need adjusting ContentPtoviderUtils.createContentValues() public double getMaxAltitude() { - if (altitudeMax_m == null) return 0; - return altitudeMax_m; + if (altitudeExtremities == null) return 0; + return altitudeExtremities.max_m(); } } diff --git a/src/main/java/de/dennisguse/opentracks/share/TrackShareSummaryGenerator.java b/src/main/java/de/dennisguse/opentracks/share/TrackShareSummaryGenerator.java index 1699cac82..355d28956 100644 --- a/src/main/java/de/dennisguse/opentracks/share/TrackShareSummaryGenerator.java +++ b/src/main/java/de/dennisguse/opentracks/share/TrackShareSummaryGenerator.java @@ -109,9 +109,9 @@ public class TrackShareSummaryGenerator { writePace(stats.maxSpeed(), builder, R.string.description_fastest_pace_in_minute); // Min and Max altitude - if (stats.altitudeMax_m() != null & stats.altitudeMin_m() != null) { - writeAltitude(stats.altitudeMax_m(), builder, R.string.description_max_altitude); - writeAltitude(stats.altitudeMin_m(), builder, R.string.description_min_altitude); + if (stats.altitudeExtremities() != null) { + writeAltitude(stats.altitudeExtremities().max_m(), builder, R.string.description_max_altitude); + writeAltitude(stats.altitudeExtremities().min_m(), builder, R.string.description_min_altitude); } // Altitude gain & loss diff --git a/src/main/java/de/dennisguse/opentracks/stats/SegmentStatisticUpdater.java b/src/main/java/de/dennisguse/opentracks/stats/SegmentStatisticUpdater.java index 0b394ae9f..1a719131c 100644 --- a/src/main/java/de/dennisguse/opentracks/stats/SegmentStatisticUpdater.java +++ b/src/main/java/de/dennisguse/opentracks/stats/SegmentStatisticUpdater.java @@ -24,6 +24,7 @@ import java.time.Duration; import java.time.Instant; import de.dennisguse.opentracks.data.models.Altitude; +import de.dennisguse.opentracks.data.models.AltitudeExtremities; import de.dennisguse.opentracks.data.models.AltitudeGainLoss; import de.dennisguse.opentracks.data.models.Distance; import de.dennisguse.opentracks.data.models.HeartRate; @@ -85,7 +86,9 @@ public class SegmentStatisticUpdater { totalTime = statistics.totalTime(); movingTime = statistics.movingTime(); maxSpeed = statistics.maxSpeed(); - altitudeExtremities.set(statistics.altitudeMin_m(), statistics.altitudeMax_m()); + if (statistics.altitudeExtremities() != null) { + altitudeExtremities.set(statistics.altitudeExtremities().min_m(), statistics.altitudeExtremities().max_m()); + } if (statistics.altitudeGainLoss() != null) { totalAltitudeGain_m = statistics.altitudeGainLoss().gain_m(); totalAltitudeLoss_m = statistics.altitudeGainLoss().loss_m(); @@ -217,8 +220,7 @@ public class SegmentStatisticUpdater { totalDistance, isIdle, getMaxSpeed(), - altitudeExtremities.hasData() ? altitudeExtremities.getMin() : null, - altitudeExtremities.hasData() ? altitudeExtremities.getMax() : null, + altitudeExtremities.hasData() ? new AltitudeExtremities(altitudeExtremities.getMin(), altitudeExtremities.getMax()) : null, totalAltitudeGain_m != null && totalAltitudeLoss_m != null ? new AltitudeGainLoss(totalAltitudeGain_m, totalAltitudeLoss_m) : null, avgHeartRate, avgPower @@ -343,10 +345,6 @@ public class SegmentStatisticUpdater { this.maxSpeed = maxSpeed; } - public boolean hasAltitudeExtremities() { - return altitudeExtremities.hasData(); - } - public double getMinAltitude() { return altitudeExtremities.getMin(); } 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 138c866bb..a1a8f66ee 100644 --- a/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/SettingsCustomLayoutEditAdapter.java +++ b/src/main/java/de/dennisguse/opentracks/ui/customRecordingLayout/SettingsCustomLayoutEditAdapter.java @@ -49,7 +49,6 @@ public class SettingsCustomLayoutEditAdapter extends RecyclerView.Adapter