diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java index 96cfbf8a4..ed5800dd8 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java @@ -328,7 +328,7 @@ public class TrackRecordingServiceTest { } private void addTrack(Track track, boolean isRecording) { - assertTrue(track.getId().isValid()); + assertNotNull(track.getId()); contentProviderUtils.insertTrack(track); assertEquals(track.getId(), contentProviderUtils.getTrack(track.getId()).getId()); PreferencesUtils.setLong(context, R.string.recording_track_id_key, isRecording ? track.getId().getId() : PreferencesUtils.RECORDING_TRACK_ID_DEFAULT); diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java index 161a42887..515765dbc 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java @@ -203,7 +203,7 @@ public class TrackRecordingServiceTestLooper { // Start a track. Track.Id trackId = service.startNewTrack(); - assertTrue(trackId.isValid()); + assertNotNull(trackId); assertTrue(service.isRecording()); Track track = contentProviderUtils.getTrack(trackId); assertNotNull(track); diff --git a/src/main/java/de/dennisguse/opentracks/TrackEditActivity.java b/src/main/java/de/dennisguse/opentracks/TrackEditActivity.java index bed534ed5..951ef7769 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackEditActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackEditActivity.java @@ -58,7 +58,7 @@ public class TrackEditActivity extends AbstractActivity implements ChooseActivit trackRecordingServiceConnection = new TrackRecordingServiceConnection(); Track.Id trackId = getIntent().getParcelableExtra(EXTRA_TRACK_ID); - if (!trackId.isValid()) { + if (trackId == null) { Log.e(TAG, "invalid trackId"); finish(); return; diff --git a/src/main/java/de/dennisguse/opentracks/content/data/Track.java b/src/main/java/de/dennisguse/opentracks/content/data/Track.java index d4b8b5a57..3ff3d5f8b 100644 --- a/src/main/java/de/dennisguse/opentracks/content/data/Track.java +++ b/src/main/java/de/dennisguse/opentracks/content/data/Track.java @@ -26,7 +26,6 @@ import java.util.Objects; import java.util.UUID; import de.dennisguse.opentracks.stats.TrackStatistics; -import de.dennisguse.opentracks.util.PreferencesUtils; /** * A track. @@ -127,11 +126,6 @@ public class Track { return id; } - @Deprecated //TODO Use a Track.Id of null instead - public boolean isValid() { - return id != PreferencesUtils.RECORDING_TRACK_ID_DEFAULT; - } - @Override public boolean equals(Object o) { if (this == o) return true; 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 a1a3580d3..d33bc9103 100644 --- a/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java +++ b/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java @@ -23,7 +23,6 @@ import android.database.Cursor; import android.location.Location; import android.net.Uri; import android.text.TextUtils; -import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -224,7 +223,7 @@ public class ContentProviderUtils { * @param trackId the track id. */ public Track getTrack(Track.Id trackId) { - if (trackId == null || !trackId.isValid()) { + if (trackId == null) { return null; } try (Cursor cursor = getTrackCursor(TracksColumns._ID + "=?", new String[]{Long.toString(trackId.getId())}, null)) { @@ -286,7 +285,7 @@ public class ContentProviderUtils { TrackStatistics trackStatistics = track.getTrackStatistics(); // Value < 0 indicates no id is available - if (track.getId() != null && track.getId().isValid()) { + if (track.getId() != null) { values.put(TracksColumns._ID, track.getId().getId()); } values.put(TracksColumns.UUID, UUIDUtils.toBytes(track.getUuid())); @@ -385,10 +384,7 @@ public class ContentProviderUtils { /** * @return -1 if not able to get the next marker number. */ - public int getNextMarkerNumber(Track.Id trackId) { - if (!trackId.isValid()) { - return -1; - } + public int getNextMarkerNumber(@NonNull Track.Id trackId) { String[] projection = {MarkerColumns._ID}; String selection = MarkerColumns.TRACKID + "=?"; String[] selectionArgs = new String[]{Long.toString(trackId.getId())}; @@ -416,11 +412,7 @@ public class ContentProviderUtils { * @param minMarkerId the minimum marker id. null to ignore * @param maxCount the maximum number of markers to return. -1 for no limit */ - public Cursor getMarkerCursor(Track.Id trackId, @Nullable Marker.Id minMarkerId, int maxCount) { - if (!trackId.isValid()) { - return null; - } - + public Cursor getMarkerCursor(@NonNull Track.Id trackId, @Nullable Marker.Id minMarkerId, int maxCount) { String selection; String[] selectionArgs; if (minMarkerId != null) { @@ -449,10 +441,6 @@ public class ContentProviderUtils { @Deprecated //TODO TracksColumns.MARKER_COUNT while querying for tracks public int getMarkerCount(Track.Id trackId) { - if (!trackId.isValid()) { - return 0; - } - String[] projection = new String[]{"count(*) AS count"}; String selection = MarkerColumns.TRACKID + "=?"; String[] selectionArgs = new String[]{Long.toString(trackId.getId())}; @@ -633,9 +621,6 @@ public class ContentProviderUtils { */ @Deprecated public Track.Id getFirstTrackPointId(Track.Id trackId) { - if (!trackId.isValid()) { - return null; - } String selection = TrackPointsColumns._ID + "=(SELECT MIN(" + TrackPointsColumns._ID + ") FROM " + TrackPointsColumns.TABLE_NAME + " WHERE " + TrackPointsColumns.TRACKID + "=?)"; String[] selectionArgs = new String[]{Long.toString(trackId.getId())}; try (Cursor cursor = getTrackPointCursor(new String[]{TrackPointsColumns._ID}, selection, selectionArgs, TrackPointsColumns._ID)) { @@ -653,11 +638,7 @@ public class ContentProviderUtils { * @param trackId the track id */ @Deprecated - public long getLastTrackPointId(Track.Id trackId) { - if (trackId == null || !trackId.isValid()) { - Log.w(TAG, "Fix callers who do this."); - return -1L; - } + public long getLastTrackPointId(@NonNull Track.Id trackId) { String selection = TrackPointsColumns._ID + "=(SELECT MAX(" + TrackPointsColumns._ID + ") from " + TrackPointsColumns.TABLE_NAME + " WHERE " + TrackPointsColumns.TRACKID + "=?)"; String[] selectionArgs = new String[]{Long.toString(trackId.getId())}; try (Cursor cursor = getTrackPointCursor(new String[]{TrackPointsColumns._ID}, selection, selectionArgs, TrackPointsColumns._ID)) { @@ -676,9 +657,6 @@ public class ContentProviderUtils { * @return trackPoint id if the location is in the track. -1L otherwise. */ public long getTrackPointId(Track.Id trackId, Location location) { - if (!trackId.isValid()) { - return -1L; - } String selection = TrackPointsColumns._ID + "=(SELECT MAX(" + TrackPointsColumns._ID + ") FROM " + TrackPointsColumns.TABLE_NAME + " WHERE " + TrackPointsColumns.TRACKID + "=? AND " + TrackPointsColumns.TIME + "=?)"; String[] selectionArgs = new String[]{Long.toString(trackId.getId()), Long.toString(location.getTime())}; try (Cursor cursor = getTrackPointCursor(new String[]{TrackPointsColumns._ID}, selection, selectionArgs, TrackPointsColumns._ID)) { @@ -707,10 +685,6 @@ public class ContentProviderUtils { * @param descending true to sort the result in descending order (latest location first) */ public Cursor getTrackPointCursor(Track.Id trackId, long startTrackPointId, int maxLocations, boolean descending) { - if (!trackId.isValid()) { - return null; - } - String selection; String[] selectionArgs; if (startTrackPointId >= 0) { @@ -740,9 +714,6 @@ public class ContentProviderUtils { */ @Deprecated public TrackPoint getLastValidTrackPoint(Track.Id trackId) { - if (!trackId.isValid()) { - return null; - } String selection = TrackPointsColumns._ID + "=(SELECT MAX(" + TrackPointsColumns._ID + ") FROM " + TrackPointsColumns.TABLE_NAME + " WHERE " + TrackPointsColumns.TRACKID + "=? AND " + TrackPointsColumns.LATITUDE + "<=" + MAX_LATITUDE + ")"; String[] selectionArgs = new String[]{Long.toString(trackId.getId())}; return findTrackPointBy(selection, selectionArgs); diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/KmzTrackImporter.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/KmzTrackImporter.java index d30cd9ed8..ea22b26fd 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/KmzTrackImporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/KmzTrackImporter.java @@ -153,7 +153,6 @@ public class KmzTrackImporter implements TrackImporter { * TODO: May load multiple tracks, but only returns the last Track.Id. * * @param inputStream kmz input stream. - * @return null if error or the id of the track otherwise. */ private Track.Id findAndParseKmlFile(InputStream inputStream) { try (ZipInputStream zipInputStream = new ZipInputStream(inputStream)) { @@ -198,29 +197,27 @@ public class KmzTrackImporter implements TrackImporter { * @param trackId the id of the Track. */ private void deleteOrphanImages(Context context, Track.Id trackId) { - if (!trackId.isValid()) { - // 1.- Gets all photo names in the markers of the track identified by id. - ContentProviderUtils contentProviderUtils = new ContentProviderUtils(context); - List markers = contentProviderUtils.getMarkers(trackId); - List photosName = new ArrayList<>(); - for (Marker marker : markers) { - if (marker.hasPhoto()) { - String photoUrl = Uri.decode(marker.getPhotoUrl()); - photosName.add(photoUrl.substring(photoUrl.lastIndexOf(File.separatorChar) + 1)); + // 1.- Gets all photo names in the markers of the track identified by id. + ContentProviderUtils contentProviderUtils = new ContentProviderUtils(context); + List markers = contentProviderUtils.getMarkers(trackId); + List photosName = new ArrayList<>(); + for (Marker marker : markers) { + if (marker.hasPhoto()) { + String photoUrl = Uri.decode(marker.getPhotoUrl()); + photosName.add(photoUrl.substring(photoUrl.lastIndexOf(File.separatorChar) + 1)); + } + } + + // 2.- Deletes all orphan photos from external storage. + File dir = FileUtils.getPhotoDir(context, trackId); + if (dir.exists() && dir.isDirectory()) { + for (File file : dir.listFiles()) { + if (!photosName.contains(file.getName())) { + file.delete(); } } - - // 2.- Deletes all orphan photos from external storage. - File dir = FileUtils.getPhotoDir(context, trackId); - if (dir.exists() && dir.isDirectory()) { - for (File file : dir.listFiles()) { - if (!photosName.contains(file.getName())) { - file.delete(); - } - } - if (dir.listFiles().length == 0) { - dir.delete(); - } + if (dir.listFiles().length == 0) { + dir.delete(); } } }