forked from upstream-mirrors/OpenTracks
Make track import behavior on duplicate UUID configurable (default: import with a new UUID).
This commit is contained in:
@@ -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.
|
||||
|
||||
+12
-1
@@ -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);
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
|
||||
@@ -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">
|
||||
|
||||
Reference in New Issue
Block a user