Cleanup: use ActivityType instead of passing it's id around as String.

Part of #1608.
This commit is contained in:
Dennis Guse
2023-06-24 19:30:00 +02:00
parent 779681088c
commit 425ea0f216
34 changed files with 162 additions and 171 deletions
@@ -40,6 +40,7 @@ import java.util.List;
import java.util.UUID;
import de.dennisguse.opentracks.BuildConfig;
import de.dennisguse.opentracks.data.models.ActivityType;
import de.dennisguse.opentracks.data.models.Altitude;
import de.dennisguse.opentracks.data.models.Cadence;
import de.dennisguse.opentracks.data.models.Distance;
@@ -100,7 +101,7 @@ public class ContentProviderUtils {
int uuidIndex = cursor.getColumnIndexOrThrow(TracksColumns.UUID);
int nameIndex = cursor.getColumnIndexOrThrow(TracksColumns.NAME);
int descriptionIndex = cursor.getColumnIndexOrThrow(TracksColumns.DESCRIPTION);
int activityTypeIndex = cursor.getColumnIndexOrThrow(TracksColumns.ACTIVITY_TYPE);
int activityTypeLocalizedIndex = cursor.getColumnIndexOrThrow(TracksColumns.ACTIVITY_TYPE_LOCALIZED);
int startTimeIndex = cursor.getColumnIndexOrThrow(TracksColumns.STARTTIME);
int startTimeOffsetIndex = cursor.getColumnIndexOrThrow(TracksColumns.STARTTIME_OFFSET);
int stopTimeIndex = cursor.getColumnIndexOrThrow(TracksColumns.STOPTIME);
@@ -128,8 +129,8 @@ public class ContentProviderUtils {
if (!cursor.isNull(descriptionIndex)) {
track.setDescription(cursor.getString(descriptionIndex));
}
if (!cursor.isNull(activityTypeIndex)) {
track.setActivityType(cursor.getString(activityTypeIndex));
if (!cursor.isNull(activityTypeLocalizedIndex)) {
track.setActivityTypeLocalized(cursor.getString(activityTypeLocalizedIndex));
}
if (!cursor.isNull(startTimeIndex)) {
@@ -163,7 +164,7 @@ public class ContentProviderUtils {
trackStatistics.setTotalAltitudeLoss(cursor.getFloat(altitudeLossIndex));
}
if (!cursor.isNull(iconIndex)) {
track.setActivityTypeId(cursor.getString(iconIndex));
track.setActivityType(ActivityType.findBy(cursor.getString(iconIndex)));
}
return track;
}
@@ -290,7 +291,7 @@ public class ContentProviderUtils {
values.put(TracksColumns.UUID, UUIDUtils.toBytes(track.getUuid()));
values.put(TracksColumns.NAME, track.getName());
values.put(TracksColumns.DESCRIPTION, track.getDescription());
values.put(TracksColumns.ACTIVITY_TYPE, track.getActivityType());
values.put(TracksColumns.ACTIVITY_TYPE_LOCALIZED, track.getActivityTypeLocalized());
values.put(TracksColumns.STARTTIME_OFFSET, track.getZoneOffset().getTotalSeconds());
if (trackStatistics.getStartTime() != null) {
values.put(TracksColumns.STARTTIME, trackStatistics.getStartTime().toEpochMilli());
@@ -308,7 +309,7 @@ public class ContentProviderUtils {
values.put(TracksColumns.MAX_ALTITUDE, trackStatistics.getMaxAltitude());
values.put(TracksColumns.ALTITUDE_GAIN, trackStatistics.getTotalAltitudeGain());
values.put(TracksColumns.ALTITUDE_LOSS, trackStatistics.getTotalAltitudeLoss());
values.put(TracksColumns.ICON, track.getActivityTypeId());
values.put(TracksColumns.ICON, track.getActivityType() != null ? track.getActivityType().getIconId() : "");
return values;
}
@@ -53,7 +53,7 @@ public class TrackSelection implements ContentProviderUtils.ContentProviderSelec
}
if (!categories.isEmpty()) {
selection += selection.isEmpty() ? "" : " AND ";
selection += String.format(TracksColumns.ACTIVITY_TYPE + " IN (%s)", TextUtils.join(",", Collections.nCopies(categories.size(), "?")));
selection += String.format(TracksColumns.ACTIVITY_TYPE_LOCALIZED + " IN (%s)", TextUtils.join(",", Collections.nCopies(categories.size(), "?")));
}
if (from != null && to != null) {
selection += selection.isEmpty() ? "" : " AND ";
@@ -34,22 +34,22 @@ public enum ActivityType {
SWIMMING_OPEN("SWIMMING_OPEN", R.drawable.ic_activity_swimming_open_24dp, false, R.string.activity_type_swimming_open),
WORKOUT("WORKOUT", R.drawable.ic_activity_workout_24dp, false, R.string.activity_type_workout);
final String id;
final String iconId;
final int iconDrawableId;
final boolean showSpeedPreferred;
final int[] localizedStringIds;
//isSpeed?
ActivityType(String id, int iconDrawableId, boolean showSpeedPreferred, int... localizedStringIds) {
this.id = id;
ActivityType(String iconId, int iconDrawableId, boolean showSpeedPreferred, int... localizedStringIds) {
this.iconId = iconId;
this.iconDrawableId = iconDrawableId;
this.showSpeedPreferred = showSpeedPreferred;
this.localizedStringIds = localizedStringIds;
}
public String getId() {
return id;
public String getIconId() {
return iconId;
}
public int getIconDrawableId() {
@@ -81,9 +81,9 @@ public enum ActivityType {
}
@NonNull
public static ActivityType findByActivityTypeId(String activityTypeId) {
public static ActivityType findBy(String iconId) {
return Arrays.stream(ActivityType.values()).filter(
it -> it.getId().equals(activityTypeId)
it -> it.getIconId().equals(iconId)
).findFirst()
.orElse(ActivityType.UNKNOWN);
}
@@ -44,9 +44,9 @@ public class Track {
private String name = "";
private String description = "";
private String activityType = "";
private String activityTypeLocalized = "";
private String activityTypeId = "";
private ActivityType activityType;
private final ZoneOffset zoneOffset;
@@ -54,7 +54,7 @@ public class Track {
@VisibleForTesting
public Track() {
this.zoneOffset = ZoneOffset.UTC;
this(ZoneOffset.UTC);
}
public Track(@NonNull ZoneOffset zoneOffset) {
@@ -97,22 +97,22 @@ public class Track {
this.description = description;
}
public String getActivityType() {
public String getActivityTypeLocalized() {
return activityTypeLocalized;
}
public void setActivityTypeLocalized(String activityType) {
this.activityTypeLocalized = activityType;
}
public ActivityType getActivityType() {
return activityType;
}
public void setActivityType(String activityType) {
public void setActivityType(ActivityType activityType) {
this.activityType = activityType;
}
public String getActivityTypeId() {
return activityTypeId;
}
public void setActivityTypeId(String activityTypeId) {
this.activityTypeId = activityTypeId;
}
public ZoneOffset getZoneOffset() {
return zoneOffset;
}
@@ -39,7 +39,7 @@ public interface TracksColumns extends BaseColumns {
String UUID = "uuid"; // identifier to make tracks globally unique (prevent re-import)
String NAME = "name"; // track name
String DESCRIPTION = "description"; // track description
String ACTIVITY_TYPE = "category"; // track activity type
String ACTIVITY_TYPE_LOCALIZED = "category"; // track activity type
String STARTTIME = "starttime"; // track start time
String STARTTIME_OFFSET = "starttime_offset"; // in plus/minus in seconds
String STOPTIME = "stoptime"; // track stop time
@@ -57,13 +57,13 @@ public interface TracksColumns extends BaseColumns {
String MAX_ALTITUDE = "maxelevation"; // maximum altitude //TODO RENAME column
String ALTITUDE_GAIN = "elevationgain"; // altitude gain //TODO RENAME column
String ALTITUDE_LOSS = "elevationloss"; // altitude loss //TODO RENAME column
String ICON = "icon"; // track activity type icon
String ICON = "icon"; // track activity type icon //TODO DEPRECATED
String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " ("
+ _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
+ NAME + " TEXT, "
+ DESCRIPTION + " TEXT, "
+ ACTIVITY_TYPE + " TEXT, "
+ ACTIVITY_TYPE_LOCALIZED + " TEXT, "
+ STARTTIME + " INTEGER, "
+ STOPTIME + " INTEGER, "
+ NUMPOINTS + " INTEGER, "