From ac0da5e9d1fdf561981f37f8a723b8c550643826 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sun, 28 Jun 2026 19:17:44 +0200 Subject: [PATCH] Cleanup: CustomContentProvider by inlining into UrlType. --- .../opentracks/data/ContentProviderUtils.java | 2 +- .../data/CustomContentProvider.java | 57 ++++++++----------- .../opentracks/data/tables/MarkerColumns.java | 2 - .../data/tables/TrackPointsColumns.java | 2 - .../opentracks/data/tables/TracksColumns.java | 3 - 5 files changed, 25 insertions(+), 41 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java b/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java index 09d8cd350..2546fce51 100644 --- a/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java +++ b/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java @@ -743,7 +743,7 @@ public class ContentProviderUtils { @NonNull public List getAggregatedStatisticsForTracks(TrackSelection selection) { SelectionData data = selection.buildSelection(); - try (Cursor cursor = contentResolver.query(TracksColumns.CONTENT_URI_AGGREGATED_STATISTICS, null, data.selection(), data.getSelectionArgs(), null)) { + try (Cursor cursor = contentResolver.query(CustomContentProvider.UrlType.TRACKS_AGGREGATED_STATISTICS.getUri(), null, data.selection(), data.getSelectionArgs(), null)) { ArrayList aggregatedStatistics = new ArrayList<>(cursor.getCount()); while (cursor.moveToNext()) { aggregatedStatistics.add(new AggregatedStatistic( diff --git a/src/main/java/de/dennisguse/opentracks/data/CustomContentProvider.java b/src/main/java/de/dennisguse/opentracks/data/CustomContentProvider.java index f8c0ad279..a3b86bc73 100644 --- a/src/main/java/de/dennisguse/opentracks/data/CustomContentProvider.java +++ b/src/main/java/de/dennisguse/opentracks/data/CustomContentProvider.java @@ -108,7 +108,7 @@ public class CustomContentProvider extends ContentProvider { uriMatcher.addURI(AUTHORITY_PACKAGE, TracksColumns.CONTENT_URI.getPath(), UrlType.TRACKS.ordinal()); uriMatcher.addURI(AUTHORITY_PACKAGE, TracksColumns.CONTENT_URI_SENSOR_STATS.getPath() + "/#", UrlType.TRACKS_SENSOR_STATS.ordinal()); - uriMatcher.addURI(AUTHORITY_PACKAGE, TracksColumns.CONTENT_URI_AGGREGATED_STATISTICS.getPath(), UrlType.TRACKS_AGGREGATED_STATISTICS.ordinal()); + uriMatcher.addURI(AUTHORITY_PACKAGE, UrlType.TRACKS_AGGREGATED_STATISTICS.getPath(), UrlType.TRACKS_AGGREGATED_STATISTICS.ordinal()); uriMatcher.addURI(AUTHORITY_PACKAGE, TracksColumns.CONTENT_URI.getPath() + "/*", UrlType.TRACKS_BY_ID.ordinal()); uriMatcher.addURI(AUTHORITY_PACKAGE, MarkerColumns.CONTENT_URI.getPath(), UrlType.MARKERS.ordinal()); @@ -180,23 +180,7 @@ public class CustomContentProvider extends ContentProvider { @Override public String getType(@NonNull Uri url) { - String contentType = getUrlType(url).contentType; - if (contentType != null) { - return contentType; - } - - //TODO replace with getUrlType(url).getContentType() - return switch (getUrlType(url)) { - case TRACKPOINTS -> TrackPointsColumns.CONTENT_TYPE; - case TRACKPOINTS_BY_TRACKID -> TrackPointsColumns.CONTENT_ITEMTYPE; - case TRACKS -> TracksColumns.CONTENT_TYPE; - case MARKERS -> MarkerColumns.CONTENT_TYPE; - case MARKERS_BY_TRACKID -> MarkerColumns.CONTENT_ITEMTYPE; - case DASHBOARD_TRACKS_BY_IDS -> UrlType.DASHBOARD_TRACKS_BY_IDS.contentType; - case DASHBOARD_TRACKPOINTS_BY_TRACKIDS -> UrlType.DASHBOARD_TRACKPOINTS_BY_TRACKIDS.contentType; - case DASHBOARD_MARKERS_BY_TRACKIDS -> UrlType.DASHBOARD_MARKERS_BY_TRACKIDS.contentType; - default -> throw new IllegalArgumentException("Unknown URL " + url); - }; + return getUrlType(url).contentType; } @Override @@ -435,24 +419,23 @@ public class CustomContentProvider extends ContentProvider { throw new SQLException("Failed to insert a marker " + url); } - //TODO Add ContentType as attribute public enum UrlType { - TRACKPOINTS, - TRACKPOINTS_BY_ID, + TRACKPOINTS((String) null, "vnd.android.cursor.dir/vnd.de.dennisguse.trackpoint"), + TRACKPOINTS_BY_ID((String) null, "vnd.android.cursor.dir/vnd.de.dennisguse.trackpoint"), //TODO Check if still used - TRACKPOINTS_BY_TRACKID, - TRACKS, - TRACKS_BY_ID, - TRACKS_SENSOR_STATS, - TRACKS_AGGREGATED_STATISTICS, - MARKERS, - MARKERS_BY_ID, + TRACKPOINTS_BY_TRACKID((String) null, "vnd.android.cursor.dir/vnd.de.dennisguse.trackpoint"), + TRACKS((String) null, "vnd.android.cursor.dir/vnd.de.dennisguse.track"), + TRACKS_BY_ID((String) null, "vnd.android.cursor.dir/vnd.de.dennisguse.track"), + TRACKS_SENSOR_STATS((String) null, "vnd.android.cursor.dir/vnd.de.dennisguse.sensorstats"), + TRACKS_AGGREGATED_STATISTICS( "/tracks/aggregated/", "vnd.android.cursor.dir/vnd.de.dennisguse.aggregatedstatistics"), + MARKERS((String) null, "vnd.android.cursor.dir/vnd.de.dennisguse.waypoint"), + MARKERS_BY_ID((String) null, "vnd.android.cursor.dir/vnd.de.dennisguse.waypoint"), @Deprecated //TODO Should not be used anymore - MARKERS_BY_TRACKID, + MARKERS_BY_TRACKID((String) null, "vnd.android.cursor.dir/vnd.de.dennisguse.waypoint"), - DASHBOARD_TRACKS_BY_IDS(Uri.parse(CONTENT_BASE_URI + "/dashboard/tracks/"), TracksColumns.CONTENT_TYPE), - DASHBOARD_TRACKPOINTS_BY_TRACKIDS(Uri.parse(CONTENT_BASE_URI + "/dashboard/trackpoints/"), TrackPointsColumns.CONTENT_TYPE), - DASHBOARD_MARKERS_BY_TRACKIDS(Uri.parse(CONTENT_BASE_URI + "/dashboard/markers/"), MarkerColumns.CONTENT_TYPE); + DASHBOARD_TRACKS_BY_IDS("/dashboard/tracks/", "vnd.android.cursor.dir/vnd.de.dennisguse.track"), + DASHBOARD_TRACKPOINTS_BY_TRACKIDS("/dashboard/trackpoints/", "vnd.android.cursor.dir/vnd.de.dennisguse.trackpoint"), + DASHBOARD_MARKERS_BY_TRACKIDS("/dashboard/markers/", "vnd.android.cursor.dir/vnd.de.dennisguse.waypoint"); private final Uri uri; @@ -466,7 +449,11 @@ public class CustomContentProvider extends ContentProvider { this.contentType = null; } - UrlType(Uri uri, String contentType) { + UrlType(@NonNull String path, @NonNull String contentType) { + this(Uri.parse(CONTENT_BASE_URI + path), contentType); + } + + UrlType(@NonNull Uri uri, @NonNull String contentType) { this.uri = uri; this.contentType = contentType; } @@ -478,5 +465,9 @@ public class CustomContentProvider extends ContentProvider { String getPath() { return uri.getPath(); } + + public String getContentType() { + return contentType; + } } } diff --git a/src/main/java/de/dennisguse/opentracks/data/tables/MarkerColumns.java b/src/main/java/de/dennisguse/opentracks/data/tables/MarkerColumns.java index 24511e9c4..2fc550e24 100644 --- a/src/main/java/de/dennisguse/opentracks/data/tables/MarkerColumns.java +++ b/src/main/java/de/dennisguse/opentracks/data/tables/MarkerColumns.java @@ -34,8 +34,6 @@ public interface MarkerColumns extends BaseColumns { String TABLE_NAME = "markers"; Uri CONTENT_URI = Uri.parse(CustomContentProvider.CONTENT_BASE_URI + "/" + TABLE_NAME); Uri CONTENT_URI_BY_TRACKID = Uri.parse(CustomContentProvider.CONTENT_BASE_URI + "/" + TABLE_NAME + "/trackid"); - String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.de.dennisguse.waypoint"; - String CONTENT_ITEMTYPE = "vnd.android.cursor.item/vnd.de.dennisguse.waypoint"; String DEFAULT_SORT_ORDER = _ID; // Columns diff --git a/src/main/java/de/dennisguse/opentracks/data/tables/TrackPointsColumns.java b/src/main/java/de/dennisguse/opentracks/data/tables/TrackPointsColumns.java index 0c75c295b..e8b1b590f 100644 --- a/src/main/java/de/dennisguse/opentracks/data/tables/TrackPointsColumns.java +++ b/src/main/java/de/dennisguse/opentracks/data/tables/TrackPointsColumns.java @@ -31,8 +31,6 @@ public interface TrackPointsColumns extends BaseColumns { String TABLE_NAME = "trackpoints"; Uri CONTENT_URI_BY_ID = Uri.parse(CustomContentProvider.CONTENT_BASE_URI + "/" + TABLE_NAME); Uri CONTENT_URI_BY_TRACKID = Uri.parse(CustomContentProvider.CONTENT_BASE_URI + "/" + TABLE_NAME + "/trackid"); - String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.de.dennisguse.trackpoint"; - String CONTENT_ITEMTYPE = "vnd.android.cursor.item/vnd.de.dennisguse.trackpoint"; String DEFAULT_SORT_ORDER = _ID; // Columns diff --git a/src/main/java/de/dennisguse/opentracks/data/tables/TracksColumns.java b/src/main/java/de/dennisguse/opentracks/data/tables/TracksColumns.java index 633541413..b0d4d304e 100644 --- a/src/main/java/de/dennisguse/opentracks/data/tables/TracksColumns.java +++ b/src/main/java/de/dennisguse/opentracks/data/tables/TracksColumns.java @@ -31,9 +31,6 @@ public interface TracksColumns extends BaseColumns { String TABLE_NAME = "tracks"; Uri CONTENT_URI = Uri.parse(CustomContentProvider.CONTENT_BASE_URI + "/" + TABLE_NAME); Uri CONTENT_URI_SENSOR_STATS = Uri.parse(CustomContentProvider.CONTENT_BASE_URI + "/" + TABLE_NAME + "/sensorstats"); - Uri CONTENT_URI_AGGREGATED_STATISTICS = Uri.parse(CustomContentProvider.CONTENT_BASE_URI + "/" + TABLE_NAME + "/aggregated/"); - String CONTENT_TYPE = "vnd.android.cursor.dir/vnd.de.dennisguse.track"; - String CONTENT_ITEMTYPE = "vnd.android.cursor.item/vnd.de.dennisguse.track"; String DEFAULT_SORT_ORDER = _ID; // Columns