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);