Cleanup: ChartPoint is a record.

This commit is contained in:
Dennis Guse
2023-09-28 19:57:15 +02:00
parent e9b02df631
commit bc857faa18
5 changed files with 82 additions and 109 deletions
@@ -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);
}
}
@@ -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
);
}
}
@@ -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