From 2e1305404280c311454e71f2fc12602ae78e1775 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Fri, 27 Jun 2025 13:53:38 +0200 Subject: [PATCH] Cleanup: TrackPoint exposes Position. --- .../data/CustomContentProviderUtilsTest.java | 4 ++-- .../io/file/importer/TrackPointAssert.java | 4 ++-- .../opentracks/data/ContentProviderUtils.java | 4 ++-- .../opentracks/data/models/Marker.java | 8 -------- .../opentracks/data/models/TrackPoint.java | 12 ------------ .../io/file/exporter/CSVTrackExporter.java | 4 ++-- .../io/file/exporter/GPXTrackExporter.java | 9 +++++---- .../io/file/exporter/KMLTrackExporter.java | 4 ++-- .../io/file/importer/TrackImporter.java | 4 ++-- .../ui/markers/MarkerDetailFragment.java | 4 ++-- .../dennisguse/opentracks/util/IntentUtils.java | 17 ++++------------- .../dennisguse/opentracks/util/StringUtils.java | 9 +++------ .../viewmodels/GenericStatisticsViewHolder.java | 2 +- 13 files changed, 27 insertions(+), 58 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/data/CustomContentProviderUtilsTest.java b/src/androidTest/java/de/dennisguse/opentracks/data/CustomContentProviderUtilsTest.java index d7c7bb1ea..6ed555c46 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/data/CustomContentProviderUtilsTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/data/CustomContentProviderUtilsTest.java @@ -763,8 +763,8 @@ public class CustomContentProviderUtilsTest { TrackPoint trackPoint = contentProviderUtils.createTrackPoint(cursorMock); // then - assertEquals(longitude, trackPoint.getLongitude(), 0.01); - assertEquals(latitude, trackPoint.getLatitude(), 0.01); + assertEquals(latitude, trackPoint.getPosition().latitude(), 0.01); + assertEquals(longitude, trackPoint.getPosition().longitude(), 0.01); assertEquals(time, trackPoint.getTime().toEpochMilli()); assertEquals(speed, trackPoint.getSpeed().toMPS(), 0.01); assertEquals(HeartRate.of(75f), trackPoint.getHeartRate()); diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/TrackPointAssert.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/TrackPointAssert.java index 0db162fd3..1c1895fce 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/TrackPointAssert.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/TrackPointAssert.java @@ -20,8 +20,8 @@ public class TrackPointAssert { Assert.assertEquals("has location,", expected.hasLocation(), actual.hasLocation()); if (expected.hasLocation()) { - Assert.assertEquals("latitude", expected.getLatitude(), actual.getLatitude(), 0.001); - Assert.assertEquals("longitude", expected.getLongitude(), actual.getLongitude(), 0.001); + Assert.assertEquals("latitude", expected.getPosition().latitude(), actual.getPosition().latitude(), 0.001); + Assert.assertEquals("longitude", expected.getPosition().longitude(), actual.getPosition().longitude(), 0.001); } Assert.assertEquals("has altitude", expected.hasAltitude(), actual.hasAltitude()); diff --git a/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java b/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java index 061b0a2e3..bb1f1bc6f 100644 --- a/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java +++ b/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java @@ -784,8 +784,8 @@ public class ContentProviderUtils { values.put(TrackPointsColumns.TYPE, trackPoint.getType().type_db); if (trackPoint.hasLocation()) { - values.put(TrackPointsColumns.LONGITUDE, (int) (trackPoint.getLongitude() * 1E6)); - values.put(TrackPointsColumns.LATITUDE, (int) (trackPoint.getLatitude() * 1E6)); + values.put(TrackPointsColumns.LATITUDE, (int) (trackPoint.getPosition().latitude() * 1E6)); + values.put(TrackPointsColumns.LONGITUDE, (int) (trackPoint.getPosition().longitude() * 1E6)); } values.put(TrackPointsColumns.TIME, trackPoint.getTime().toEpochMilli()); if (trackPoint.hasAltitude()) { diff --git a/src/main/java/de/dennisguse/opentracks/data/models/Marker.java b/src/main/java/de/dennisguse/opentracks/data/models/Marker.java index e26ee1a2b..f77e05401 100644 --- a/src/main/java/de/dennisguse/opentracks/data/models/Marker.java +++ b/src/main/java/de/dennisguse/opentracks/data/models/Marker.java @@ -132,14 +132,6 @@ public final class Marker { return position; } - public double getLatitude() { - return position.latitude(); - } - - public double getLongitude() { - return position.longitude(); - } - public boolean hasAccuracy() { return position.hasHorizontalAccuracy(); } diff --git a/src/main/java/de/dennisguse/opentracks/data/models/TrackPoint.java b/src/main/java/de/dennisguse/opentracks/data/models/TrackPoint.java index 05858b1dc..90aa92d0a 100644 --- a/src/main/java/de/dennisguse/opentracks/data/models/TrackPoint.java +++ b/src/main/java/de/dennisguse/opentracks/data/models/TrackPoint.java @@ -147,18 +147,6 @@ public class TrackPoint { return position.hasLocation(); } - //TODO Should be double - @Deprecated //Use getPosition() - public Double getLatitude() { - return position.latitude(); - } - - //TODO Should be double - @Deprecated //Use getPosition() - public Double getLongitude() { - return position.longitude(); - } - @NonNull public Position getPosition() { return position; diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/CSVTrackExporter.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/CSVTrackExporter.java index 215e00265..720604ad4 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/CSVTrackExporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/exporter/CSVTrackExporter.java @@ -91,8 +91,8 @@ public class CSVTrackExporter implements TrackExporter { List columns = List.of( new Column("time", null), new Column("trackpoint_type", t -> quote(t.getType().name())), - new Column("latitude", t -> t.hasLocation() ? COORDINATE_FORMAT.format(t.getLatitude()) : ""), - new Column("longitude", t -> t.hasLocation() ? COORDINATE_FORMAT.format(t.getLongitude()) : ""), + new Column("latitude", t -> t.hasLocation() ? COORDINATE_FORMAT.format(t.getPosition().latitude()) : ""), + new Column("longitude", t -> t.hasLocation() ? COORDINATE_FORMAT.format(t.getPosition().longitude()) : ""), new Column("altitude", t -> t.hasAltitude() ? ALTITUDE_FORMAT.format(t.getAltitude().toM()) : ""), new Column("accuracy_horizontal", t -> t.hasHorizontalAccuracy() ? DISTANCE_FORMAT.format(t.getHorizontalAccuracy().toM()) : ""), new Column("accuracy_vertical", t -> t.hasVerticalAccuracy() ? DISTANCE_FORMAT.format(t.getVerticalAccuracy().toM()) : ""), diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/GPXTrackExporter.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/GPXTrackExporter.java index 0089ae54e..aa7de9a02 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/GPXTrackExporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/exporter/GPXTrackExporter.java @@ -36,6 +36,7 @@ import de.dennisguse.opentracks.data.ContentProviderUtils; import de.dennisguse.opentracks.data.TrackPointIterator; import de.dennisguse.opentracks.data.models.Distance; import de.dennisguse.opentracks.data.models.Marker; +import de.dennisguse.opentracks.data.models.Position; import de.dennisguse.opentracks.data.models.Track; import de.dennisguse.opentracks.data.models.TrackPoint; import de.dennisguse.opentracks.stats.TrackStatistics; @@ -253,7 +254,7 @@ public class GPXTrackExporter implements TrackExporter { } private void writeMarker(ZoneOffset zoneOffset, Marker marker) { - printWriter.println(""); + printWriter.println(""); if (marker.hasAltitude()) { printWriter.println("" + ALTITUDE_FORMAT.format(marker.getAltitude().toM()) + ""); } @@ -311,7 +312,7 @@ public class GPXTrackExporter implements TrackExporter { private Distance writeTrackPoint(ZoneOffset zoneOffset, TrackPoint trackPoint, List sensorPoints, Distance trackDistance) { Distance cumulativeDistance; - printWriter.println(""); + printWriter.println(""); if (trackPoint.hasAltitude()) { printWriter.println("" + ALTITUDE_FORMAT.format(trackPoint.getAltitude().toM()) + ""); @@ -395,7 +396,7 @@ public class GPXTrackExporter implements TrackExporter { .orElse(null); } - private String formatLocation(double latitude, double longitude) { - return "lat=\"" + COORDINATE_FORMAT.format(latitude) + "\" lon=\"" + COORDINATE_FORMAT.format(longitude) + "\""; + private String formatLocation(Position position) { + return "lat=\"" + COORDINATE_FORMAT.format(position.latitude()) + "\" lon=\"" + COORDINATE_FORMAT.format(position.longitude()) + "\""; } } diff --git a/src/main/java/de/dennisguse/opentracks/io/file/exporter/KMLTrackExporter.java b/src/main/java/de/dennisguse/opentracks/io/file/exporter/KMLTrackExporter.java index c429641c4..445b4bb18 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/exporter/KMLTrackExporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/exporter/KMLTrackExporter.java @@ -432,8 +432,8 @@ public class KMLTrackExporter implements TrackExporter { printWriter.println("" + StringUtils.formatCData(marker.getName()) + ""); printWriter.println("" + StringUtils.formatCData(marker.getDescription()) + ""); printWriter.print(""); - printWriter.print("" + marker.getLongitude() + ""); - printWriter.print("" + marker.getLatitude() + ""); + printWriter.print("" + marker.getPosition().longitude() + ""); + printWriter.print("" + marker.getPosition().latitude() + ""); printWriter.print("20"); printWriter.print("90"); printWriter.println(""); diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/TrackImporter.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/TrackImporter.java index e3e96dd12..fc9ee0616 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/TrackImporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/TrackImporter.java @@ -178,10 +178,10 @@ public class TrackImporter { if (current.hasLocation()) { Instant time = current.getTime(); - if (current.getLatitude() == 100) { + if (current.getPosition().latitude() == 100) { //TODO Remove by 31st December 2021. trackPoints.set(i, new TrackPoint(TrackPoint.Type.SEGMENT_END_MANUAL, time)); - } else if (current.getLatitude() == 200) { + } else if (current.getPosition().latitude() == 200) { //TODO Remove by 31st December 2021. trackPoints.set(i, new TrackPoint(TrackPoint.Type.SEGMENT_START_MANUAL, time)); //TODO Delete location diff --git a/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerDetailFragment.java b/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerDetailFragment.java index 885852d7e..877a8a788 100644 --- a/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerDetailFragment.java +++ b/src/main/java/de/dennisguse/opentracks/ui/markers/MarkerDetailFragment.java @@ -254,9 +254,9 @@ public class MarkerDetailFragment extends Fragment { private void setLocation(boolean addShadow) { String value = "[" + getString(R.string.stats_latitude) + " " - + StringUtils.formatCoordinate(getContext(), marker.getLatitude()) + ", " + + StringUtils.formatCoordinate(getContext(), marker.getPosition().latitude()) + ", " + getString(R.string.stats_longitude) + " " - + StringUtils.formatCoordinate(getContext(), marker.getLongitude()) + "]"; + + StringUtils.formatCoordinate(getContext(), marker.getPosition().longitude()) + "]"; ListItemUtils.setTextView(getActivity(), viewBinding.markerDetailMarkerLocation, value, addShadow); } diff --git a/src/main/java/de/dennisguse/opentracks/util/IntentUtils.java b/src/main/java/de/dennisguse/opentracks/util/IntentUtils.java index f2b850e8c..545619568 100644 --- a/src/main/java/de/dennisguse/opentracks/util/IntentUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/IntentUtils.java @@ -50,23 +50,14 @@ public class IntentUtils { return new Intent(context, cls).addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); } - public static void showCoordinateOnMap(Context context, Marker marker) { - showCoordinateOnMap(context, marker.getLatitude(), marker.getLongitude(), marker.getName()); - } - /** * Send intent to show coordinates on a map (needs an another app). - * - * @param context the context - * @param latitude the latitude - * @param longitude the longitude - * @param label the label */ - private static void showCoordinateOnMap(Context context, double latitude, double longitude, String label) { + public static void showCoordinateOnMap(Context context, Marker marker) { //SEE https://developer.android.com/guide/components/intents-common.html#Maps - String uri = "geo:0,0?q=" + latitude + "," + longitude; - if (label != null && label.length() > 0) { - uri += "(" + label + ")"; + String uri = "geo:0,0?q=" + marker.getPosition().latitude() + "," + marker.getPosition().longitude(); + if (marker.getName() != null && !marker.getName().isEmpty()) { + uri += "(" + marker.getName() + ")"; } Intent intent = new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse(uri)); diff --git a/src/main/java/de/dennisguse/opentracks/util/StringUtils.java b/src/main/java/de/dennisguse/opentracks/util/StringUtils.java index 855f287f4..0a15a948f 100644 --- a/src/main/java/de/dennisguse/opentracks/util/StringUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/StringUtils.java @@ -45,6 +45,7 @@ import de.dennisguse.opentracks.data.models.Cadence; import de.dennisguse.opentracks.data.models.Distance; import de.dennisguse.opentracks.data.models.DistanceFormatter; import de.dennisguse.opentracks.data.models.HeartRate; +import de.dennisguse.opentracks.data.models.Position; import de.dennisguse.opentracks.data.models.Power; import de.dennisguse.opentracks.settings.UnitSystem; @@ -154,13 +155,9 @@ public class StringUtils { /** * Formats a complete coordinate (latitude, longitude) - * - * @param context the context's object. - * @param latitude the coordinate's latitude. - * @param longitude the coordinate's longitude. */ - public static String formatCoordinate(Context context, double latitude, double longitude) { - return context.getString(R.string.location_latitude_longitude, Location.convert(latitude, Location.FORMAT_DEGREES), Location.convert(longitude, Location.FORMAT_DEGREES)); + public static String formatCoordinate(Context context, Position position) { + return context.getString(R.string.location_latitude_longitude, Location.convert(position.latitude(), Location.FORMAT_DEGREES), Location.convert(position.longitude(), Location.FORMAT_DEGREES)); } public static Pair getHeartRateParts(Context context, HeartRate heartrate) { diff --git a/src/main/java/de/dennisguse/opentracks/viewmodels/GenericStatisticsViewHolder.java b/src/main/java/de/dennisguse/opentracks/viewmodels/GenericStatisticsViewHolder.java index 226a19f3c..f80497c6a 100644 --- a/src/main/java/de/dennisguse/opentracks/viewmodels/GenericStatisticsViewHolder.java +++ b/src/main/java/de/dennisguse/opentracks/viewmodels/GenericStatisticsViewHolder.java @@ -265,7 +265,7 @@ public abstract class GenericStatisticsViewHolder extends StatisticViewHolder