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 2c358302a..a15392b25 100644 --- a/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java +++ b/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java @@ -30,7 +30,6 @@ import java.io.File; import java.util.ArrayList; import java.util.Iterator; import java.util.List; -import java.util.UUID; import de.dennisguse.opentracks.BuildConfig; import de.dennisguse.opentracks.android.ContentResolverWrapper; @@ -245,18 +244,6 @@ public class ContentProviderUtils { return null; } - /** - * @param uuid the UUID of a track. - */ - public Track getTrack(UUID uuid) { - try (Cursor cursor = getTrackCursor(TracksColumns.UUID + "=?", new String[]{uuid.toString()}, TracksColumns._ID)) { - if (cursor != null && cursor.moveToNext()) { - return createTrack(cursor); - } - } - return null; - } - /** * Gets a track cursor. * The caller owns the returned cursor and is responsible for closing it. 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 63b032cb1..17415ad85 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 @@ -273,7 +273,18 @@ abstract class AbstractFileTrackImporter extends DefaultHandler implements Track trackData.trackStatisticsUpdater.updateTime(trackData.importTime); } trackData.track.setTrackStatistics(trackData.trackStatisticsUpdater.getTrackStatistics()); - contentProviderUtils.updateTrack(trackData.track); + + try { + contentProviderUtils.updateTrack(trackData.track); + } catch (SQLiteConstraintException e) { + if (PreferencesUtils.getPreventReimportTracks(context)) { + throw e; + } + + //TODO This is a workaround until we have proper UI. + trackData.track.setUuid(UUID.randomUUID()); + contentProviderUtils.updateTrack(trackData.track); + } } /** diff --git a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java index a875a0948..a0e9e511f 100644 --- a/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java +++ b/src/main/java/de/dennisguse/opentracks/util/PreferencesUtils.java @@ -340,6 +340,11 @@ public class PreferencesUtils { } } + public static boolean getPreventReimportTracks(Context context) { + final boolean defaultValue = getBoolean(context, R.bool.import_prevent_reimport_title_default, false); + return getBoolean(context, R.string.import_prevent_reimport_title_key, defaultValue); + } + @Deprecated //Use TrackRecordingService public static boolean isRecording(Context context) { long recordingTrackId = getRecordingTrackId(context); diff --git a/src/main/res/values/settings.xml b/src/main/res/values/settings.xml index c6b69c8e1..cb370c1ea 100644 --- a/src/main/res/values/settings.xml +++ b/src/main/res/values/settings.xml @@ -227,5 +227,8 @@ KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES + preventReimportTrackKey + false + settingsRecordingKey \ No newline at end of file diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index 7779da143..825d22db5 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -390,6 +390,8 @@ limitations under the License. Imperial (mi, ft) Metric (km, m) Preferred units + + Prevent re-import of tracks Share track file I think you might be interested in this track.\n\n%1$s diff --git a/src/main/res/xml/settings.xml b/src/main/res/xml/settings.xml index 6da8f3fcf..295ee0798 100644 --- a/src/main/res/xml/settings.xml +++ b/src/main/res/xml/settings.xml @@ -153,6 +153,10 @@ limitations under the License. android:key="@string/export_trackfileformat_key" android:title="@string/settings_default_trackfileformat" app:useSimpleSummaryProvider="true" /> +