From bc857faa180f1ebf5d1409206d3628ad410c40e6 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Thu, 28 Sep 2023 19:57:15 +0200 Subject: [PATCH] Cleanup: ChartPoint is a record. --- .../opentracks/chart/ChartPointTest.java | 32 ++--- .../chart/ChartValueSeriesTest.java | 32 +++-- .../opentracks/chart/ChartFragment.java | 2 +- .../opentracks/chart/ChartPoint.java | 109 ++++++------------ .../opentracks/chart/ChartView.java | 16 +-- 5 files changed, 82 insertions(+), 109 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/chart/ChartPointTest.java b/src/androidTest/java/de/dennisguse/opentracks/chart/ChartPointTest.java index 217802f58..46dead9d5 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/chart/ChartPointTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/chart/ChartPointTest.java @@ -27,10 +27,10 @@ public class ChartPointTest { statistics.setTotalTime(Duration.ofSeconds(1000)); // when - ChartPoint point = new ChartPoint(statistics, TrackStubUtils.createDefaultTrackPoint(), Speed.of(0), false, UnitSystem.IMPERIAL_FEET); + ChartPoint point = ChartPoint.create(statistics, TrackStubUtils.createDefaultTrackPoint(), Speed.of(0), false, UnitSystem.IMPERIAL_FEET); // then - assertEquals(1000000, (long) point.getTimeOrDistance()); + assertEquals(1000000, (long) point.timeOrDistance()); } @Test @@ -40,10 +40,10 @@ public class ChartPointTest { statistics.setTotalDistance(Distance.of(1000)); // when - ChartPoint point = new ChartPoint(statistics, TrackStubUtils.createDefaultTrackPoint(), Speed.of(0), true, UnitSystem.METRIC); + ChartPoint point = ChartPoint.create(statistics, TrackStubUtils.createDefaultTrackPoint(), Speed.of(0), true, UnitSystem.METRIC); // then - assertEquals(1, (long) point.getTimeOrDistance()); + assertEquals(1, (long) point.timeOrDistance()); } @Test @@ -54,12 +54,12 @@ public class ChartPointTest { .setAltitude(Altitude.EGM2008.of(50)); // when - ChartPoint point = new ChartPoint(statistics, trackPoint, Speed.of(10), false, UnitSystem.METRIC); + ChartPoint point = ChartPoint.create(statistics, trackPoint, Speed.of(10), false, UnitSystem.METRIC); // then - assertEquals(50, point.getAltitude(), 0.01); - assertEquals(36, point.getSpeed(), 0.01); - assertEquals(1.66, point.getPace(), 0.01); + assertEquals(50, point.altitude(), 0.01); + assertEquals(36, point.speed(), 0.01); + assertEquals(1.66, point.pace(), 0.01); } @Test @@ -69,12 +69,12 @@ public class ChartPointTest { TrackPoint trackPoint = TrackStubUtils.createDefaultTrackPoint() .setAltitude(Altitude.EGM2008.of(50)); // when - ChartPoint point = new ChartPoint(statistics, trackPoint, Speed.of(10), false, UnitSystem.METRIC); + ChartPoint point = ChartPoint.create(statistics, trackPoint, Speed.of(10), false, UnitSystem.METRIC); // then - assertNull(point.getHeartRate()); - assertNull(point.getCadence()); - assertNull(point.getPower()); + assertNull(point.heartRate()); + assertNull(point.cadence()); + assertNull(point.power()); } @Test @@ -89,11 +89,11 @@ public class ChartPointTest { TrackStatistics statistics = new TrackStatistics(); // when - ChartPoint point = new ChartPoint(statistics, trackPoint, Speed.of(10), false, UnitSystem.METRIC); + ChartPoint point = ChartPoint.create(statistics, trackPoint, Speed.of(10), false, UnitSystem.METRIC); // then - assertEquals(100.0, point.getHeartRate(), 0.01); - assertEquals(101.0, point.getCadence(), 0.01); - assertEquals(102.0, point.getPower(), 0.01); + assertEquals(100.0, point.heartRate(), 0.01); + assertEquals(101.0, point.cadence(), 0.01); + assertEquals(102.0, point.power(), 0.01); } } \ No newline at end of file diff --git a/src/androidTest/java/de/dennisguse/opentracks/chart/ChartValueSeriesTest.java b/src/androidTest/java/de/dennisguse/opentracks/chart/ChartValueSeriesTest.java index 3930c2a4c..2c4d880fe 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/chart/ChartValueSeriesTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/chart/ChartValueSeriesTest.java @@ -54,7 +54,7 @@ public class ChartValueSeriesTest { 18) { @Override Double extractDataFromChartPoint(@NonNull ChartPoint chartPoint) { - return chartPoint.getAltitude(); + return chartPoint.altitude(); } @Override @@ -80,9 +80,9 @@ public class ChartValueSeriesTest { @Test public void testVerySmallUpdates() { - series.update(new ChartPoint(1f)); - series.update(new ChartPoint(2f)); - series.update(new ChartPoint(3f)); + series.update(withAltitude(1f)); + series.update(withAltitude(2f)); + series.update(withAltitude(3f)); series.updateDimension(); assertEquals(1, series.getInterval()); assertEquals(1, series.getMinMarkerValue()); @@ -91,8 +91,8 @@ public class ChartValueSeriesTest { @Test public void testSmallUpdates() { - series.update(new ChartPoint(0)); - series.update(new ChartPoint(10)); + series.update(withAltitude(0)); + series.update(withAltitude(10)); series.updateDimension(); assertEquals(100, series.getInterval()); assertEquals(0, series.getMinMarkerValue()); @@ -101,8 +101,8 @@ public class ChartValueSeriesTest { @Test public void testBigUpdates() { - series.update(new ChartPoint(0)); - series.update(new ChartPoint(901)); + series.update(withAltitude(0)); + series.update(withAltitude(901)); series.updateDimension(); assertEquals(1000, series.getInterval()); assertEquals(0, series.getMinMarkerValue()); @@ -111,11 +111,23 @@ public class ChartValueSeriesTest { @Test public void testNotZeroBasedUpdates() { - series.update(new ChartPoint(220)); - series.update(new ChartPoint(250)); + series.update(withAltitude(220)); + series.update(withAltitude(250)); series.updateDimension(); assertEquals(100, series.getInterval()); assertEquals(200, series.getMinMarkerValue()); assertEquals(700, series.getMaxMarkerValue()); } + + static ChartPoint withAltitude(double altitude) { + return new ChartPoint( + 0, + altitude, + null, + null, + null, + null, + null + ); + } } diff --git a/src/main/java/de/dennisguse/opentracks/chart/ChartFragment.java b/src/main/java/de/dennisguse/opentracks/chart/ChartFragment.java index bea47c7fe..a847f8a26 100644 --- a/src/main/java/de/dennisguse/opentracks/chart/ChartFragment.java +++ b/src/main/java/de/dennisguse/opentracks/chart/ChartFragment.java @@ -188,7 +188,7 @@ public class ChartFragment extends Fragment implements TrackDataHub.Listener { public void onSampledInTrackPoint(@NonNull TrackPoint trackPoint, @NonNull TrackStatistics trackStatistics) { if (isResumed()) { - ChartPoint point = new ChartPoint(trackStatistics, trackPoint, trackPoint.getSpeed(), chartByDistance, viewBinding.chartView.getUnitSystem()); + ChartPoint point = ChartPoint.create(trackStatistics, trackPoint, trackPoint.getSpeed(), chartByDistance, viewBinding.chartView.getUnitSystem()); pendingPoints.add(point); } } diff --git a/src/main/java/de/dennisguse/opentracks/chart/ChartPoint.java b/src/main/java/de/dennisguse/opentracks/chart/ChartPoint.java index af44edb12..9ceb9003e 100644 --- a/src/main/java/de/dennisguse/opentracks/chart/ChartPoint.java +++ b/src/main/java/de/dennisguse/opentracks/chart/ChartPoint.java @@ -1,7 +1,6 @@ package de.dennisguse.opentracks.chart; import androidx.annotation.NonNull; -import androidx.annotation.VisibleForTesting; import de.dennisguse.opentracks.data.models.Distance; import de.dennisguse.opentracks.data.models.Speed; @@ -9,81 +8,43 @@ import de.dennisguse.opentracks.data.models.TrackPoint; import de.dennisguse.opentracks.settings.UnitSystem; import de.dennisguse.opentracks.stats.TrackStatistics; -public class ChartPoint { - //X-axis - private double timeOrDistance; +public record ChartPoint( + //X-axis + double timeOrDistance, - //Y-axis - private Double altitude; - private Double speed; - private Double pace; - private Double heartRate; - private Double cadence; - private Double power; + //Y-axis + Double altitude, + Double speed, + Double pace, + Double heartRate, + Double cadence, + Double power +) { - @Deprecated - @VisibleForTesting - ChartPoint(double altitude) { - this.altitude = altitude; - } - public ChartPoint(@NonNull TrackStatistics trackStatistics, @NonNull TrackPoint trackPoint, Speed smoothedSpeed, boolean chartByDistance, UnitSystem unitSystem) { - if (chartByDistance) { - timeOrDistance = trackStatistics.getTotalDistance().toKM_Miles(unitSystem); - } else { - timeOrDistance = trackStatistics.getTotalTime().toMillis(); - } - - if (trackPoint.hasAltitude()) { - altitude = Distance.of(trackPoint.getAltitude().toM()).toM_FT(unitSystem); - } - - if (smoothedSpeed != null) { - speed = smoothedSpeed.to(unitSystem); - pace = smoothedSpeed.toPace(unitSystem).toSeconds() / 60d; - } - if (trackPoint.hasHeartRate()) { - heartRate = (double) trackPoint.getHeartRate().getBPM(); - } - if (trackPoint.hasCadence()) { - cadence = (double) trackPoint.getCadence().getRPM(); - } - if (trackPoint.hasPower()) { - power = (double) trackPoint.getPower().getW(); - } - } - - public double getTimeOrDistance() { - return timeOrDistance; - } - - public Double getAltitude() { - return altitude; - } - - public Double getSpeed() { - return speed; - } - - public Double getPace() { - return pace; - } - - public Double getHeartRate() { - return heartRate; - } - - public Double getCadence() { - return cadence; - } - - public Double getPower() { - return power; - } - - @NonNull - @Override - public String toString() { - return "ChartPoint{" + "timeOrDistance=" + timeOrDistance + '}'; + public static ChartPoint create(@NonNull TrackStatistics trackStatistics, @NonNull TrackPoint trackPoint, Speed smoothedSpeed, boolean chartByDistance, UnitSystem unitSystem) { + return new ChartPoint( + chartByDistance + ? trackStatistics.getTotalDistance().toKM_Miles(unitSystem) + : trackStatistics.getTotalTime().toMillis(), + trackPoint.hasAltitude() + ? Distance.of(trackPoint.getAltitude().toM()).toM_FT(unitSystem) + : null, + smoothedSpeed != null + ? smoothedSpeed.to(unitSystem) + : null, + smoothedSpeed != null + ? smoothedSpeed.toPace(unitSystem).toSeconds() / 60d + : null, + trackPoint.hasHeartRate() + ? (double) trackPoint.getHeartRate().getBPM() + : null, + trackPoint.hasCadence() + ? (double) trackPoint.getCadence().getRPM() + : null, + trackPoint.hasPower() + ? (double) trackPoint.getPower().getW() + : null + ); } } diff --git a/src/main/java/de/dennisguse/opentracks/chart/ChartView.java b/src/main/java/de/dennisguse/opentracks/chart/ChartView.java index a9ab2ce08..b6430d34c 100644 --- a/src/main/java/de/dennisguse/opentracks/chart/ChartView.java +++ b/src/main/java/de/dennisguse/opentracks/chart/ChartView.java @@ -210,7 +210,7 @@ public class ChartView extends View { fontSizeMedium) { @Override protected Double extractDataFromChartPoint(@NonNull ChartPoint chartPoint) { - return chartPoint.getAltitude(); + return chartPoint.altitude(); } @Override @@ -232,7 +232,7 @@ public class ChartView extends View { fontSizeMedium) { @Override protected Double extractDataFromChartPoint(@NonNull ChartPoint chartPoint) { - return chartPoint.getSpeed(); + return chartPoint.speed(); } @Override @@ -255,7 +255,7 @@ public class ChartView extends View { fontSizeMedium) { @Override protected Double extractDataFromChartPoint(@NonNull ChartPoint chartPoint) { - return chartPoint.getPace(); + return chartPoint.pace(); } @Override @@ -278,7 +278,7 @@ public class ChartView extends View { fontSizeMedium) { @Override protected Double extractDataFromChartPoint(@NonNull ChartPoint chartPoint) { - return chartPoint.getHeartRate(); + return chartPoint.heartRate(); } @Override @@ -300,7 +300,7 @@ public class ChartView extends View { fontSizeMedium) { @Override protected Double extractDataFromChartPoint(@NonNull ChartPoint chartPoint) { - return chartPoint.getCadence(); + return chartPoint.cadence(); } @Override @@ -321,7 +321,7 @@ public class ChartView extends View { fontSizeMedium) { @Override protected Double extractDataFromChartPoint(@NonNull ChartPoint chartPoint) { - return chartPoint.getPower(); + return chartPoint.power(); } @Override @@ -425,7 +425,7 @@ public class ChartView extends View { synchronized (chartPoints) { chartPoints.addAll(dataPoints); for (ChartPoint dataPoint : dataPoints) { - xExtremityMonitor.update(dataPoint.getTimeOrDistance()); + xExtremityMonitor.update(dataPoint.timeOrDistance()); for (ChartValueSeries i : seriesList) { i.update(dataPoint); } @@ -887,7 +887,7 @@ public class ChartView extends View { } double value = series.extractDataFromChartPoint(point); - int x = getX(point.getTimeOrDistance()); + int x = getX(point.timeOrDistance()); int y = getY(series, value); // start from lower left corner