diff --git a/src/main/java/de/dennisguse/opentracks/data/models/Track.java b/src/main/java/de/dennisguse/opentracks/data/models/Track.java index dd3ab2105..5b737b199 100644 --- a/src/main/java/de/dennisguse/opentracks/data/models/Track.java +++ b/src/main/java/de/dennisguse/opentracks/data/models/Track.java @@ -60,11 +60,6 @@ public class Track { this(ZoneOffset.UTC, statistics); } - @Deprecated //TODO Remove - public Track(@NonNull ZoneOffset zoneOffset) { - this(zoneOffset, Statistics.DEFAULT); - } - public Track(@NonNull ZoneOffset zoneOffset, @NonNull Statistics trackStatistics) { this.zoneOffset = zoneOffset; this.trackStatistics = trackStatistics; diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/GPXTrackImporter.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/GPXTrackImporter.java index 9abac901d..d53f869aa 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/GPXTrackImporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/GPXTrackImporter.java @@ -167,7 +167,7 @@ public class GPXTrackImporter extends DefaultHandler implements XMLImporter.Trac // Backward compatibility: up v4.9.1 as contained localized content. activityTypeLocalized = activityType; } - trackImporter.setTrack(context, name, uuid, description, activityTypeLocalized, activityType, zoneOffset); + trackImporter.setTrackData(context, name, uuid, description, activityTypeLocalized, activityType, zoneOffset); zoneOffset = null; } case TAG_TRACK_SEGMENT -> onTrackSegmentEnd(); diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/KMLTrackImporter.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/KMLTrackImporter.java index 3e77dac96..90422814a 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/KMLTrackImporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/KMLTrackImporter.java @@ -170,7 +170,7 @@ public class KMLTrackImporter extends DefaultHandler implements XMLImporter.Trac onMarkerEnd(); case TAG_COORDINATES -> onMarkerLocationEnd(); case TAG_MULTI_TRACK, TAG_KML22_MULTI_TRACK -> { - trackImporter.setTrack(context, name, uuid, description, activityTypeLocalized, activityType, zoneOffset); + trackImporter.setTrackData(context, name, uuid, description, activityTypeLocalized, activityType, zoneOffset); zoneOffset = null; } case TAG_TRACK, TAG_KML22_TRACK -> onTrackSegmentEnd(); diff --git a/src/main/java/de/dennisguse/opentracks/io/file/importer/TrackImporter.java b/src/main/java/de/dennisguse/opentracks/io/file/importer/TrackImporter.java index 6f4b005e7..1e704cf20 100644 --- a/src/main/java/de/dennisguse/opentracks/io/file/importer/TrackImporter.java +++ b/src/main/java/de/dennisguse/opentracks/io/file/importer/TrackImporter.java @@ -15,6 +15,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.LinkedList; import java.util.List; +import java.util.Objects; import java.util.UUID; import de.dennisguse.opentracks.R; @@ -54,7 +55,7 @@ public class TrackImporter { private final List trackIds = new ArrayList<>(); // Current track - private Track track; + private TrackData trackData; private final List trackPoints = new LinkedList<>(); private final List markers = new LinkedList<>(); @@ -66,11 +67,11 @@ public class TrackImporter { } void newTrack() { - if (track != null) { + if (trackData != null) { finishTrack(); } - track = null; + trackData = null; trackPoints.clear(); markers.clear(); } @@ -87,33 +88,32 @@ public class TrackImporter { this.markers.addAll(markers); } - void setTrack(Context context, String name, String uuid, String description, String activityTypeLocalized, String activityTypeId, @Nullable ZoneOffset zoneOffset) { - track = new Track(zoneOffset != null ? zoneOffset : ZoneOffset.UTC); - track.setName(name != null ? name : ""); + void setTrackData(Context context, String name, String uuid, String description, String activityTypeLocalized, String activityTypeId, @Nullable ZoneOffset zoneOffset) { + trackData = new TrackData(); + trackData.name = Objects.requireNonNullElse(name, ""); //TODO This should be handled by Track. + + trackData.zoneOffset = Objects.requireNonNullElse(zoneOffset, ZoneOffset.UTC); try { - track.setUuid(UUID.fromString(uuid)); + trackData.uuid = UUID.fromString(uuid); } catch (IllegalArgumentException | NullPointerException e) { Log.w(TAG, "could not parse Track UUID, generating a new one."); - track.setUuid(UUID.randomUUID()); + trackData.uuid = UUID.randomUUID(); } - track.setDescription(description != null ? description : ""); + trackData.description = Objects.requireNonNullElse(description, ""); //TODO This should be handled by Track. + + trackData.activityTypeLocalized = activityTypeLocalized; - if (activityTypeLocalized != null) { - track.setActivityTypeLocalized(activityTypeLocalized); - } - ActivityType activityType; if (activityTypeId == null) { - activityType = ActivityType.findByLocalizedString(context, activityTypeLocalized); + trackData.activityType = ActivityType.findByLocalizedString(context, activityTypeLocalized); } else { - activityType = ActivityType.findBy(activityTypeId); + trackData.activityType = ActivityType.findBy(activityTypeId); } - track.setActivityType(activityType); } void finish() { - if (track != null) { + if (trackData != null) { finishTrack(); } } @@ -124,13 +124,13 @@ public class TrackImporter { } // Store Track - if (contentProviderUtils.getTrack(track.getUuid()) != null) { + if (contentProviderUtils.getTrack(trackData.uuid) != null) { if (preventReimport) { throw new ImportAlreadyExistsException(context.getString(R.string.import_prevent_reimport)); } //TODO This is a workaround until we have proper UI. - track.setUuid(UUID.randomUUID()); + trackData.uuid = UUID.randomUUID(); } trackPoints.sort((o1, o2) -> { @@ -146,7 +146,12 @@ public class TrackImporter { adjustTrackPoints(); TrackStatisticsUpdater updater = new TrackStatisticsUpdater(trackPoints); - track.setStatistics(updater.getTrackStatistics()); + Track track = new Track(trackData.zoneOffset, updater.getTrackStatistics()); + track.setName(trackData.name); + track.setUuid(trackData.uuid); + track.setDescription(trackData.description); + track.setActivityType(trackData.activityType); + track.setActivityTypeLocalized(trackData.activityTypeLocalized); Track.Id trackId = contentProviderUtils.insertTrack(track); @@ -249,4 +254,14 @@ public class TrackImporter { contentProviderUtils.deleteTracks(context, trackIds); } + + private class TrackData { + private String name; + private UUID uuid; + private String description; + private String activityTypeLocalized; + private ActivityType activityType; + + private ZoneOffset zoneOffset; + } }