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
);
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
@@ -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;
}
@@ -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);