From 3a23a412c832edae0a065ada9157812add68c8cf Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Sun, 8 May 2022 19:57:07 +0200 Subject: [PATCH] Cleanup: use explicit preference identifiers for TrackFileFormat. --- .../data/ShareContentProviderTest.java | 2 +- .../settings/PreferencesUtilsTest.java | 4 ++-- .../opentracks/data/ShareContentProvider.java | 12 +++++----- .../opentracks/io/file/TrackFileFormat.java | 24 +++++++++++-------- .../ImportExportSettingsFragment.java | 2 +- .../opentracks/settings/PreferencesUtils.java | 8 +++---- src/main/res/values/settings.xml | 2 +- 7 files changed, 28 insertions(+), 26 deletions(-) diff --git a/src/androidTest/java/de/dennisguse/opentracks/data/ShareContentProviderTest.java b/src/androidTest/java/de/dennisguse/opentracks/data/ShareContentProviderTest.java index c5e22120c..ad0b43b63 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/data/ShareContentProviderTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/data/ShareContentProviderTest.java @@ -40,6 +40,6 @@ public class ShareContentProviderTest { trackIds.add(new Track.Id(1)); Pair shareURIandMIME = ShareContentProvider.createURI(trackIds, "../../&1=1", TrackFileFormat.KML_WITH_TRACKDETAIL_AND_SENSORDATA); - assertEquals(Uri.parse("content://de.dennisguse.opentracks.debug.content/tracks/kml_with_trackdetail_and_sensordata/1/..%2F..%2F%261%3D1.kml"), shareURIandMIME.first); + assertEquals(Uri.parse("content://de.dennisguse.opentracks.debug.content/tracks/KML_WITH_TRACKDETAIL_AND_SENSORDATA/1/..%2F..%2F%261%3D1.kml"), shareURIandMIME.first); } } \ No newline at end of file diff --git a/src/androidTest/java/de/dennisguse/opentracks/settings/PreferencesUtilsTest.java b/src/androidTest/java/de/dennisguse/opentracks/settings/PreferencesUtilsTest.java index b2cf9498f..09f30066e 100644 --- a/src/androidTest/java/de/dennisguse/opentracks/settings/PreferencesUtilsTest.java +++ b/src/androidTest/java/de/dennisguse/opentracks/settings/PreferencesUtilsTest.java @@ -58,7 +58,7 @@ public class PreferencesUtilsTest { TrackFileFormat trackFileFormat = PreferencesUtils.getExportTrackFileFormat(); // then - assertEquals(TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA, trackFileFormat); + assertEquals(TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES, trackFileFormat); } @Test @@ -73,7 +73,7 @@ public class PreferencesUtilsTest { TrackFileFormat trackFileFormat = PreferencesUtils.getExportTrackFileFormat(); // then - assertEquals(TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA, trackFileFormat); + assertEquals(TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES, trackFileFormat); } @Test diff --git a/src/main/java/de/dennisguse/opentracks/data/ShareContentProvider.java b/src/main/java/de/dennisguse/opentracks/data/ShareContentProvider.java index e99f4aa39..db6500994 100644 --- a/src/main/java/de/dennisguse/opentracks/data/ShareContentProvider.java +++ b/src/main/java/de/dennisguse/opentracks/data/ShareContentProvider.java @@ -59,13 +59,13 @@ public class ShareContentProvider extends CustomContentProvider { private static final String TRACKID_DELIMITER = "_"; static { - uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, TracksColumns.TABLE_NAME + "/" + TrackFileFormat.GPX.getName() + "/*/*", URI_GPX); + uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, TracksColumns.TABLE_NAME + "/" + TrackFileFormat.GPX.getPreferenceId() + "/*/*", URI_GPX); - uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, TracksColumns.TABLE_NAME + "/" + TrackFileFormat.KML_WITH_TRACKDETAIL_AND_SENSORDATA.getName() + "/*/*", URI_KML_WITH_TRACKDETAIL_SENSORDATA); + uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, TracksColumns.TABLE_NAME + "/" + TrackFileFormat.KML_WITH_TRACKDETAIL_AND_SENSORDATA.getPreferenceId() + "/*/*", URI_KML_WITH_TRACKDETAIL_SENSORDATA); - uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, TracksColumns.TABLE_NAME + "/" + TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA.getName() + "/*/*", URI_KMZ_WITH_TRACKDETAIL_AND_SENSORDATA); - uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, TracksColumns.TABLE_NAME + "/" + TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES.getName() + "/*/*", URI_KMZ_WITH_TRACKDETAIL_SENSORDATA_AND_PICTURES); - uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, TracksColumns.TABLE_NAME + "/" + TrackFileFormat.CSV.getName() + "/*/*", URI_CSV); + uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, TracksColumns.TABLE_NAME + "/" + TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA.getPreferenceId() + "/*/*", URI_KMZ_WITH_TRACKDETAIL_AND_SENSORDATA); + uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, TracksColumns.TABLE_NAME + "/" + TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES.getPreferenceId() + "/*/*", URI_KMZ_WITH_TRACKDETAIL_SENSORDATA_AND_PICTURES); + uriMatcher.addURI(ContentProviderUtils.AUTHORITY_PACKAGE, TracksColumns.TABLE_NAME + "/" + TrackFileFormat.CSV.getPreferenceId() + "/*/*", URI_CSV); } /** @@ -91,7 +91,7 @@ public class ShareContentProvider extends CustomContentProvider { } trackIdBuilder.deleteCharAt(trackIdBuilder.lastIndexOf(TRACKID_DELIMITER)); - Uri uri = Uri.parse(TracksColumns.CONTENT_URI + "/" + trackFileFormat.getName() + "/" + trackIdBuilder + "/" + Uri.encode(trackName) + "." + trackFileFormat.getExtension()); + Uri uri = Uri.parse(TracksColumns.CONTENT_URI + "/" + trackFileFormat.getPreferenceId() + "/" + trackIdBuilder + "/" + Uri.encode(trackName) + "." + trackFileFormat.getExtension()); String mime = getTypeMime(uri); Log.d(TAG, "Created uri " + uri + " with MIME " + mime); diff --git a/src/main/java/de/dennisguse/opentracks/io/file/TrackFileFormat.java b/src/main/java/de/dennisguse/opentracks/io/file/TrackFileFormat.java index 607cfc984..cc437110a 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/TrackFileFormat.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/TrackFileFormat.java @@ -2,8 +2,6 @@ package de.dennisguse.opentracks.io.file; import android.content.Context; -import java.util.Locale; - import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.data.ContentProviderUtils; import de.dennisguse.opentracks.io.file.exporter.CSVTrackExporter; @@ -19,7 +17,7 @@ import de.dennisguse.opentracks.io.file.exporter.TrackExporter; */ public enum TrackFileFormat { - KML_WITH_TRACKDETAIL_AND_SENSORDATA { + KML_WITH_TRACKDETAIL_AND_SENSORDATA("KML_WITH_TRACKDETAIL_AND_SENSORDATA") { @Override public TrackExporter createTrackExporter(Context context) { return new KMLTrackExporter(context, false); @@ -36,7 +34,7 @@ public enum TrackFileFormat { }, @Deprecated //TODO Check if we really need this - KMZ_WITH_TRACKDETAIL_AND_SENSORDATA { + KMZ_WITH_TRACKDETAIL_AND_SENSORDATA("KMZ_WITH_TRACKDETAIL_AND_SENSORDATA") { private static final boolean exportPhotos = false; @@ -61,7 +59,7 @@ public enum TrackFileFormat { } }, - KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES { + KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES("KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES") { private static final boolean exportPhotos = true; @@ -87,7 +85,7 @@ public enum TrackFileFormat { }, - GPX { + GPX("GPX") { @Override public TrackExporter createTrackExporter(Context context) { return new GPXTrackExporter(new ContentProviderUtils(context), context.getString(R.string.app_name)); @@ -103,7 +101,7 @@ public enum TrackFileFormat { } }, - CSV { + CSV("CSV") { @Override public TrackExporter createTrackExporter(Context context) { return new CSVTrackExporter(new ContentProviderUtils(context)); @@ -124,6 +122,12 @@ public enum TrackFileFormat { private static final String MIME_KML = "application/vnd.google-earth.kml+xml"; + private final String preferenceId; + + TrackFileFormat(String preferenceId) { + this.preferenceId = preferenceId; + } + /** * Returns the mime type for each format. */ @@ -149,9 +153,9 @@ public enum TrackFileFormat { } /** - * Returns the name for each format. + * The identifier to be stored in the preferences. */ - public String getName() { - return this.name().toLowerCase(Locale.US); + public String getPreferenceId() { + return preferenceId; } } \ No newline at end of file diff --git a/src/main/java/de/dennisguse/opentracks/settings/ImportExportSettingsFragment.java b/src/main/java/de/dennisguse/opentracks/settings/ImportExportSettingsFragment.java index 9122264fe..66eb796b8 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/ImportExportSettingsFragment.java +++ b/src/main/java/de/dennisguse/opentracks/settings/ImportExportSettingsFragment.java @@ -61,7 +61,7 @@ public class ImportExportSettingsFragment extends PreferenceFragmentCompat { String trackFileFormatUpperCase = trackFileFormat.getExtension().toUpperCase(Locale.US); //ASCII upper case int photoMessageId = trackFileFormat.includesPhotos() ? R.string.export_with_photos : R.string.export_without_photos; entries[i] = String.format("%s (%s)", trackFileFormatUpperCase, getString(photoMessageId)); - entryValues[i] = trackFileFormat.name(); + entryValues[i] = trackFileFormat.getPreferenceId(); } ListPreference listPreference = findPreference(getString(R.string.export_trackfileformat_key)); diff --git a/src/main/java/de/dennisguse/opentracks/settings/PreferencesUtils.java b/src/main/java/de/dennisguse/opentracks/settings/PreferencesUtils.java index f67d365fa..39c07a8cb 100644 --- a/src/main/java/de/dennisguse/opentracks/settings/PreferencesUtils.java +++ b/src/main/java/de/dennisguse/opentracks/settings/PreferencesUtils.java @@ -587,11 +587,9 @@ public class PreferencesUtils { public static TrackFileFormat getExportTrackFileFormat() { final String TRACKFILEFORMAT_NAME_DEFAULT = getString(R.string.export_trackfileformat_default, null); String trackFileFormatName = getString(R.string.export_trackfileformat_key, TRACKFILEFORMAT_NAME_DEFAULT); - try { - return TrackFileFormat.valueOf(trackFileFormatName); - } catch (Exception e) { - return TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA; - } + return Arrays.stream(TrackFileFormat.values()) + .filter(format -> format.getPreferenceId().equals(trackFileFormatName)) + .findFirst().orElse(TrackFileFormat.KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES); } public static boolean getPreventReimportTracks() { diff --git a/src/main/res/values/settings.xml b/src/main/res/values/settings.xml index cda15f4b0..bc432931b 100644 --- a/src/main/res/values/settings.xml +++ b/src/main/res/values/settings.xml @@ -298,7 +298,7 @@ preventReimportTrackKey true - settingsAPI + settingsAPI apiEnabledKey false apiDashboardEnabledKey