forked from upstream-mirrors/OpenTracks
@@ -37,7 +37,7 @@ public class TestDataUtil {
|
|||||||
public static Track createTrack(Track.Id trackId) {
|
public static Track createTrack(Track.Id trackId) {
|
||||||
Track track = new Track();
|
Track track = new Track();
|
||||||
track.setId(trackId);
|
track.setId(trackId);
|
||||||
track.setName("Test: " + trackId.getId());
|
track.setName("Test: " + trackId.id());
|
||||||
|
|
||||||
return track;
|
return track;
|
||||||
}
|
}
|
||||||
|
|||||||
+10
-10
@@ -119,7 +119,7 @@ public class CustomContentProviderUtilsTest {
|
|||||||
assertNotNull(trackPoint);
|
assertNotNull(trackPoint);
|
||||||
locations.add(trackPoint);
|
locations.add(trackPoint);
|
||||||
// Make sure the IDs are returned in the right order.
|
// Make sure the IDs are returned in the right order.
|
||||||
assertEquals(lastPointId.getId() - numPoints + locations.size(), trackPoint.getId().getId());
|
assertEquals(lastPointId.id() - numPoints + locations.size(), trackPoint.getId().id());
|
||||||
}
|
}
|
||||||
assertEquals(numPoints, locations.size());
|
assertEquals(numPoints, locations.size());
|
||||||
}
|
}
|
||||||
@@ -128,7 +128,7 @@ public class CustomContentProviderUtilsTest {
|
|||||||
private TrackPoint.Id initializeTrack(Track.Id id, int numPoints) {
|
private TrackPoint.Id initializeTrack(Track.Id id, int numPoints) {
|
||||||
Track track = new Track();
|
Track track = new Track();
|
||||||
track.setId(id);
|
track.setId(id);
|
||||||
track.setName("Test: " + id.getId());
|
track.setName("Test: " + id.id());
|
||||||
contentProviderUtils.insertTrack(track);
|
contentProviderUtils.insertTrack(track);
|
||||||
track = contentProviderUtils.getTrack(id);
|
track = contentProviderUtils.getTrack(id);
|
||||||
assertNotNull(track);
|
assertNotNull(track);
|
||||||
@@ -155,7 +155,7 @@ public class CustomContentProviderUtilsTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
assertTrue(numPoints == 0 || lastPointId.getId() > 0);
|
assertTrue(numPoints == 0 || lastPointId.id() > 0);
|
||||||
assertEquals(numPoints, counter);
|
assertEquals(numPoints, counter);
|
||||||
|
|
||||||
return lastPointId;
|
return lastPointId;
|
||||||
@@ -172,7 +172,7 @@ public class CustomContentProviderUtilsTest {
|
|||||||
// Id
|
// Id
|
||||||
when(cursorMock.getColumnIndexOrThrow(TracksColumns._ID)).thenReturn(columnIndex);
|
when(cursorMock.getColumnIndexOrThrow(TracksColumns._ID)).thenReturn(columnIndex);
|
||||||
when(cursorMock.isNull(columnIndex)).thenReturn(false);
|
when(cursorMock.isNull(columnIndex)).thenReturn(false);
|
||||||
when(cursorMock.getLong(columnIndex)).thenReturn(trackId.getId());
|
when(cursorMock.getLong(columnIndex)).thenReturn(trackId.id());
|
||||||
|
|
||||||
//Uuid
|
//Uuid
|
||||||
columnIndex++;
|
columnIndex++;
|
||||||
@@ -182,7 +182,7 @@ public class CustomContentProviderUtilsTest {
|
|||||||
|
|
||||||
// Name
|
// Name
|
||||||
columnIndex++;
|
columnIndex++;
|
||||||
String name = NAME_PREFIX + trackId.getId();
|
String name = NAME_PREFIX + trackId.id();
|
||||||
when(cursorMock.getColumnIndexOrThrow(TracksColumns.NAME)).thenReturn(columnIndex);
|
when(cursorMock.getColumnIndexOrThrow(TracksColumns.NAME)).thenReturn(columnIndex);
|
||||||
when(cursorMock.isNull(columnIndex)).thenReturn(false);
|
when(cursorMock.isNull(columnIndex)).thenReturn(false);
|
||||||
when(cursorMock.getString(columnIndex)).thenReturn(name);
|
when(cursorMock.getString(columnIndex)).thenReturn(name);
|
||||||
@@ -460,7 +460,7 @@ public class CustomContentProviderUtilsTest {
|
|||||||
Marker marker = contentProviderUtils.createMarker(cursorMock);
|
Marker marker = contentProviderUtils.createMarker(cursorMock);
|
||||||
assertEquals(id, marker.getId().id());
|
assertEquals(id, marker.getId().id());
|
||||||
assertEquals(name, marker.getName());
|
assertEquals(name, marker.getName());
|
||||||
assertEquals(trackId, marker.getTrackId().getId());
|
assertEquals(trackId, marker.getTrackId().id());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -640,7 +640,7 @@ public class CustomContentProviderUtilsTest {
|
|||||||
marker.setDescription(TEST_DESC);
|
marker.setDescription(TEST_DESC);
|
||||||
Marker.Id markerId = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(marker)));
|
Marker.Id markerId = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(marker)));
|
||||||
|
|
||||||
File dir = new File(FileUtils.getPhotoDir(context), "" + trackId.getId());
|
File dir = new File(FileUtils.getPhotoDir(context), "" + trackId.id());
|
||||||
assertTrue(dir.exists());
|
assertTrue(dir.exists());
|
||||||
assertTrue(dir.isDirectory());
|
assertTrue(dir.isDirectory());
|
||||||
assertEquals(1, dir.list().length);
|
assertEquals(1, dir.list().length);
|
||||||
@@ -675,7 +675,7 @@ public class CustomContentProviderUtilsTest {
|
|||||||
marker.setDescription(TEST_DESC);
|
marker.setDescription(TEST_DESC);
|
||||||
Marker.Id markerId = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(marker)));
|
Marker.Id markerId = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(marker)));
|
||||||
|
|
||||||
File dir = new File(FileUtils.getPhotoDir(context), "" + trackId.getId());
|
File dir = new File(FileUtils.getPhotoDir(context), "" + trackId.id());
|
||||||
assertTrue(dir.exists());
|
assertTrue(dir.exists());
|
||||||
assertTrue(dir.isDirectory());
|
assertTrue(dir.isDirectory());
|
||||||
assertEquals(1, dir.list().length);
|
assertEquals(1, dir.list().length);
|
||||||
@@ -712,7 +712,7 @@ public class CustomContentProviderUtilsTest {
|
|||||||
Marker.Id markerId = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(marker)));
|
Marker.Id markerId = new Marker.Id(ContentUris.parseId(contentProviderUtils.insertMarker(marker)));
|
||||||
contentProviderUtils.insertMarker(otherMarker);
|
contentProviderUtils.insertMarker(otherMarker);
|
||||||
|
|
||||||
File dir = new File(FileUtils.getPhotoDir(context), "" + trackId.getId());
|
File dir = new File(FileUtils.getPhotoDir(context), "" + trackId.id());
|
||||||
assertTrue(dir.exists());
|
assertTrue(dir.exists());
|
||||||
assertTrue(dir.isDirectory());
|
assertTrue(dir.isDirectory());
|
||||||
assertEquals(2, dir.list().length);
|
assertEquals(2, dir.list().length);
|
||||||
@@ -889,7 +889,7 @@ public class CustomContentProviderUtilsTest {
|
|||||||
for (int i = 0; i < trackpointIds.size(); i++) {
|
for (int i = 0; i < trackpointIds.size(); i++) {
|
||||||
assertTrue(trackPointIterator.hasNext());
|
assertTrue(trackPointIterator.hasNext());
|
||||||
TrackPoint trackPoint = trackPointIterator.next();
|
TrackPoint trackPoint = trackPointIterator.next();
|
||||||
assertEquals(startTrackPointId.getId() + i, trackPoint.getId().getId());
|
assertEquals(startTrackPointId.id() + i, trackPoint.getId().id());
|
||||||
|
|
||||||
checkLocation(i, trackPoint.getLocation());
|
checkLocation(i, trackPoint.getLocation());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -75,6 +75,6 @@ public class TrackNameUtilsTest {
|
|||||||
@Test
|
@Test
|
||||||
public void testTrackName_number() {
|
public void testTrackName_number() {
|
||||||
PreferencesUtils.setString(R.string.track_name_key, CONTEXT.getString(R.string.settings_recording_track_name_number_value));
|
PreferencesUtils.setString(R.string.track_name_key, CONTEXT.getString(R.string.settings_recording_track_name_number_value));
|
||||||
assertEquals("Track " + TRACK_ID.getId(), TrackNameUtils.getTrackName(CONTEXT, TRACK_ID, START_TIME));
|
assertEquals("Track " + TRACK_ID.id(), TrackNameUtils.getTrackName(CONTEXT, TRACK_ID, START_TIME));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ public class TrackEditActivity extends AbstractActivity implements ChooseActivit
|
|||||||
contentProviderUtils = new ContentProviderUtils(this);
|
contentProviderUtils = new ContentProviderUtils(this);
|
||||||
track = contentProviderUtils.getTrack(trackId);
|
track = contentProviderUtils.getTrack(trackId);
|
||||||
if (track == null) {
|
if (track == null) {
|
||||||
Log.e(TAG, "No track for " + trackId.getId());
|
Log.e(TAG, "No track for " + trackId.id());
|
||||||
finish();
|
finish();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -189,13 +189,13 @@ public class ContentProviderUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String whereClause = String.format(TracksColumns._ID + " IN (%s)", TextUtils.join(",", Collections.nCopies(trackIds.size(), "?")));
|
String whereClause = String.format(TracksColumns._ID + " IN (%s)", TextUtils.join(",", Collections.nCopies(trackIds.size(), "?")));
|
||||||
contentResolver.delete(TracksColumns.CONTENT_URI, whereClause, trackIds.stream().map(id -> Long.toString(id.getId())).toArray(String[]::new));
|
contentResolver.delete(TracksColumns.CONTENT_URI, whereClause, trackIds.stream().map(trackId -> Long.toString(trackId.id())).toArray(String[]::new));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void deleteTrack(Context context, @NonNull Track.Id trackId) {
|
public void deleteTrack(Context context, @NonNull Track.Id trackId) {
|
||||||
// Delete track folder resources.
|
// Delete track folder resources.
|
||||||
FileUtils.deleteDirectoryRecurse(FileUtils.getPhotoDir(context, trackId));
|
FileUtils.deleteDirectoryRecurse(FileUtils.getPhotoDir(context, trackId));
|
||||||
contentResolver.delete(TracksColumns.CONTENT_URI, TracksColumns._ID + "=?", new String[]{Long.toString(trackId.getId())});
|
contentResolver.delete(TracksColumns.CONTENT_URI, TracksColumns._ID + "=?", new String[]{Long.toString(trackId.id())});
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO Only use for tests; also move to tests.
|
//TODO Only use for tests; also move to tests.
|
||||||
@@ -229,7 +229,7 @@ public class ContentProviderUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Track getTrack(@NonNull Track.Id trackId) {
|
public Track getTrack(@NonNull Track.Id trackId) {
|
||||||
try (Cursor cursor = getTrackCursor(TracksColumns._ID + "=?", new String[]{Long.toString(trackId.getId())}, null)) {
|
try (Cursor cursor = getTrackCursor(TracksColumns._ID + "=?", new String[]{Long.toString(trackId.id())}, null)) {
|
||||||
if (cursor != null && cursor.moveToNext()) {
|
if (cursor != null && cursor.moveToNext()) {
|
||||||
return createTrack(cursor);
|
return createTrack(cursor);
|
||||||
}
|
}
|
||||||
@@ -278,7 +278,7 @@ public class ContentProviderUtils {
|
|||||||
* @param track the track
|
* @param track the track
|
||||||
*/
|
*/
|
||||||
public void updateTrack(Track track) {
|
public void updateTrack(Track track) {
|
||||||
contentResolver.update(TracksColumns.CONTENT_URI, createContentValues(track), TracksColumns._ID + "=?", new String[]{Long.toString(track.getId().getId())});
|
contentResolver.update(TracksColumns.CONTENT_URI, createContentValues(track), TracksColumns._ID + "=?", new String[]{Long.toString(track.getId().id())});
|
||||||
}
|
}
|
||||||
|
|
||||||
private ContentValues createContentValues(Track track) {
|
private ContentValues createContentValues(Track track) {
|
||||||
@@ -286,7 +286,7 @@ public class ContentProviderUtils {
|
|||||||
TrackStatistics trackStatistics = track.getTrackStatistics();
|
TrackStatistics trackStatistics = track.getTrackStatistics();
|
||||||
|
|
||||||
if (track.getId() != null) {
|
if (track.getId() != null) {
|
||||||
values.put(TracksColumns._ID, track.getId().getId());
|
values.put(TracksColumns._ID, track.getId().id());
|
||||||
}
|
}
|
||||||
values.put(TracksColumns.UUID, UUIDUtils.toBytes(track.getUuid()));
|
values.put(TracksColumns.UUID, UUIDUtils.toBytes(track.getUuid()));
|
||||||
values.put(TracksColumns.NAME, track.getName());
|
values.put(TracksColumns.NAME, track.getName());
|
||||||
@@ -315,7 +315,7 @@ public class ContentProviderUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void updateTrackStatistics(@NonNull Track.Id trackId, @NonNull TrackStatistics trackStatistics) {
|
public void updateTrackStatistics(@NonNull Track.Id trackId, @NonNull TrackStatistics trackStatistics) {
|
||||||
contentResolver.update(TracksColumns.CONTENT_URI, createContentValues(trackStatistics), TracksColumns._ID + "=?", new String[]{Long.toString(trackId.getId())});
|
contentResolver.update(TracksColumns.CONTENT_URI, createContentValues(trackStatistics), TracksColumns._ID + "=?", new String[]{Long.toString(trackId.id())});
|
||||||
}
|
}
|
||||||
|
|
||||||
private ContentValues createContentValues(TrackStatistics trackStatistics) {
|
private ContentValues createContentValues(TrackStatistics trackStatistics) {
|
||||||
@@ -413,7 +413,7 @@ public class ContentProviderUtils {
|
|||||||
public Integer getNextMarkerNumber(@NonNull Track.Id trackId) {
|
public Integer getNextMarkerNumber(@NonNull Track.Id trackId) {
|
||||||
String[] projection = {MarkerColumns._ID};
|
String[] projection = {MarkerColumns._ID};
|
||||||
String selection = MarkerColumns.TRACKID + "=?";
|
String selection = MarkerColumns.TRACKID + "=?";
|
||||||
String[] selectionArgs = new String[]{Long.toString(trackId.getId())};
|
String[] selectionArgs = new String[]{Long.toString(trackId.id())};
|
||||||
try (Cursor cursor = getMarkerCursor(projection, selection, selectionArgs, MarkerColumns._ID, -1)) {
|
try (Cursor cursor = getMarkerCursor(projection, selection, selectionArgs, MarkerColumns._ID, -1)) {
|
||||||
if (cursor != null) {
|
if (cursor != null) {
|
||||||
return cursor.getCount();
|
return cursor.getCount();
|
||||||
@@ -443,10 +443,10 @@ public class ContentProviderUtils {
|
|||||||
String[] selectionArgs;
|
String[] selectionArgs;
|
||||||
if (minMarkerId != null) {
|
if (minMarkerId != null) {
|
||||||
selection = MarkerColumns.TRACKID + "=? AND " + MarkerColumns._ID + ">=?";
|
selection = MarkerColumns.TRACKID + "=? AND " + MarkerColumns._ID + ">=?";
|
||||||
selectionArgs = new String[]{Long.toString(trackId.getId()), Long.toString(minMarkerId.id())};
|
selectionArgs = new String[]{Long.toString(trackId.id()), Long.toString(minMarkerId.id())};
|
||||||
} else {
|
} else {
|
||||||
selection = MarkerColumns.TRACKID + "=?";
|
selection = MarkerColumns.TRACKID + "=?";
|
||||||
selectionArgs = new String[]{Long.toString(trackId.getId())};
|
selectionArgs = new String[]{Long.toString(trackId.id())};
|
||||||
}
|
}
|
||||||
return getMarkerCursor(null, selection, selectionArgs, MarkerColumns._ID, maxCount);
|
return getMarkerCursor(null, selection, selectionArgs, MarkerColumns._ID, maxCount);
|
||||||
}
|
}
|
||||||
@@ -510,7 +510,7 @@ public class ContentProviderUtils {
|
|||||||
values.put(MarkerColumns.DESCRIPTION, marker.getDescription());
|
values.put(MarkerColumns.DESCRIPTION, marker.getDescription());
|
||||||
values.put(MarkerColumns.CATEGORY, marker.getCategory());
|
values.put(MarkerColumns.CATEGORY, marker.getCategory());
|
||||||
values.put(MarkerColumns.ICON, marker.getIcon());
|
values.put(MarkerColumns.ICON, marker.getIcon());
|
||||||
values.put(MarkerColumns.TRACKID, marker.getTrackId().getId());
|
values.put(MarkerColumns.TRACKID, marker.getTrackId().id());
|
||||||
values.put(MarkerColumns.LENGTH, marker.getLength().toM());
|
values.put(MarkerColumns.LENGTH, marker.getLength().toM());
|
||||||
values.put(MarkerColumns.DURATION, marker.getDuration().toMillis());
|
values.put(MarkerColumns.DURATION, marker.getDuration().toMillis());
|
||||||
|
|
||||||
@@ -632,7 +632,7 @@ public class ContentProviderUtils {
|
|||||||
@Deprecated
|
@Deprecated
|
||||||
public TrackPoint.Id getLastTrackPointId(@NonNull Track.Id trackId) {
|
public TrackPoint.Id getLastTrackPointId(@NonNull Track.Id trackId) {
|
||||||
String selection = TrackPointsColumns._ID + "=(SELECT MAX(" + TrackPointsColumns._ID + ") from " + TrackPointsColumns.TABLE_NAME + " WHERE " + TrackPointsColumns.TRACKID + "=?)";
|
String selection = TrackPointsColumns._ID + "=(SELECT MAX(" + TrackPointsColumns._ID + ") from " + TrackPointsColumns.TABLE_NAME + " WHERE " + TrackPointsColumns.TRACKID + "=?)";
|
||||||
String[] selectionArgs = new String[]{Long.toString(trackId.getId())};
|
String[] selectionArgs = new String[]{Long.toString(trackId.id())};
|
||||||
try (Cursor cursor = getTrackPointCursor(new String[]{TrackPointsColumns._ID}, selection, selectionArgs, TrackPointsColumns._ID)) {
|
try (Cursor cursor = getTrackPointCursor(new String[]{TrackPointsColumns._ID}, selection, selectionArgs, TrackPointsColumns._ID)) {
|
||||||
if (cursor != null && cursor.moveToFirst()) {
|
if (cursor != null && cursor.moveToFirst()) {
|
||||||
return new TrackPoint.Id(cursor.getLong(cursor.getColumnIndexOrThrow(TrackPointsColumns._ID)));
|
return new TrackPoint.Id(cursor.getLong(cursor.getColumnIndexOrThrow(TrackPointsColumns._ID)));
|
||||||
@@ -651,7 +651,7 @@ public class ContentProviderUtils {
|
|||||||
@Deprecated
|
@Deprecated
|
||||||
public TrackPoint.Id getTrackPointId(Track.Id trackId, Location location) {
|
public TrackPoint.Id getTrackPointId(Track.Id trackId, Location location) {
|
||||||
String selection = TrackPointsColumns._ID + "=(SELECT MAX(" + TrackPointsColumns._ID + ") FROM " + TrackPointsColumns.TABLE_NAME + " WHERE " + TrackPointsColumns.TRACKID + "=? AND " + TrackPointsColumns.TIME + "=?)";
|
String selection = TrackPointsColumns._ID + "=(SELECT MAX(" + TrackPointsColumns._ID + ") FROM " + TrackPointsColumns.TABLE_NAME + " WHERE " + TrackPointsColumns.TRACKID + "=? AND " + TrackPointsColumns.TIME + "=?)";
|
||||||
String[] selectionArgs = new String[]{Long.toString(trackId.getId()), Long.toString(location.getTime())};
|
String[] selectionArgs = new String[]{Long.toString(trackId.id()), Long.toString(location.getTime())};
|
||||||
try (Cursor cursor = getTrackPointCursor(new String[]{TrackPointsColumns._ID}, selection, selectionArgs, TrackPointsColumns._ID)) {
|
try (Cursor cursor = getTrackPointCursor(new String[]{TrackPointsColumns._ID}, selection, selectionArgs, TrackPointsColumns._ID)) {
|
||||||
if (cursor != null && cursor.moveToFirst()) {
|
if (cursor != null && cursor.moveToFirst()) {
|
||||||
return new TrackPoint.Id(cursor.getLong(cursor.getColumnIndexOrThrow(TrackPointsColumns._ID)));
|
return new TrackPoint.Id(cursor.getLong(cursor.getColumnIndexOrThrow(TrackPointsColumns._ID)));
|
||||||
@@ -681,10 +681,10 @@ public class ContentProviderUtils {
|
|||||||
String[] selectionArgs;
|
String[] selectionArgs;
|
||||||
if (startTrackPointId != null) {
|
if (startTrackPointId != null) {
|
||||||
selection = TrackPointsColumns.TRACKID + "=? AND " + TrackPointsColumns._ID + ">=?";
|
selection = TrackPointsColumns.TRACKID + "=? AND " + TrackPointsColumns._ID + ">=?";
|
||||||
selectionArgs = new String[]{Long.toString(trackId.getId()), Long.toString(startTrackPointId.getId())};
|
selectionArgs = new String[]{Long.toString(trackId.id()), Long.toString(startTrackPointId.id())};
|
||||||
} else {
|
} else {
|
||||||
selection = TrackPointsColumns.TRACKID + "=?";
|
selection = TrackPointsColumns.TRACKID + "=?";
|
||||||
selectionArgs = new String[]{Long.toString(trackId.getId())};
|
selectionArgs = new String[]{Long.toString(trackId.id())};
|
||||||
}
|
}
|
||||||
|
|
||||||
return getTrackPointCursor(null, selection, selectionArgs, TrackPointsColumns.DEFAULT_SORT_ORDER);
|
return getTrackPointCursor(null, selection, selectionArgs, TrackPointsColumns.DEFAULT_SORT_ORDER);
|
||||||
@@ -699,7 +699,7 @@ public class ContentProviderUtils {
|
|||||||
@Deprecated
|
@Deprecated
|
||||||
public TrackPoint getLastValidTrackPoint(Track.Id trackId) {
|
public TrackPoint getLastValidTrackPoint(Track.Id trackId) {
|
||||||
String selection = TrackPointsColumns._ID + "=(SELECT MAX(" + TrackPointsColumns._ID + ") FROM " + TrackPointsColumns.TABLE_NAME + " WHERE " + TrackPointsColumns.TRACKID + "=? AND " + TrackPointsColumns.TYPE + " IN (" + TrackPoint.Type.SEGMENT_START_AUTOMATIC.type_db + "," + TrackPoint.Type.TRACKPOINT.type_db + "))";
|
String selection = TrackPointsColumns._ID + "=(SELECT MAX(" + TrackPointsColumns._ID + ") FROM " + TrackPointsColumns.TABLE_NAME + " WHERE " + TrackPointsColumns.TRACKID + "=? AND " + TrackPointsColumns.TYPE + " IN (" + TrackPoint.Type.SEGMENT_START_AUTOMATIC.type_db + "," + TrackPoint.Type.TRACKPOINT.type_db + "))";
|
||||||
String[] selectionArgs = new String[]{Long.toString(trackId.getId())};
|
String[] selectionArgs = new String[]{Long.toString(trackId.id())};
|
||||||
return findTrackPointBy(selection, selectionArgs);
|
return findTrackPointBy(selection, selectionArgs);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -722,7 +722,7 @@ public class ContentProviderUtils {
|
|||||||
*/
|
*/
|
||||||
private ContentValues createContentValues(TrackPoint trackPoint, Track.Id trackId) {
|
private ContentValues createContentValues(TrackPoint trackPoint, Track.Id trackId) {
|
||||||
ContentValues values = new ContentValues();
|
ContentValues values = new ContentValues();
|
||||||
values.put(TrackPointsColumns.TRACKID, trackId.getId());
|
values.put(TrackPointsColumns.TRACKID, trackId.id());
|
||||||
values.put(TrackPointsColumns.TYPE, trackPoint.getType().type_db);
|
values.put(TrackPointsColumns.TYPE, trackPoint.getType().type_db);
|
||||||
|
|
||||||
if (trackPoint.hasLocation()) {
|
if (trackPoint.hasLocation()) {
|
||||||
@@ -805,7 +805,7 @@ public class ContentProviderUtils {
|
|||||||
public static String formatIdListForUri(Track.Id... trackIds) {
|
public static String formatIdListForUri(Track.Id... trackIds) {
|
||||||
long[] ids = new long[trackIds.length];
|
long[] ids = new long[trackIds.length];
|
||||||
for (int i = 0; i < trackIds.length; i++) {
|
for (int i = 0; i < trackIds.length; i++) {
|
||||||
ids[i] = trackIds[i].getId();
|
ids[i] = trackIds[i].id();
|
||||||
}
|
}
|
||||||
|
|
||||||
return formatIdListForUri(ids);
|
return formatIdListForUri(ids);
|
||||||
@@ -834,7 +834,7 @@ public class ContentProviderUtils {
|
|||||||
|
|
||||||
public SensorStatistics getSensorStats(@NonNull Track.Id trackId) {
|
public SensorStatistics getSensorStats(@NonNull Track.Id trackId) {
|
||||||
SensorStatistics sensorStatistics = null;
|
SensorStatistics sensorStatistics = null;
|
||||||
try (Cursor cursor = contentResolver.query(ContentUris.withAppendedId(TracksColumns.CONTENT_URI_SENSOR_STATS, trackId.getId()), null, null, null, null)) {
|
try (Cursor cursor = contentResolver.query(ContentUris.withAppendedId(TracksColumns.CONTENT_URI_SENSOR_STATS, trackId.id()), null, null, null, null)) {
|
||||||
if (cursor != null && cursor.moveToFirst()) {
|
if (cursor != null && cursor.moveToFirst()) {
|
||||||
final int MAX_HR_INDEX = cursor.getColumnIndexOrThrow(TrackPointsColumns.ALIAS_MAX_HR);
|
final int MAX_HR_INDEX = cursor.getColumnIndexOrThrow(TrackPointsColumns.ALIAS_MAX_HR);
|
||||||
final int AVG_HR_INDEX = cursor.getColumnIndexOrThrow(TrackPointsColumns.ALIAS_AVG_HR);
|
final int AVG_HR_INDEX = cursor.getColumnIndexOrThrow(TrackPointsColumns.ALIAS_AVG_HR);
|
||||||
|
|||||||
@@ -177,7 +177,7 @@ public class CustomSQLiteOpenHelper extends SQLiteOpenHelper {
|
|||||||
Track.Id trackId = new Track.Id(cursor.getLong(trackIdIndex));
|
Track.Id trackId = new Track.Id(cursor.getLong(trackIdIndex));
|
||||||
ContentValues cv = new ContentValues();
|
ContentValues cv = new ContentValues();
|
||||||
cv.put("uuid", UUIDUtils.toBytes(UUID.randomUUID()));
|
cv.put("uuid", UUIDUtils.toBytes(UUID.randomUUID()));
|
||||||
db.update("tracks", cv, "_id = ?", new String[]{String.valueOf(trackId.getId())});
|
db.update("tracks", cv, "_id = ?", new String[]{String.valueOf(trackId.id())});
|
||||||
} while (cursor.moveToNext());
|
} while (cursor.moveToNext());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -455,7 +455,7 @@ public class CustomSQLiteOpenHelper extends SQLiteOpenHelper {
|
|||||||
|
|
||||||
ContentValues cv = new ContentValues();
|
ContentValues cv = new ContentValues();
|
||||||
cv.put("starttime_offset", zoneRules.getOffset(Instant.ofEpochMilli(startTime)).getTotalSeconds());
|
cv.put("starttime_offset", zoneRules.getOffset(Instant.ofEpochMilli(startTime)).getTotalSeconds());
|
||||||
db.update("tracks", cv, "_id = ?", new String[]{String.valueOf(trackId.getId())});
|
db.update("tracks", cv, "_id = ?", new String[]{String.valueOf(trackId.id())});
|
||||||
} while (cursor.moveToNext());
|
} while (cursor.moveToNext());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -86,7 +86,7 @@ public class ShareContentProvider extends CustomContentProvider {
|
|||||||
|
|
||||||
StringBuilder trackIdBuilder = new StringBuilder();
|
StringBuilder trackIdBuilder = new StringBuilder();
|
||||||
for (Track.Id trackId : trackIds) {
|
for (Track.Id trackId : trackIds) {
|
||||||
trackIdBuilder.append(trackId.getId()).append(TRACKID_DELIMITER);
|
trackIdBuilder.append(trackId.id()).append(TRACKID_DELIMITER);
|
||||||
}
|
}
|
||||||
trackIdBuilder.deleteCharAt(trackIdBuilder.lastIndexOf(TRACKID_DELIMITER));
|
trackIdBuilder.deleteCharAt(trackIdBuilder.lastIndexOf(TRACKID_DELIMITER));
|
||||||
|
|
||||||
@@ -199,7 +199,7 @@ public class ShareContentProvider extends CustomContentProvider {
|
|||||||
public ParcelFileDescriptor openFile(@NonNull Uri uri, @NonNull String mode) throws FileNotFoundException {
|
public ParcelFileDescriptor openFile(@NonNull Uri uri, @NonNull String mode) throws FileNotFoundException {
|
||||||
Set<Track.Id> trackIds = parseURI(uri);
|
Set<Track.Id> trackIds = parseURI(uri);
|
||||||
final ArrayList<Track> tracks = new ArrayList<>();
|
final ArrayList<Track> tracks = new ArrayList<>();
|
||||||
String[] trackIdsString = trackIds.stream().map(Track.Id::toString).toArray(String[]::new);
|
String[] trackIdsString = trackIds.stream().map(id -> String.valueOf(id.id())).toArray(String[]::new);
|
||||||
String whereClause = String.format(TracksColumns._ID + " IN (%s)", TextUtils.join(",", Collections.nCopies(trackIds.size(), "?")));
|
String whereClause = String.format(TracksColumns._ID + " IN (%s)", TextUtils.join(",", Collections.nCopies(trackIds.size(), "?")));
|
||||||
|
|
||||||
try (Cursor cursor = super.query(TracksColumns.CONTENT_URI, null, whereClause, trackIdsString, TracksColumns._ID)) {
|
try (Cursor cursor = super.query(TracksColumns.CONTENT_URI, null, whereClause, trackIdsString, TracksColumns._ID)) {
|
||||||
|
|||||||
@@ -166,7 +166,7 @@ public class TrackDataHub {
|
|||||||
public void loadTrack(final @NonNull Track.Id trackId) {
|
public void loadTrack(final @NonNull Track.Id trackId) {
|
||||||
handler.post(() -> {
|
handler.post(() -> {
|
||||||
if (trackId.equals(selectedTrackId)) {
|
if (trackId.equals(selectedTrackId)) {
|
||||||
Log.i(TAG, "Not reloading track " + trackId.getId());
|
Log.i(TAG, "Not reloading track " + trackId.id());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
selectedTrackId = trackId;
|
selectedTrackId = trackId;
|
||||||
@@ -326,7 +326,7 @@ public class TrackDataHub {
|
|||||||
|
|
||||||
TrackPoint.Id next = null;
|
TrackPoint.Id next = null;
|
||||||
if (localLastSeenTrackPointIdId != null) {
|
if (localLastSeenTrackPointIdId != null) {
|
||||||
next = new TrackPoint.Id(localLastSeenTrackPointIdId.getId() + 1); //TODO startTrackPointId + 1 is an assumption assumption; should be derived from the DB.
|
next = new TrackPoint.Id(localLastSeenTrackPointIdId.id() + 1); //TODO startTrackPointId + 1 is an assumption assumption; should be derived from the DB.
|
||||||
}
|
}
|
||||||
|
|
||||||
TrackPoint trackPoint = null;
|
TrackPoint trackPoint = null;
|
||||||
@@ -344,7 +344,7 @@ public class TrackDataHub {
|
|||||||
TrackPoint.Id trackPointId = trackPoint.getId();
|
TrackPoint.Id trackPointId = trackPoint.getId();
|
||||||
|
|
||||||
// Stop if past the last wanted point
|
// Stop if past the last wanted point
|
||||||
if (maxPointId != null && trackPointId.getId() > maxPointId.getId()) {
|
if (maxPointId != null && trackPointId.id() > maxPointId.id()) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -355,7 +355,7 @@ public class TrackDataHub {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (samplingFrequency == -1) {
|
if (samplingFrequency == -1) {
|
||||||
long numTotalPoints = Math.max(0L, lastTrackPointId.getId() - localFirstSeenTrackPointId.getId()); //TODO That is an assumption; should be derived from the DB.
|
long numTotalPoints = Math.max(0L, lastTrackPointId.id() - localFirstSeenTrackPointId.id()); //TODO That is an assumption; should be derived from the DB.
|
||||||
samplingFrequency = 1 + (int) (numTotalPoints / targetNumPoints);
|
samplingFrequency = 1 + (int) (numTotalPoints / targetNumPoints);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public class TrackSelection implements ContentProviderUtils.ContentProviderSelec
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Builds selection arguments.
|
// Builds selection arguments.
|
||||||
ArrayList<String> args = trackIds.stream().map(id -> Long.toString(id.getId())).collect(Collectors.toCollection(ArrayList::new));
|
ArrayList<String> args = trackIds.stream().map(id -> Long.toString(id.id())).collect(Collectors.toCollection(ArrayList::new));
|
||||||
args.addAll(categories);
|
args.addAll(categories);
|
||||||
args.addAll(fromToArgs);
|
args.addAll(fromToArgs);
|
||||||
selectionArgs = args.stream().toArray(String[]::new);
|
selectionArgs = args.stream().toArray(String[]::new);
|
||||||
|
|||||||
@@ -143,53 +143,20 @@ public class Track {
|
|||||||
return Objects.hash(id);
|
return Objects.hash(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Id implements Parcelable {
|
|
||||||
|
|
||||||
private final long id;
|
public record Id(long id) implements Parcelable {
|
||||||
|
|
||||||
public Id(long id) {
|
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected Id(Parcel in) {
|
|
||||||
id = in.readLong();
|
|
||||||
}
|
|
||||||
|
|
||||||
//TOOD Limit visibility to TrackRecordingService / ContentProvider
|
|
||||||
public long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (this == o) return true;
|
|
||||||
if (o == null || getClass() != o.getClass()) return false;
|
|
||||||
Id id1 = (Id) o;
|
|
||||||
return id == id1.id;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
return Objects.hash(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int describeContents() {
|
public int describeContents() {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return String.valueOf(id);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeToParcel(Parcel parcel, int i) {
|
public void writeToParcel(Parcel parcel, int i) {
|
||||||
parcel.writeLong(id);
|
parcel.writeLong(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static final Parcelable.Creator<Track.Id> CREATOR = new Parcelable.Creator<>() {
|
public static final Creator<Track.Id> CREATOR = new Creator<>() {
|
||||||
public Track.Id createFromParcel(Parcel in) {
|
public Track.Id createFromParcel(Parcel in) {
|
||||||
return new Track.Id(in.readLong());
|
return new Track.Id(in.readLong());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,6 +18,7 @@ package de.dennisguse.opentracks.data.models;
|
|||||||
import android.location.Location;
|
import android.location.Location;
|
||||||
import android.os.Build;
|
import android.os.Build;
|
||||||
import android.os.Parcel;
|
import android.os.Parcel;
|
||||||
|
import android.os.Parcelable;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
@@ -25,7 +26,6 @@ import androidx.annotation.VisibleForTesting;
|
|||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sensor and/or location information for a specific point in time.
|
* Sensor and/or location information for a specific point in time.
|
||||||
@@ -462,40 +462,26 @@ public class TrackPoint {
|
|||||||
'}';
|
'}';
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Id {
|
public record Id(long id) implements Parcelable {
|
||||||
|
|
||||||
private final long id;
|
@Override
|
||||||
|
public int describeContents() {
|
||||||
public Id(long id) {
|
return 0;
|
||||||
this.id = id;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected Id(Parcel in) {
|
|
||||||
id = in.readLong();
|
|
||||||
}
|
|
||||||
|
|
||||||
//TOOD Limit visibility to TrackRecordingService / ContentProvider
|
|
||||||
public long getId() {
|
|
||||||
return id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean equals(Object o) {
|
public void writeToParcel(Parcel parcel, int i) {
|
||||||
if (this == o) return true;
|
parcel.writeLong(id);
|
||||||
if (o == null || getClass() != o.getClass()) return false;
|
|
||||||
TrackPoint.Id id1 = (TrackPoint.Id) o;
|
|
||||||
return id == id1.id;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public static final Creator<Id> CREATOR = new Creator<>() {
|
||||||
public int hashCode() {
|
public Id createFromParcel(Parcel in) {
|
||||||
return Objects.hash(id);
|
return new Id(in.readLong());
|
||||||
}
|
}
|
||||||
|
|
||||||
@NonNull
|
public Id[] newArray(int size) {
|
||||||
@Override
|
return new Id[size];
|
||||||
public String toString() {
|
}
|
||||||
return String.valueOf(id);
|
};
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,7 +88,7 @@ class TrackRecordingManager implements SharedPreferences.OnSharedPreferenceChang
|
|||||||
trackId = resumeTrackId;
|
trackId = resumeTrackId;
|
||||||
Track track = contentProviderUtils.getTrack(trackId);
|
Track track = contentProviderUtils.getTrack(trackId);
|
||||||
if (track == null) {
|
if (track == null) {
|
||||||
Log.e(TAG, "Ignore resumeTrack. Track " + trackId.getId() + " does not exists.");
|
Log.e(TAG, "Ignore resumeTrack. Track " + trackId.id() + " does not exists.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ public class ShareUtils {
|
|||||||
for (Track.Id trackId : trackIds) {
|
for (Track.Id trackId : trackIds) {
|
||||||
Track track = contentProviderUtils.getTrack(trackId);
|
Track track = contentProviderUtils.getTrack(trackId);
|
||||||
if (track == null) {
|
if (track == null) {
|
||||||
Log.e(TAG, "TrackId " + trackId.getId() + " could not be resolved.");
|
Log.e(TAG, "TrackId " + trackId.id() + " could not be resolved.");
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ public class MarkerListActivity extends AbstractActivity implements DeleteMarker
|
|||||||
|
|
||||||
if (searchQuery == null) {
|
if (searchQuery == null) {
|
||||||
if (track != null) {
|
if (track != null) {
|
||||||
return new CursorLoader(MarkerListActivity.this, MarkerColumns.CONTENT_URI, PROJECTION, MarkerColumns.TRACKID + "=?", new String[]{String.valueOf(track.getId().getId())}, null);
|
return new CursorLoader(MarkerListActivity.this, MarkerColumns.CONTENT_URI, PROJECTION, MarkerColumns.TRACKID + "=?", new String[]{String.valueOf(track.getId().id())}, null);
|
||||||
} else {
|
} else {
|
||||||
return new CursorLoader(MarkerListActivity.this, MarkerColumns.CONTENT_URI, PROJECTION, null, null, null);
|
return new CursorLoader(MarkerListActivity.this, MarkerColumns.CONTENT_URI, PROJECTION, null, null, null);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ public class FileUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static File getPhotoDir(Context context, Track.Id trackId) {
|
public static File getPhotoDir(Context context, Track.Id trackId) {
|
||||||
File photoDirectory = new File(getPhotoDir(context), "" + trackId.getId());
|
File photoDirectory = new File(getPhotoDir(context), "" + trackId.id());
|
||||||
photoDirectory.mkdirs();
|
photoDirectory.mkdirs();
|
||||||
return photoDirectory;
|
return photoDirectory;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ public class TrackNameUtils {
|
|||||||
} else if (trackName.equals(context.getString(R.string.settings_recording_track_name_date_iso_8601_value))) {
|
} else if (trackName.equals(context.getString(R.string.settings_recording_track_name_date_iso_8601_value))) {
|
||||||
return startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mmX"));
|
return startTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mmX"));
|
||||||
} else {
|
} else {
|
||||||
return context.getString(R.string.track_name_format, trackId.getId());
|
return context.getString(R.string.track_name_format, trackId.id());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user