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.ArrayList;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
|
||||||
|
|
||||||
import de.dennisguse.opentracks.BuildConfig;
|
import de.dennisguse.opentracks.BuildConfig;
|
||||||
import de.dennisguse.opentracks.android.ContentResolverWrapper;
|
import de.dennisguse.opentracks.android.ContentResolverWrapper;
|
||||||
@@ -245,18 +244,6 @@ public class ContentProviderUtils {
|
|||||||
return null;
|
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.
|
* Gets a track cursor.
|
||||||
* The caller owns the returned cursor and is responsible for closing it.
|
* 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.trackStatisticsUpdater.updateTime(trackData.importTime);
|
||||||
}
|
}
|
||||||
trackData.track.setTrackStatistics(trackData.trackStatisticsUpdater.getTrackStatistics());
|
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
|
@Deprecated //Use TrackRecordingService
|
||||||
public static boolean isRecording(Context context) {
|
public static boolean isRecording(Context context) {
|
||||||
long recordingTrackId = getRecordingTrackId(context);
|
long recordingTrackId = getRecordingTrackId(context);
|
||||||
|
|||||||
@@ -227,5 +227,8 @@
|
|||||||
<!-- See TrackFileFormat -->
|
<!-- See TrackFileFormat -->
|
||||||
<string name="export_trackfileformat_default" translatable="false">KMZ_WITH_TRACKDETAIL_AND_SENSORDATA_AND_PICTURES</string>
|
<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>
|
<string name="settings_recording_key" translatable="false">settingsRecordingKey</string>
|
||||||
</resources>
|
</resources>
|
||||||
@@ -390,6 +390,8 @@ limitations under the License.
|
|||||||
<string name="settings_stats_units_imperial">Imperial (mi, ft)</string>
|
<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_metric">Metric (km, m)</string>
|
||||||
<string name="settings_stats_units_title">Preferred units</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 -->
|
<!-- Share Track -->
|
||||||
<string name="share_track_share_file">Share track file</string>
|
<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>
|
<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:key="@string/export_trackfileformat_key"
|
||||||
android:title="@string/settings_default_trackfileformat"
|
android:title="@string/settings_default_trackfileformat"
|
||||||
app:useSimpleSummaryProvider="true" />
|
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>
|
||||||
|
|
||||||
<PreferenceCategory android:title="@string/settings_reset">
|
<PreferenceCategory android:title="@string/settings_reset">
|
||||||
|
|||||||
Reference in New Issue
Block a user