From 577b9b4635b69646ebf27185a4ec2e75f025778a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rom=C3=A1n?= Date: Thu, 3 Sep 2020 14:55:12 +0200 Subject: [PATCH] Alter table trackpoints: added elevation gain to the trackpoints table. --- .../content/data/TrackPointsColumns.java | 4 ++- .../provider/ContentProviderUtils.java | 5 ++++ .../provider/CustomSQLiteOpenHelper.java | 30 ++++++++++++++++++- 3 files changed, 37 insertions(+), 2 deletions(-) diff --git a/src/main/java/de/dennisguse/opentracks/content/data/TrackPointsColumns.java b/src/main/java/de/dennisguse/opentracks/content/data/TrackPointsColumns.java index d8d434853..59fa38806 100644 --- a/src/main/java/de/dennisguse/opentracks/content/data/TrackPointsColumns.java +++ b/src/main/java/de/dennisguse/opentracks/content/data/TrackPointsColumns.java @@ -51,6 +51,7 @@ public interface TrackPointsColumns extends BaseColumns { String SENSOR_HEARTRATE = "sensor_heartrate"; String SENSOR_CADENCE = "sensor_cadence"; String SENSOR_POWER = "sensor_power"; + String ELEVATION_GAIN = "elevation_gain"; String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" + _ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " @@ -64,7 +65,8 @@ public interface TrackPointsColumns extends BaseColumns { + BEARING + " FLOAT, " + SENSOR_HEARTRATE + " FLOAT, " + SENSOR_CADENCE + " FLOAT, " - + SENSOR_POWER + " FLOAT)"; + + SENSOR_POWER + " FLOAT, " + + ELEVATION_GAIN + " FLOAT)"; String CREATE_TABLE_INDEX = "CREATE INDEX " + TABLE_NAME + "_" + TRACKID + "_index ON " + TABLE_NAME + "(" + TRACKID + ")"; } diff --git a/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java b/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java index d0dc07e2f..4d67d2d30 100644 --- a/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java +++ b/src/main/java/de/dennisguse/opentracks/content/provider/ContentProviderUtils.java @@ -836,6 +836,11 @@ public class ContentProviderUtils { if (trackPoint.hasPower()) { values.put(TrackPointsColumns.SENSOR_POWER, trackPoint.getPower()); } + + if (trackPoint.hasElevationGain()) { + values.put(TrackPointsColumns.ELEVATION_GAIN, trackPoint.getElevationGain()); + } + return values; } diff --git a/src/main/java/de/dennisguse/opentracks/content/provider/CustomSQLiteOpenHelper.java b/src/main/java/de/dennisguse/opentracks/content/provider/CustomSQLiteOpenHelper.java index 3d434132e..4c0b60113 100644 --- a/src/main/java/de/dennisguse/opentracks/content/provider/CustomSQLiteOpenHelper.java +++ b/src/main/java/de/dennisguse/opentracks/content/provider/CustomSQLiteOpenHelper.java @@ -25,7 +25,7 @@ public class CustomSQLiteOpenHelper extends SQLiteOpenHelper { private static final String TAG = CustomSQLiteOpenHelper.class.getSimpleName(); - private static final int DATABASE_VERSION = 26; + private static final int DATABASE_VERSION = 27; @VisibleForTesting public static final String DATABASE_NAME = "database.db"; @@ -70,6 +70,10 @@ public class CustomSQLiteOpenHelper extends SQLiteOpenHelper { case 26: upgradeFrom25to26(db); break; + case 27: + upgradeFrom26to27(db); + break; + default: throw new RuntimeException("Not implemented: upgrade to " + toVersion); @@ -91,6 +95,9 @@ public class CustomSQLiteOpenHelper extends SQLiteOpenHelper { case 25: downgradeFrom26to25(db); break; + case 26: + downgradeFrom27to26(db); + break; default: throw new RuntimeException("Not implemented: downgrade to " + toVersion); @@ -190,4 +197,25 @@ public class CustomSQLiteOpenHelper extends SQLiteOpenHelper { db.setTransactionSuccessful(); db.endTransaction(); } + + private void upgradeFrom26to27(SQLiteDatabase db) { + db.beginTransaction(); + + db.execSQL("ALTER TABLE trackpoints ADD COLUMN elevation_gain FLOAT"); + + db.setTransactionSuccessful(); + db.endTransaction(); + } + + private void downgradeFrom27to26(SQLiteDatabase db) { + db.beginTransaction(); + + db.execSQL("ALTER TABLE trackpoints RENAME TO trackpoints_old"); + db.execSQL("CREATE TABLE trackpoints (_id INTEGER PRIMARY KEY AUTOINCREMENT, trackid INTEGER, longitude INTEGER, latitude INTEGER, time INTEGER, elevation FLOAT, accuracy FLOAT, speed FLOAT, bearing FLOAT, sensor_heartrate FLOAT, sensor_cadence FLOAT, sensor_power FLOAT)"); + db.execSQL("INSERT INTO trackpoints SELECT _id, trackid, longitude, latitude, time, elevation, accuracy, speed, bearing, sensor_heartrate, sensor_cadence, sensor_power FROM trackpoints_old"); + db.execSQL("DROP TABLE trackpoints_old"); + + db.setTransactionSuccessful(); + db.endTransaction(); + } }