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 6d9ba0167..bda72e3ba 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/content/provider/CustomContentProviderUtilsTest.java @@ -360,17 +360,17 @@ public class CustomContentProviderUtilsTest { } /** - * Tests the method {@link ContentProviderUtils#getAllTracks()} + * Tests the method {@link ContentProviderUtils#getTracks()} */ @Test public void testGetAllTracks() { // given - int initialTrackNumber = contentProviderUtils.getAllTracks().size(); + int initialTrackNumber = contentProviderUtils.getTracks().size(); Track.Id trackId = new Track.Id(System.currentTimeMillis()); contentProviderUtils.insertTrack(TestDataUtil.createTrack(trackId)); // when - List allTracks = contentProviderUtils.getAllTracks(); + List allTracks = contentProviderUtils.getTracks(); // then Assert.assertEquals(initialTrackNumber + 1, allTracks.size()); diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java index f3eedbbe4..8106abb2d 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTest.java @@ -134,7 +134,7 @@ public class TrackRecordingServiceTest { @Test public void testRecording_noTracks() throws Exception { // given - List tracks = contentProviderUtils.getAllTracks(); + List tracks = contentProviderUtils.getTracks(); Assert.assertTrue(tracks.isEmpty()); // when diff --git a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java index 46f018ef2..e3e3f28b4 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java +++ b/src/androidTest/java/de/dennisguse/opentracks/services/TrackRecordingServiceTestLooper.java @@ -187,7 +187,7 @@ public class TrackRecordingServiceTestLooper { @MediumTest @Test public void testIntegration_completeRecordingSession() throws TimeoutException { - List tracks = contentProviderUtils.getAllTracks(); + List tracks = contentProviderUtils.getTracks(); Assert.assertTrue(tracks.isEmpty()); fullRecordingSession(); } diff --git a/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java b/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java index 3a7080e63..6b49e8ddc 100644 --- a/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/MarkerListActivity.java @@ -32,7 +32,6 @@ import androidx.annotation.NonNull; import androidx.cursoradapter.widget.ResourceCursorAdapter; import androidx.loader.app.LoaderManager; import androidx.loader.app.LoaderManager.LoaderCallbacks; -import androidx.loader.content.CursorLoader; import androidx.loader.content.Loader; import de.dennisguse.opentracks.content.data.Track; @@ -58,11 +57,6 @@ public class MarkerListActivity extends AbstractActivity implements DeleteMarker private static final String TAG = MarkerListActivity.class.getSimpleName(); - private static final String[] PROJECTION = new String[]{WaypointsColumns._ID, - WaypointsColumns.NAME, WaypointsColumns.DESCRIPTION, WaypointsColumns.CATEGORY, - WaypointsColumns.TIME, WaypointsColumns.PHOTOURL, - WaypointsColumns.LATITUDE, WaypointsColumns.LONGITUDE}; - private ContentProviderUtils contentProviderUtils; private SharedPreferences sharedPreferences; @@ -164,14 +158,7 @@ public class MarkerListActivity extends AbstractActivity implements DeleteMarker @NonNull @Override public Loader onCreateLoader(int arg0, Bundle arg1) { - if (track != null) { - return new CursorLoader(MarkerListActivity.this, WaypointsColumns.CONTENT_URI, PROJECTION, - WaypointsColumns.TRACKID + "=?", - new String[]{String.valueOf(track.getId().getId())}, null); - } else { - return new CursorLoader(MarkerListActivity.this, WaypointsColumns.CONTENT_URI, PROJECTION, - null, null, null); - } + return ContentProviderUtils.getWaypointsLoader(MarkerListActivity.this, track != null ? track.getId() : null); } @Override diff --git a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java index f2bf05639..75f66e464 100644 --- a/src/main/java/de/dennisguse/opentracks/TrackListActivity.java +++ b/src/main/java/de/dennisguse/opentracks/TrackListActivity.java @@ -43,7 +43,6 @@ import androidx.core.app.ActivityCompat; import androidx.cursoradapter.widget.ResourceCursorAdapter; import androidx.loader.app.LoaderManager; import androidx.loader.app.LoaderManager.LoaderCallbacks; -import androidx.loader.content.CursorLoader; import androidx.loader.content.Loader; import de.dennisguse.opentracks.content.data.Track; @@ -61,7 +60,6 @@ import de.dennisguse.opentracks.util.ListItemUtils; import de.dennisguse.opentracks.util.PreferencesUtils; import de.dennisguse.opentracks.util.StringUtils; import de.dennisguse.opentracks.util.TrackIconUtils; -import de.dennisguse.opentracks.util.TrackUtils; /** * An activity displaying a list of tracks. @@ -72,10 +70,6 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe private static final String TAG = TrackListActivity.class.getSimpleName(); - private static final String[] PROJECTION = new String[]{TracksColumns._ID, TracksColumns.NAME, - TracksColumns.DESCRIPTION, TracksColumns.CATEGORY, TracksColumns.STARTTIME, - TracksColumns.TOTALDISTANCE, TracksColumns.TOTALTIME, TracksColumns.ICON}; - // The following are set in onCreate private ContentProviderUtils contentProviderUtils; private SharedPreferences sharedPreferences; @@ -88,8 +82,7 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe private final LoaderCallbacks loaderCallbacks = new LoaderCallbacks() { @Override public Loader onCreateLoader(int arg0, Bundle arg1) { - return new CursorLoader(TrackListActivity.this, TracksColumns.CONTENT_URI, PROJECTION, null, - null, TrackUtils.TRACK_SORT_ORDER); + return ContentProviderUtils.getTracksCursorLoader(TrackListActivity.this); } @Override @@ -126,8 +119,7 @@ public class TrackListActivity extends AbstractListActivity implements ConfirmDe private boolean recordingTrackPaused; - private final OnSharedPreferenceChangeListener - sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() { + private final OnSharedPreferenceChangeListener sharedPreferenceChangeListener = new OnSharedPreferenceChangeListener() { @Override public void onSharedPreferenceChanged(SharedPreferences preferences, String key) { if (PreferencesUtils.isKey(TrackListActivity.this, R.string.stats_units_key, key)) { 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 5c1c4b15e..dfd8c60e8 100644 --- a/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java +++ b/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java @@ -28,6 +28,8 @@ import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; +import androidx.loader.content.CursorLoader; +import androidx.loader.content.Loader; import java.io.File; import java.util.ArrayList; @@ -46,6 +48,7 @@ import de.dennisguse.opentracks.content.data.Waypoint; import de.dennisguse.opentracks.content.data.WaypointsColumns; import de.dennisguse.opentracks.stats.TrackStatistics; import de.dennisguse.opentracks.util.FileUtils; +import de.dennisguse.opentracks.util.TrackUtils; import de.dennisguse.opentracks.util.UUIDUtils; /** @@ -212,7 +215,7 @@ public class ContentProviderUtils { } @VisibleForTesting - public List getAllTracks() { + public List getTracks() { ArrayList tracks = new ArrayList<>(); try (Cursor cursor = getTrackCursor(null, null, TracksColumns._ID)) { if (cursor != null && cursor.moveToFirst()) { @@ -225,6 +228,17 @@ public class ContentProviderUtils { return tracks; } + public static Loader getTracksCursorLoader(Context context) { + String[] PROJECTION = new String[]{TracksColumns._ID, TracksColumns.NAME, + TracksColumns.DESCRIPTION, TracksColumns.CATEGORY, TracksColumns.STARTTIME, + TracksColumns.TOTALDISTANCE, TracksColumns.TOTALTIME, TracksColumns.ICON}; + + return new CursorLoader(context, TracksColumns.CONTENT_URI, PROJECTION, null, null, TrackUtils.TRACK_SORT_ORDER); + } + + @Deprecated + //TODO Do not use; rather get the proper TrackId (e.g., resume a track might give you some weird effects). + @VisibleForTesting public Track getLastTrack() { try (Cursor cursor = getTrackCursor(null, null, TracksColumns.STARTTIME + " DESC")) { // Using the same order as shown in the track list @@ -489,6 +503,21 @@ public class ContentProviderUtils { return waypoints; } + public static Loader getWaypointsLoader(Context context, @Nullable Track.Id trackId) { + final String[] PROJECTION = new String[]{WaypointsColumns._ID, + WaypointsColumns.NAME, WaypointsColumns.DESCRIPTION, WaypointsColumns.CATEGORY, + WaypointsColumns.TIME, WaypointsColumns.PHOTOURL, + WaypointsColumns.LATITUDE, WaypointsColumns.LONGITUDE}; + + if (trackId != null) { + return new CursorLoader(context, WaypointsColumns.CONTENT_URI, PROJECTION, + WaypointsColumns.TRACKID + "=?", + new String[]{String.valueOf(trackId.getId())}, null); + } else { + return new CursorLoader(context, WaypointsColumns.CONTENT_URI, PROJECTION, null, null, null); + } + } + /** * Gets the number of waypoints for a track. * diff --git a/src/main/java/de/dennisguse/opentracks/viewmodels/AggregatedStatisticsModel.java b/src/main/java/de/dennisguse/opentracks/viewmodels/AggregatedStatisticsModel.java index 7d97414a1..07352d072 100644 --- a/src/main/java/de/dennisguse/opentracks/viewmodels/AggregatedStatisticsModel.java +++ b/src/main/java/de/dennisguse/opentracks/viewmodels/AggregatedStatisticsModel.java @@ -31,7 +31,7 @@ public class AggregatedStatisticsModel extends AndroidViewModel { private void loadAggregatedStats() { new Thread(() -> { ContentProviderUtils contentProviderUtils = new ContentProviderUtils(getApplication().getApplicationContext()); - List tracks = contentProviderUtils.getAllTracks(); + List tracks = contentProviderUtils.getTracks(); AggregatedStatistics aggregatedStatistics = new AggregatedStatistics(); aggregatedStatistics.aggregate(tracks);