Make track import behavior on duplicate UUID configurable (default: import with a new UUID).

This commit is contained in:
Dennis Guse
2020-08-13 17:58:22 +02:00
parent f8afa9dbad
commit c26a5edc03
6 changed files with 26 additions and 14 deletions
@@ -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.
@@ -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);
}
}
/**
@@ -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);
+3
View File
@@ -227,5 +227,8 @@
<!-- See TrackFileFormat -->
<string name="export_trackfileformat_default" translatable="false">KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES</string>
<string name="import_prevent_reimport_title_key" translatable="false">preventReimportTrackKey</string>
<bool name="import_prevent_reimport_title_default">false</bool>
<string name="settings_recording_key" translatable="false">settingsRecordingKey</string>
</resources>
+2
View File
@@ -390,6 +390,8 @@ limitations under the License.
<string name="settings_stats_units_imperial">Imperial (mi, ft)</string>
<string name="settings_stats_units_metric">Metric (km, m)</string>
<string name="settings_stats_units_title">Preferred units</string>
<string name="settings_prevent_reimport_tracks_title" translatable="false">Prevent re-import of tracks</string>
<!-- Share Track -->
<string name="share_track_share_file">Share track file</string>
<string name="share_track_share_file_body">I think you might be interested in this track.\n\n%1$s</string>
+4
View File
@@ -153,6 +153,10 @@ limitations under the License.
android:key="@string/export_trackfileformat_key"
android:title="@string/settings_default_trackfileformat"
app:useSimpleSummaryProvider="true" />
<SwitchPreferenceCompat
android:defaultValue="@bool/import_prevent_reimport_title_default"
android:key="@string/import_prevent_reimport_title_key"
android:title="@string/settings_prevent_reimport_tracks_title" />
</PreferenceCategory>
<PreferenceCategory android:title="@string/settings_reset">