From 21404fed500edb74d75074889e3f1f6ceb8d3ed8 Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Thu, 27 Nov 2025 20:11:53 +0100 Subject: [PATCH] Track is now a record. Create Track directly. --- .../opentracks/data/ContentProviderUtils.java | 29 +++++++------------ .../opentracks/data/models/TrackBuilder.java | 9 ++---- .../services/TrackRecordingManager.java | 19 ++++++++---- 3 files changed, 26 insertions(+), 31 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java b/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java index c643b8ec7..dbbaabbdc 100644 --- a/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java +++ b/src/main/java/de/dennisguse/opentracks/data/ContentProviderUtils.java @@ -128,24 +128,17 @@ public class ContentProviderUtils { null, null ); - - TrackBuilder track = new TrackBuilder(ZoneOffset.ofTotalSeconds(cursor.getInt(startTimeOffsetIndex)), trackStatistics); - track.setId(new Track.Id(cursor.getLong(idIndex))); - track.setUuid(UUIDUtils.fromBytes(cursor.getBlob(uuidIndex))); - if (!cursor.isNull(nameIndex)) { - track.setName(cursor.getString(nameIndex)); - } - if (!cursor.isNull(descriptionIndex)) { - track.setDescription(cursor.getString(descriptionIndex)); - } - if (!cursor.isNull(activityTypeIndex)) { - track.setActivityType(ActivityType.findBy(cursor.getString(activityTypeIndex))); - } - if (!cursor.isNull(activityTypeLocalizedIndex)) { - track.setActivityTypeLocalized(cursor.getString(activityTypeLocalizedIndex)); - } - - return track.getTrack(); + + return new Track( + new Track.Id(cursor.getLong(idIndex)), + UUIDUtils.fromBytes(cursor.getBlob(uuidIndex)), + !cursor.isNull(nameIndex) ? cursor.getString(nameIndex) : "", + !cursor.isNull(descriptionIndex) ? cursor.getString(descriptionIndex) : "", + !cursor.isNull(activityTypeLocalizedIndex) ? cursor.getString(activityTypeLocalizedIndex) : "", + !cursor.isNull(activityTypeIndex) ? ActivityType.findBy(cursor.getString(activityTypeIndex)) : ActivityType.findBy(null), //TODO Can this happen? + ZoneOffset.ofTotalSeconds(cursor.getInt(startTimeOffsetIndex)), + trackStatistics + ); } @VisibleForTesting diff --git a/src/main/java/de/dennisguse/opentracks/data/models/TrackBuilder.java b/src/main/java/de/dennisguse/opentracks/data/models/TrackBuilder.java index 11c9cd737..046a0b525 100644 --- a/src/main/java/de/dennisguse/opentracks/data/models/TrackBuilder.java +++ b/src/main/java/de/dennisguse/opentracks/data/models/TrackBuilder.java @@ -52,13 +52,8 @@ public class TrackBuilder { @Deprecated @VisibleForTesting - public TrackBuilder(Statistics statistics) { - this(ZoneOffset.UTC, statistics); - } - - @Deprecated - public TrackBuilder(@NonNull ZoneOffset zoneOffset, @NonNull Statistics trackStatistics) { - this.zoneOffset = zoneOffset; + public TrackBuilder(@NonNull Statistics trackStatistics) { + this.zoneOffset = ZoneOffset.UTC; this.trackStatistics = trackStatistics; } diff --git a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java index e96cbc7e4..4e9523a6c 100644 --- a/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java +++ b/src/main/java/de/dennisguse/opentracks/services/TrackRecordingManager.java @@ -12,6 +12,7 @@ import androidx.annotation.VisibleForTesting; import java.time.Duration; import java.time.ZoneOffset; +import java.util.UUID; import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.data.ContentProviderUtils; @@ -72,14 +73,20 @@ public class TrackRecordingManager implements SharedPreferences.OnSharedPreferen ZoneOffset zoneOffset = ZoneOffset.systemDefault().getRules().getOffset(segmentStartTrackPoint.getTime()); trackStatisticsUpdater = new TrackStatisticsUpdater(segmentStartTrackPoint); - TrackBuilder track = new TrackBuilder(zoneOffset, trackStatisticsUpdater.getTrackStatistics()); - + Statistics initialStatistics = trackStatisticsUpdater.getTrackStatistics(); String activityTypeLocalized = PreferencesUtils.getDefaultActivityTypeLocalized(); - track.setActivityTypeLocalized(activityTypeLocalized); - track.setActivityType(ActivityType.findByLocalizedString(context, activityTypeLocalized)); - track.setName(TrackNameUtils.getTrackName(context, trackId, track.getStartTime())); + Track track = new Track( + null, + UUID.randomUUID(), //TODO This is not really cool: should happen in ContentProviderUtils? + TrackNameUtils.getTrackName(context, trackId, initialStatistics.startTime().atOffset(zoneOffset)), + "", + activityTypeLocalized, + ActivityType.findByLocalizedString(context, activityTypeLocalized), + zoneOffset, + initialStatistics + ); - trackId = contentProviderUtils.insertTrack(track.getTrack()); + trackId = contentProviderUtils.insertTrack(track); onNewTrackPoint(segmentStartTrackPoint);