From 364b4702e3435337e8e562588d4aa448cbc31a61 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sun, 29 Mar 2020 22:56:11 +0200 Subject: [PATCH] Waypoint requires a non-null location. Remove setLocation() from Waypoint and TrackPoint. --- .../opentracks/content/SearchEngineTest.java | 12 +++--- .../CustomContentProviderUtilsTest.java | 7 ++-- .../io/file/importer/ExportImportTest.java | 3 +- .../opentracks/content/data/TrackPoint.java | 4 -- .../opentracks/content/data/Waypoint.java | 12 +++--- .../provider/ContentProviderUtils.java | 39 +++++++++---------- .../importer/AbstractFileTrackImporter.java | 3 +- 7 files changed, 36 insertions(+), 44 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/content/SearchEngineTest.java b/src/androidTest/java/de/dennisguse/opentracks/content/SearchEngineTest.java index a6e58857e..7c3694d27 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/content/SearchEngineTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/content/SearchEngineTest.java @@ -100,19 +100,17 @@ public class SearchEngineTest { } private long insertWaypoint(String title, String description, String category, double distance, long hoursAgo, long trackId) { - Waypoint waypoint = new Waypoint(); - waypoint.setName(title); - waypoint.setDescription(description); - waypoint.setCategory(category); - waypoint.setTrackId(trackId); - Location location = new Location(HERE); location.setLatitude(location.getLatitude() + distance); location.setLongitude(location.getLongitude() + distance); if (hoursAgo >= 0) { location.setTime(NOW - hoursAgo * 1000L * 60L * 60L); } - waypoint.setLocation(location); + Waypoint waypoint = new Waypoint(location); + waypoint.setName(title); + waypoint.setDescription(description); + waypoint.setCategory(category); + waypoint.setTrackId(trackId); Uri uri = providerUtils.insertWaypoint(waypoint); return ContentUris.parseId(uri); diff --git a/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java b/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java index f4da07570..ff58109be 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java @@ -330,15 +330,14 @@ public class CustomContentProviderUtilsTest { contentProviderUtils.insertTrack(track); // Insert at first. - Waypoint waypoint = new Waypoint(); - waypoint.setDescription(TEST_DESC); - Location location = new Location("test"); location.setLatitude(22); location.setLongitude(22); location.setAccuracy((float) 1 / 100.0f); location.setAltitude(2.5); - waypoint.setLocation(location); + + Waypoint waypoint = new Waypoint(location); + waypoint.setDescription(TEST_DESC); contentProviderUtils.insertWaypoint(waypoint); ContentProviderUtils contentProviderUtils = new ContentProviderUtils(contentResolverMock); diff --git a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java index 6ee53daf2..a702d211c 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/io/file/importer/ExportImportTest.java @@ -60,14 +60,13 @@ public class ExportImportTest { contentProviderUtils.bulkInsertTrackPoint(track.getTrackPoints().toArray(new TrackPoint[0]), track.getTrackPoints().size(), track.getId()); for (int i = 0; i < 3; i++) { - Waypoint waypoint = new Waypoint(); + Waypoint waypoint = new Waypoint(track.getTrackPoints().get(i).getLocation()); waypoint.setName("the waypoint " + i); waypoint.setDescription("the waypoint description " + i); waypoint.setCategory("the waypoint category" + i); waypoint.setIcon("the waypoing icon" + i); waypoint.setPhotoUrl("the photo url" + i); waypoint.setTrackId(trackId); - waypoint.setLocation(track.getTrackPoints().get(i).getLocation()); contentProviderUtils.insertWaypoint(waypoint); waypoints.add(waypoint); diff --git a/src/main/java/de/dennisguse/opentracks/content/data/TrackPoint.java b/src/main/java/de/dennisguse/opentracks/content/data/TrackPoint.java index 96e9f56ee..9e5149f82 100644 --- a/src/main/java/de/dennisguse/opentracks/content/data/TrackPoint.java +++ b/src/main/java/de/dennisguse/opentracks/content/data/TrackPoint.java @@ -90,10 +90,6 @@ public class TrackPoint { return location; } - public void setLocation(@NonNull Location location) { - this.location = location; - } - public SensorDataSet getSensorDataSet() { return sensorDataSet; } diff --git a/src/main/java/de/dennisguse/opentracks/content/data/Waypoint.java b/src/main/java/de/dennisguse/opentracks/content/data/Waypoint.java index a04058322..41d4013f1 100644 --- a/src/main/java/de/dennisguse/opentracks/content/data/Waypoint.java +++ b/src/main/java/de/dennisguse/opentracks/content/data/Waypoint.java @@ -20,6 +20,7 @@ import android.location.Location; import android.net.Uri; import androidx.annotation.NonNull; +import androidx.annotation.VisibleForTesting; /** * A waypoint. @@ -40,10 +41,15 @@ public final class Waypoint { private Location location = null; private String photoUrl = ""; + @VisibleForTesting public Waypoint() { } - public Waypoint(String name, String description, String category, String icon, long trackId, double length, long duration, Location location, String photoUrl) { + public Waypoint(Location location) { + this.location = location; + } + + public Waypoint(String name, String description, String category, String icon, long trackId, double length, long duration, @NonNull Location location, String photoUrl) { this.name = name; this.description = description; this.category = category; @@ -124,10 +130,6 @@ public final class Waypoint { return location; } - public void setLocation(@NonNull Location location) { - this.location = location; - } - public String getPhotoUrl() { return photoUrl; } diff --git a/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java b/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java index 0653dc57c..b1e0db835 100644 --- a/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java +++ b/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java @@ -356,7 +356,25 @@ public class ContentProviderUtils { int bearingIndex = cursor.getColumnIndexOrThrow(WaypointsColumns.BEARING); int photoUrlIndex = cursor.getColumnIndexOrThrow(WaypointsColumns.PHOTOURL); - Waypoint waypoint = new Waypoint(); + Location location = new Location(""); + if (!cursor.isNull(longitudeIndex) && !cursor.isNull(latitudeIndex)) { + location.setLongitude(((double) cursor.getInt(longitudeIndex)) / 1E6); + location.setLatitude(((double) cursor.getInt(latitudeIndex)) / 1E6); + } + if (!cursor.isNull(timeIndex)) { + location.setTime(cursor.getLong(timeIndex)); + } + if (!cursor.isNull(altitudeIndex)) { + location.setAltitude(cursor.getFloat(altitudeIndex)); + } + if (!cursor.isNull(accuracyIndex)) { + location.setAccuracy(cursor.getFloat(accuracyIndex)); + } + if (!cursor.isNull(bearingIndex)) { + location.setBearing(cursor.getFloat(bearingIndex)); + } + + Waypoint waypoint = new Waypoint(location); if (!cursor.isNull(idIndex)) { waypoint.setId(cursor.getLong(idIndex)); @@ -383,25 +401,6 @@ public class ContentProviderUtils { waypoint.setDuration(cursor.getLong(durationIndex)); } - Location location = new Location(""); - if (!cursor.isNull(longitudeIndex) && !cursor.isNull(latitudeIndex)) { - location.setLongitude(((double) cursor.getInt(longitudeIndex)) / 1E6); - location.setLatitude(((double) cursor.getInt(latitudeIndex)) / 1E6); - } - if (!cursor.isNull(timeIndex)) { - location.setTime(cursor.getLong(timeIndex)); - } - if (!cursor.isNull(altitudeIndex)) { - location.setAltitude(cursor.getFloat(altitudeIndex)); - } - if (!cursor.isNull(accuracyIndex)) { - location.setAccuracy(cursor.getFloat(accuracyIndex)); - } - if (!cursor.isNull(bearingIndex)) { - location.setBearing(cursor.getFloat(bearingIndex)); - } - waypoint.setLocation(location); - if (!cursor.isNull(photoUrlIndex)) { waypoint.setPhotoUrl(cursor.getString(photoUrlIndex)); } diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java index 45fb4dec0..1130bf6d2 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/AbstractFileTrackImporter.java @@ -284,13 +284,12 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track return; } - Waypoint waypoint = new Waypoint(); TrackPoint trackPoint = createTrackPoint(); if (!LocationUtils.isValidLocation(trackPoint.getLocation())) { throw new SAXException(createErrorMessage("Invalid location detected: " + trackPoint)); } - waypoint.setLocation(trackPoint.getLocation()); + Waypoint waypoint = new Waypoint(trackPoint.getLocation()); if (name != null) { waypoint.setName(name);