Track is now a record.

Create Track directly.
This commit is contained in:
Dennis Guse
2025-11-27 20:11:53 +01:00
parent 990c91f978
commit 21404fed50
3 changed files with 26 additions and 31 deletions
@@ -128,24 +128,17 @@ public class ContentProviderUtils {
null, null,
null null
); );
TrackBuilder track = new TrackBuilder(ZoneOffset.ofTotalSeconds(cursor.getInt(startTimeOffsetIndex)), trackStatistics); return new Track(
track.setId(new Track.Id(cursor.getLong(idIndex))); new Track.Id(cursor.getLong(idIndex)),
track.setUuid(UUIDUtils.fromBytes(cursor.getBlob(uuidIndex))); UUIDUtils.fromBytes(cursor.getBlob(uuidIndex)),
if (!cursor.isNull(nameIndex)) { !cursor.isNull(nameIndex) ? cursor.getString(nameIndex) : "",
track.setName(cursor.getString(nameIndex)); !cursor.isNull(descriptionIndex) ? cursor.getString(descriptionIndex) : "",
} !cursor.isNull(activityTypeLocalizedIndex) ? cursor.getString(activityTypeLocalizedIndex) : "",
if (!cursor.isNull(descriptionIndex)) { !cursor.isNull(activityTypeIndex) ? ActivityType.findBy(cursor.getString(activityTypeIndex)) : ActivityType.findBy(null), //TODO Can this happen?
track.setDescription(cursor.getString(descriptionIndex)); ZoneOffset.ofTotalSeconds(cursor.getInt(startTimeOffsetIndex)),
} trackStatistics
if (!cursor.isNull(activityTypeIndex)) { );
track.setActivityType(ActivityType.findBy(cursor.getString(activityTypeIndex)));
}
if (!cursor.isNull(activityTypeLocalizedIndex)) {
track.setActivityTypeLocalized(cursor.getString(activityTypeLocalizedIndex));
}
return track.getTrack();
} }
@VisibleForTesting @VisibleForTesting
@@ -52,13 +52,8 @@ public class TrackBuilder {
@Deprecated @Deprecated
@VisibleForTesting @VisibleForTesting
public TrackBuilder(Statistics statistics) { public TrackBuilder(@NonNull Statistics trackStatistics) {
this(ZoneOffset.UTC, statistics); this.zoneOffset = ZoneOffset.UTC;
}
@Deprecated
public TrackBuilder(@NonNull ZoneOffset zoneOffset, @NonNull Statistics trackStatistics) {
this.zoneOffset = zoneOffset;
this.trackStatistics = trackStatistics; this.trackStatistics = trackStatistics;
} }
@@ -12,6 +12,7 @@ import androidx.annotation.VisibleForTesting;
import java.time.Duration; import java.time.Duration;
import java.time.ZoneOffset; import java.time.ZoneOffset;
import java.util.UUID;
import de.dennisguse.opentracks.R; import de.dennisguse.opentracks.R;
import de.dennisguse.opentracks.data.ContentProviderUtils; import de.dennisguse.opentracks.data.ContentProviderUtils;
@@ -72,14 +73,20 @@ public class TrackRecordingManager implements SharedPreferences.OnSharedPreferen
ZoneOffset zoneOffset = ZoneOffset.systemDefault().getRules().getOffset(segmentStartTrackPoint.getTime()); ZoneOffset zoneOffset = ZoneOffset.systemDefault().getRules().getOffset(segmentStartTrackPoint.getTime());
trackStatisticsUpdater = new TrackStatisticsUpdater(segmentStartTrackPoint); trackStatisticsUpdater = new TrackStatisticsUpdater(segmentStartTrackPoint);
TrackBuilder track = new TrackBuilder(zoneOffset, trackStatisticsUpdater.getTrackStatistics()); Statistics initialStatistics = trackStatisticsUpdater.getTrackStatistics();
String activityTypeLocalized = PreferencesUtils.getDefaultActivityTypeLocalized(); String activityTypeLocalized = PreferencesUtils.getDefaultActivityTypeLocalized();
track.setActivityTypeLocalized(activityTypeLocalized); Track track = new Track(
track.setActivityType(ActivityType.findByLocalizedString(context, activityTypeLocalized)); null,
track.setName(TrackNameUtils.getTrackName(context, trackId, track.getStartTime())); 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); onNewTrackPoint(segmentStartTrackPoint);