Cleanup: SpeedFormatter doesn't support decimal places.

This commit is contained in:
Dennis Guse
2025-10-16 22:40:10 +02:00
parent d0b3f45151
commit e9d1080e5d
9 changed files with 33 additions and 49 deletions
@@ -21,7 +21,7 @@ public class DistanceFormatterTest {
@Test
public void testFormatDistance_metric() {
DistanceFormatter formatter = DistanceFormatter.Builder()
.setDecimalCount(2)
.setDecimalPlaces(2)
.setUnit(UnitSystem.METRIC)
.build(context);
@@ -34,7 +34,7 @@ public class DistanceFormatterTest {
@Test
public void testFormatDistance_imperial() {
DistanceFormatter formatter = DistanceFormatter.Builder()
.setDecimalCount(2)
.setDecimalPlaces(2)
.setUnit(UnitSystem.IMPERIAL_FEET)
.build(context);
@@ -47,7 +47,7 @@ public class DistanceFormatterTest {
@Test
public void testFormatDistance_nautical() {
DistanceFormatter formatter = DistanceFormatter.Builder()
.setDecimalCount(2)
.setDecimalPlaces(2)
.setUnit(UnitSystem.NAUTICAL_IMPERIAL)
.build(context);
@@ -21,7 +21,6 @@ public class SpeedFormatterTest {
@Test
public void testGetSpeedParts_pace_metric() {
SpeedFormatter formatter = SpeedFormatter.Builder()
.setDecimalCount(2)
.setUnit(UnitSystem.METRIC)
.setReportSpeedOrPace(false)
.build(context);
@@ -35,7 +34,6 @@ public class SpeedFormatterTest {
@Test
public void testGetSpeedParts_pace_imperial() {
SpeedFormatter formatter = SpeedFormatter.Builder()
.setDecimalCount(2)
.setUnit(UnitSystem.IMPERIAL_FEET)
.setReportSpeedOrPace(false)
.build(context);
@@ -47,7 +45,6 @@ public class SpeedFormatterTest {
@Test
public void testGetSpeedParts_pace_nautical() {
SpeedFormatter formatter = SpeedFormatter.Builder()
.setDecimalCount(2)
.setUnit(UnitSystem.NAUTICAL_IMPERIAL)
.setReportSpeedOrPace(false)
.build(context);
@@ -59,7 +56,6 @@ public class SpeedFormatterTest {
@Test
public void testGetSpeedParts_speed_metric() {
SpeedFormatter formatter = SpeedFormatter.Builder()
.setDecimalCount(2)
.setUnit(UnitSystem.METRIC)
.setReportSpeedOrPace(true)
.build(context);
@@ -71,7 +67,6 @@ public class SpeedFormatterTest {
@Test
public void testGetSpeedParts_speed_imperial() {
SpeedFormatter formatter = SpeedFormatter.Builder()
.setDecimalCount(2)
.setUnit(UnitSystem.IMPERIAL_FEET)
.setReportSpeedOrPace(true)
.build(context);
@@ -83,7 +78,6 @@ public class SpeedFormatterTest {
@Test
public void testGetSpeedParts_speed_nautical() {
SpeedFormatter formatter = SpeedFormatter.Builder()
.setDecimalCount(2)
.setUnit(UnitSystem.NAUTICAL_IMPERIAL)
.setReportSpeedOrPace(true)
.build(context);
@@ -95,7 +89,6 @@ public class SpeedFormatterTest {
@Test
public void testFormatSpeed() {
SpeedFormatter formatter = SpeedFormatter.Builder()
.setDecimalCount(2)
.setUnit(UnitSystem.METRIC)
.setReportSpeedOrPace(false)
.build(context);
@@ -14,15 +14,15 @@ public class DistanceFormatter {
private final Resources resources;
private final int decimalCount;
private final int decimalPlaces;
private final double threshold;
private final UnitSystem unitSystem;
private DistanceFormatter(Resources resources, int decimalCount, double threshold, UnitSystem unitSystem) {
private DistanceFormatter(Resources resources, int decimalPlaces, double threshold, UnitSystem unitSystem) {
this.resources = resources;
this.decimalCount = decimalCount;
this.decimalPlaces = decimalPlaces;
this.threshold = threshold;
this.unitSystem = unitSystem;
assert unitSystem != null;
@@ -57,30 +57,30 @@ public class DistanceFormatter {
switch (unitSystem) {
case METRIC -> {
if (distance.greaterThan(Distance.ofKilometer(threshold))) {
return new Pair<>(StringUtils.formatDecimal(distance.toKM(), decimalCount), resources.getString(R.string.unit_kilometer));
return new Pair<>(StringUtils.formatDecimal(distance.toKM(), decimalPlaces), resources.getString(R.string.unit_kilometer));
} else {
return new Pair<>(StringUtils.formatDecimal(distance.toM(), decimalCount), resources.getString(R.string.unit_meter));
return new Pair<>(StringUtils.formatDecimal(distance.toM(), decimalPlaces), resources.getString(R.string.unit_meter));
}
}
case IMPERIAL_FEET -> {
if (distance.greaterThan(Distance.ofMile(threshold))) {
return new Pair<>(StringUtils.formatDecimal(distance.toMI(), decimalCount), resources.getString(R.string.unit_mile));
return new Pair<>(StringUtils.formatDecimal(distance.toMI(), decimalPlaces), resources.getString(R.string.unit_mile));
} else {
return new Pair<>(StringUtils.formatDecimal(distance.toFT(), decimalCount), resources.getString(R.string.unit_feet));
return new Pair<>(StringUtils.formatDecimal(distance.toFT(), decimalPlaces), resources.getString(R.string.unit_feet));
}
}
case IMPERIAL_METER -> {
if (distance.greaterThan(Distance.ofMile(threshold))) {
return new Pair<>(StringUtils.formatDecimal(distance.toMI(), decimalCount), resources.getString(R.string.unit_mile));
return new Pair<>(StringUtils.formatDecimal(distance.toMI(), decimalPlaces), resources.getString(R.string.unit_mile));
} else {
return new Pair<>(StringUtils.formatDecimal(distance.toM(), decimalCount), resources.getString(R.string.unit_meter));
return new Pair<>(StringUtils.formatDecimal(distance.toM(), decimalPlaces), resources.getString(R.string.unit_meter));
}
}
case NAUTICAL_IMPERIAL -> {
if (distance.greaterThan(Distance.ofNauticalMile(threshold))) {
return new Pair<>(StringUtils.formatDecimal(distance.toNauticalMiles(), decimalCount), resources.getString(R.string.unit_nautical_mile));
return new Pair<>(StringUtils.formatDecimal(distance.toNauticalMiles(), decimalPlaces), resources.getString(R.string.unit_nautical_mile));
} else {
return new Pair<>(StringUtils.formatDecimal(distance.toFT(), decimalCount), resources.getString(R.string.unit_feet));
return new Pair<>(StringUtils.formatDecimal(distance.toFT(), decimalPlaces), resources.getString(R.string.unit_feet));
}
}
default -> throw new RuntimeException("Not implemented");
@@ -93,19 +93,19 @@ public class DistanceFormatter {
public static class Builder {
private int decimalCount;
private int decimalPlaces;
private UnitSystem unitSystem;
private double threshold;
public Builder() {
decimalCount = 2;
decimalPlaces = 2;
threshold = 0.5;
}
public Builder setDecimalCount(int decimalCount) {
this.decimalCount = decimalCount;
public Builder setDecimalPlaces(int decimalPlaces) {
this.decimalPlaces = decimalPlaces;
return this;
}
@@ -120,7 +120,7 @@ public class DistanceFormatter {
}
public DistanceFormatter build(Resources resource) {
return new DistanceFormatter(resource, decimalCount, threshold, unitSystem);
return new DistanceFormatter(resource, decimalPlaces, threshold, unitSystem);
}
public DistanceFormatter build(Context context) {
@@ -12,17 +12,16 @@ import de.dennisguse.opentracks.util.StringUtils;
public class SpeedFormatter {
private final Resources resources;
private final int DECIMAL_PLACES = 1;
private final int decimalCount;
private final Resources resources;
private final UnitSystem unitSystem;
private final boolean reportSpeedOrPace;
private SpeedFormatter(Resources resources, int decimalCount, UnitSystem unitSystem, boolean reportSpeedOrPace) {
private SpeedFormatter(Resources resources, UnitSystem unitSystem, boolean reportSpeedOrPace) {
this.resources = resources;
this.decimalCount = decimalCount;
this.unitSystem = unitSystem;
this.reportSpeedOrPace = reportSpeedOrPace;
}
@@ -55,7 +54,7 @@ public class SpeedFormatter {
}
if (reportSpeedOrPace) {
return new Pair<>(StringUtils.formatDecimal(speed.to(unitSystem), 1), unitString);
return new Pair<>(StringUtils.formatDecimal(speed.to(unitSystem), DECIMAL_PLACES), unitString);
}
int pace = (int) speed.toPace(unitSystem).getSeconds();
@@ -71,22 +70,14 @@ public class SpeedFormatter {
public static class Builder {
private int decimalCount;
private UnitSystem unitSystem;
private boolean reportSpeedOrPace;
public Builder() {
decimalCount = 2;
reportSpeedOrPace = true;
}
public Builder setDecimalCount(int decimalCount) {
this.decimalCount = decimalCount;
return this;
}
public Builder setUnit(@NonNull UnitSystem unitSystem) {
this.unitSystem = unitSystem;
return this;
@@ -98,7 +89,7 @@ public class SpeedFormatter {
}
public SpeedFormatter build(Resources resource) {
return new SpeedFormatter(resource, decimalCount, unitSystem, reportSpeedOrPace);
return new SpeedFormatter(resource, unitSystem, reportSpeedOrPace);
}
public SpeedFormatter build(Context context) {
@@ -396,7 +396,7 @@ public class PreferencesUtils {
UnitSystem unitSystem = getUnitSystem();
DistanceFormatter formatter = DistanceFormatter.Builder()
.setDecimalCount(0)
.setDecimalPlaces(0)
.setUnit(unitSystem)
.build(resources);
for (int i = 0; i < entryValues.length; i++) {
@@ -503,7 +503,7 @@ public class PreferencesUtils {
DistanceFormatter formatter = DistanceFormatter.Builder()
.setUnit(unitSystem)
.setDecimalCount(0)
.setDecimalPlaces(0)
.setThreshold(Double.MAX_VALUE)
.build(resources);
for (int i = 0; i < entryValues.length; i++) {
@@ -546,7 +546,7 @@ public class PreferencesUtils {
UnitSystem unitSystem = getUnitSystem();
DistanceFormatter formatter = DistanceFormatter.Builder()
.setDecimalCount(0)
.setDecimalPlaces(0)
.setThreshold(Double.MAX_VALUE)
.setUnit(unitSystem)
.build(resources);
@@ -619,7 +619,7 @@ public class PreferencesUtils {
UnitSystem unitSystem = getUnitSystem();
DistanceFormatter formatter = DistanceFormatter.Builder()
.setDecimalCount(0)
.setDecimalPlaces(0)
.setThreshold(Double.MAX_VALUE)
.setUnit(unitSystem)
.build(resources);
@@ -18,7 +18,7 @@ public class RecordingSettingsFragment extends PreferenceFragmentCompat {
UnitSystem unitSystem = PreferencesUtils.getUnitSystem();
final DistanceFormatter formatter = DistanceFormatter.Builder()
.setDecimalCount(0)
.setDecimalPlaces(0)
.setUnit(unitSystem)
.build(getContext());
@@ -31,7 +31,7 @@ public class SensorsSettingsFragment extends PreferenceFragmentCompat {
UnitSystem unitSystem = PreferencesUtils.getUnitSystem();
final DistanceFormatter formatter = DistanceFormatter.Builder()
.setDecimalCount(0)
.setDecimalPlaces(0)
.setUnit(unitSystem)
.build(getContext());
@@ -114,7 +114,7 @@ public class IntervalsFragment extends Fragment {
TextView v = (TextView) super.getView(position, convertView, parent);
DistanceFormatter formatter = DistanceFormatter.Builder()
.setDecimalCount(0)
.setDecimalPlaces(0)
.setUnit(unitSystem)
.build(getContext());
@@ -200,7 +200,7 @@ public class IntervalsFragment extends Fragment {
private void setIntervalsDropdownText() {
DistanceFormatter formatter = DistanceFormatter.Builder()
.setDecimalCount(0)
.setDecimalPlaces(0)
.setUnit(unitSystem)
.build(getContext());
@@ -233,7 +233,7 @@ public class StringUtils {
//TODO altitude_m should be double or a value object
public static Pair<String, String> getAltitudeParts(Context context, Float altitude_m, UnitSystem unitSystem) {
DistanceFormatter formatter = DistanceFormatter.Builder()
.setDecimalCount(0)
.setDecimalPlaces(0)
.setThreshold(Double.MAX_VALUE)
.setUnit(unitSystem)
.build(context);