diff --git a/GBDaoGenerator/src/nodomain/freeyourgadget/gadgetbridge/daogen/GBDaoGenerator.java b/GBDaoGenerator/src/nodomain/freeyourgadget/gadgetbridge/daogen/GBDaoGenerator.java index a56048cb01..1025643aab 100644 --- a/GBDaoGenerator/src/nodomain/freeyourgadget/gadgetbridge/daogen/GBDaoGenerator.java +++ b/GBDaoGenerator/src/nodomain/freeyourgadget/gadgetbridge/daogen/GBDaoGenerator.java @@ -643,9 +643,9 @@ public class GBDaoGenerator { private static Entity addColmiTemperatureSample(Schema schema, Entity user, Entity device) { Entity sample = addEntity(schema, "ColmiTemperatureSample"); addCommonTimeSampleProperties("AbstractTemperatureSample", sample, user, device); - sample.addFloatProperty(SAMPLE_TEMPERATURE).notNull(); - sample.addIntProperty("temperatureType"); - sample.addIntProperty("temperatureLocation"); + sample.addFloatProperty(SAMPLE_TEMPERATURE).notNull().codeBeforeGetter(OVERRIDE); + sample.addIntProperty("temperatureType").notNull().codeBeforeGetter(OVERRIDE); + sample.addIntProperty("temperatureLocation").notNull().codeBeforeGetter(OVERRIDE); return sample; } @@ -1608,8 +1608,8 @@ public class GBDaoGenerator { addCommonTimeSampleProperties("AbstractTemperatureSample", sample, user, device); sample.addLongProperty("lastTimestamp").notNull().index(); sample.addFloatProperty(SAMPLE_TEMPERATURE).notNull(); - sample.addIntProperty("temperatureType").primaryKey(); - sample.addIntProperty("temperatureLocation"); + sample.addIntProperty("temperatureType").notNull().primaryKey().codeBeforeGetter(OVERRIDE); + sample.addIntProperty("temperatureLocation").notNull().codeBeforeGetter(OVERRIDE); return sample; } @@ -1902,10 +1902,10 @@ public class GBDaoGenerator { private static Entity addFemometerVinca2TemperatureSample(Schema schema, Entity user, Entity device) { Entity sample = addEntity(schema, "FemometerVinca2TemperatureSample"); - sample.addFloatProperty(SAMPLE_TEMPERATURE).notNull(); - sample.addIntProperty("temperatureType"); - sample.addIntProperty("temperatureLocation"); addCommonTimeSampleProperties("AbstractTemperatureSample", sample, user, device); + sample.addFloatProperty(SAMPLE_TEMPERATURE).notNull().codeBeforeGetter(OVERRIDE); + sample.addIntProperty("temperatureType").notNull().codeBeforeGetter(OVERRIDE); + sample.addIntProperty("temperatureLocation").notNull().codeBeforeGetter(OVERRIDE); return sample; } @@ -1914,8 +1914,8 @@ public class GBDaoGenerator { addCommonTimeSampleProperties("AbstractTemperatureSample", sample, user, device); sample.addFloatProperty(SAMPLE_TEMPERATURE).notNull().codeBeforeGetter(OVERRIDE); sample.addIntProperty("humidity").notNull(); - sample.addIntProperty("temperatureType"); - sample.addIntProperty("temperatureLocation"); + sample.addIntProperty("temperatureType").notNull().codeBeforeGetter(OVERRIDE); + sample.addIntProperty("temperatureLocation").notNull().codeBeforeGetter(OVERRIDE); return sample; } @@ -1967,9 +1967,9 @@ public class GBDaoGenerator { private static Entity addGenericTemperatureSample(Schema schema, Entity user, Entity device) { Entity temperatureSample = addEntity(schema, "GenericTemperatureSample"); addCommonTimeSampleProperties("AbstractTemperatureSample", temperatureSample, user, device); - temperatureSample.addFloatProperty(SAMPLE_TEMPERATURE).notNull(); - temperatureSample.addIntProperty("temperatureType"); - temperatureSample.addIntProperty("temperatureLocation"); + temperatureSample.addFloatProperty(SAMPLE_TEMPERATURE).notNull().codeBeforeGetter(OVERRIDE); + temperatureSample.addIntProperty("temperatureType").notNull().codeBeforeGetter(OVERRIDE); + temperatureSample.addIntProperty("temperatureLocation").notNull().codeBeforeGetter(OVERRIDE); return temperatureSample; } diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/database/schema/GadgetbridgeUpdate_118.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/database/schema/GadgetbridgeUpdate_118.java index da5300ee96..488e752ad5 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/database/schema/GadgetbridgeUpdate_118.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/database/schema/GadgetbridgeUpdate_118.java @@ -12,24 +12,42 @@ import nodomain.freeyourgadget.gadgetbridge.entities.MijiaLywsdRealtimeSampleDao import nodomain.freeyourgadget.gadgetbridge.model.TemperatureSample; public class GadgetbridgeUpdate_118 implements DBUpdateScript { + private void addColumnIfNotExists(final SQLiteDatabase database, + final String tableName, + final String columnName, + final int defaultValue) { + if (!DBHelper.existsColumn(tableName, columnName, database)) { + database.execSQL("ALTER TABLE " + tableName + " ADD COLUMN " + columnName + " INTEGER NOT NULL DEFAULT " + defaultValue + ";"); + } + } + private void addTemperatureColumnsIfNotExists(SQLiteDatabase database, String tableName, int defaultTemperatureType, int defaultTemperatureLocation) { // Add TemperatureType column if it doesn't exist if (!DBHelper.existsColumn(tableName, GenericTemperatureSampleDao.Properties.TemperatureType.columnName, database)) { - database.execSQL("ALTER TABLE " + tableName + " ADD COLUMN " + GenericTemperatureSampleDao.Properties.TemperatureType.columnName + " INTEGER DEFAULT " + defaultTemperatureType); + database.execSQL("ALTER TABLE " + tableName + " ADD COLUMN " + GenericTemperatureSampleDao.Properties.TemperatureType.columnName + " INTEGER NOT NULL DEFAULT " + defaultTemperatureType); } // Add TemperatureLocation column if it doesn't exist if (!DBHelper.existsColumn(tableName, GenericTemperatureSampleDao.Properties.TemperatureLocation.columnName, database)) { - database.execSQL("ALTER TABLE " + tableName + " ADD COLUMN " + GenericTemperatureSampleDao.Properties.TemperatureLocation.columnName + " INTEGER DEFAULT " + defaultTemperatureLocation); + database.execSQL("ALTER TABLE " + tableName + " ADD COLUMN " + GenericTemperatureSampleDao.Properties.TemperatureLocation.columnName + " INTEGER NOT NULL DEFAULT " + defaultTemperatureLocation); } } @Override public void upgradeSchema(SQLiteDatabase database) { - addTemperatureColumnsIfNotExists(database, HuaweiTemperatureSampleDao.TABLENAME, TemperatureSample.TYPE_SKIN, TemperatureSample.LOCATION_WRIST); - addTemperatureColumnsIfNotExists(database, ColmiTemperatureSampleDao.TABLENAME, TemperatureSample.TYPE_SKIN, TemperatureSample.LOCATION_WRIST); - addTemperatureColumnsIfNotExists(database, FemometerVinca2TemperatureSampleDao.TABLENAME, TemperatureSample.TYPE_BODY, TemperatureSample.LOCATION_MOUTH); - addTemperatureColumnsIfNotExists(database, MijiaLywsdRealtimeSampleDao.TABLENAME, TemperatureSample.TYPE_AMBIENT, TemperatureSample.LOCATION_UNKNOWN); - addTemperatureColumnsIfNotExists(database, GenericTemperatureSampleDao.TABLENAME, TemperatureSample.TYPE_UNKNOWN, TemperatureSample.LOCATION_UNKNOWN); + addColumnIfNotExists(database, HuaweiTemperatureSampleDao.TABLENAME, HuaweiTemperatureSampleDao.Properties.TemperatureType.columnName, TemperatureSample.TYPE_SKIN); + addColumnIfNotExists(database, HuaweiTemperatureSampleDao.TABLENAME, HuaweiTemperatureSampleDao.Properties.TemperatureLocation.columnName, TemperatureSample.LOCATION_WRIST); + + addColumnIfNotExists(database, ColmiTemperatureSampleDao.TABLENAME, ColmiTemperatureSampleDao.Properties.TemperatureType.columnName, TemperatureSample.TYPE_SKIN); + addColumnIfNotExists(database, ColmiTemperatureSampleDao.TABLENAME, ColmiTemperatureSampleDao.Properties.TemperatureLocation.columnName, TemperatureSample.LOCATION_WRIST); + + addColumnIfNotExists(database, FemometerVinca2TemperatureSampleDao.TABLENAME, FemometerVinca2TemperatureSampleDao.Properties.TemperatureType.columnName, TemperatureSample.TYPE_BODY); + addColumnIfNotExists(database, FemometerVinca2TemperatureSampleDao.TABLENAME, FemometerVinca2TemperatureSampleDao.Properties.TemperatureLocation.columnName, TemperatureSample.LOCATION_MOUTH); + + addColumnIfNotExists(database, MijiaLywsdRealtimeSampleDao.TABLENAME, MijiaLywsdRealtimeSampleDao.Properties.TemperatureType.columnName, TemperatureSample.TYPE_AMBIENT); + addColumnIfNotExists(database, MijiaLywsdRealtimeSampleDao.TABLENAME, MijiaLywsdRealtimeSampleDao.Properties.TemperatureLocation.columnName, TemperatureSample.LOCATION_UNKNOWN); + + addColumnIfNotExists(database, GenericTemperatureSampleDao.TABLENAME, GenericTemperatureSampleDao.Properties.TemperatureType.columnName, TemperatureSample.TYPE_UNKNOWN); + addColumnIfNotExists(database, GenericTemperatureSampleDao.TABLENAME, GenericTemperatureSampleDao.Properties.TemperatureLocation.columnName, TemperatureSample.LOCATION_UNKNOWN); } @Override diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/database/schema/SchemaMigration.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/database/schema/SchemaMigration.java index e5c15c55fa..ec61801041 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/database/schema/SchemaMigration.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/database/schema/SchemaMigration.java @@ -36,16 +36,16 @@ public class SchemaMigration { } public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { - LOG.info("ActivityDatabase: schema upgrade requested from " + oldVersion + " to " + newVersion); + LOG.info("ActivityDatabase: schema upgrade requested from {} to {}", oldVersion, newVersion); try { for (int i = oldVersion + 1; i <= newVersion; i++) { DBUpdateScript updater = getUpdateScript(db, i); if (updater != null) { - LOG.info("upgrading activity database to version " + i); + LOG.info("upgrading activity database to version {}", i); updater.upgradeSchema(db); } } - LOG.info("activity database is now at version " + newVersion); + LOG.info("activity database is now at version {}", newVersion); } catch (RuntimeException ex) { GB.toast("Error upgrading database.", Toast.LENGTH_SHORT, GB.ERROR, ex); throw ex; // reject upgrade @@ -53,16 +53,16 @@ public class SchemaMigration { } public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) { - LOG.info("ActivityDatabase: schema downgrade requested from " + oldVersion + " to " + newVersion); + LOG.info("ActivityDatabase: schema downgrade requested from {} to {}", oldVersion, newVersion); try { for (int i = oldVersion; i >= newVersion; i--) { DBUpdateScript updater = getUpdateScript(db, i); if (updater != null) { - LOG.info("downgrading activity database to version " + (i - 1)); + LOG.info("downgrading activity database to version {}", i - 1); updater.downgradeSchema(db); } } - LOG.info("activity database is now at version " + newVersion); + LOG.info("activity database is now at version {}", newVersion); } catch (RuntimeException ex) { GB.toast("Error downgrading database.", Toast.LENGTH_SHORT, GB.ERROR, ex); throw ex; // reject downgrade diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/GenericTemperatureSampleProvider.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/GenericTemperatureSampleProvider.java index 9c2b47e38d..13049fc7c3 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/GenericTemperatureSampleProvider.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/GenericTemperatureSampleProvider.java @@ -33,8 +33,8 @@ import nodomain.freeyourgadget.gadgetbridge.impl.GBDevice; import nodomain.freeyourgadget.gadgetbridge.model.TemperatureSample; public class GenericTemperatureSampleProvider extends AbstractTimeSampleProvider { - private final Integer defaultType; - private final Integer defaultLocation; + private final int defaultType; + private final int defaultLocation; public GenericTemperatureSampleProvider(final GBDevice device, final DaoSession session) { this(device, session, TemperatureSample.TYPE_UNKNOWN, TemperatureSample.LOCATION_UNKNOWN); @@ -42,8 +42,8 @@ public class GenericTemperatureSampleProvider extends AbstractTimeSampleProvider public GenericTemperatureSampleProvider(final GBDevice device, final DaoSession session, - final Integer defaultType, - final Integer defaultLocation) { + final int defaultType, + final int defaultLocation) { super(device, session); this.defaultType = defaultType; this.defaultLocation = defaultLocation; @@ -51,10 +51,10 @@ public class GenericTemperatureSampleProvider extends AbstractTimeSampleProvider private GenericTemperatureSample applyDefaults(final GenericTemperatureSample sample) { if (sample != null) { - if (defaultType != -1 && (sample.getTemperatureType() == null || sample.getTemperatureType() == 0)) { + if (defaultType != TemperatureSample.TYPE_UNKNOWN && sample.getTemperatureType() == TemperatureSample.TYPE_UNKNOWN) { sample.setTemperatureType(defaultType); } - if (defaultLocation != -1 && (sample.getTemperatureLocation() == null || sample.getTemperatureLocation() == 0)) { + if (defaultLocation != TemperatureSample.LOCATION_UNKNOWN && sample.getTemperatureLocation() == TemperatureSample.LOCATION_UNKNOWN) { sample.setTemperatureLocation(defaultLocation); } } @@ -81,7 +81,10 @@ public class GenericTemperatureSampleProvider extends AbstractTimeSampleProvider @Override public GenericTemperatureSample createSample() { - return new GenericTemperatureSample(); + final GenericTemperatureSample sample = new GenericTemperatureSample(); + sample.setTemperatureType(defaultType); + sample.setTemperatureLocation(defaultLocation); + return sample; } @NonNull diff --git a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/femometer/FemometerVinca2SampleProvider.java b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/femometer/FemometerVinca2SampleProvider.java index 4c6206d828..1299432df6 100644 --- a/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/femometer/FemometerVinca2SampleProvider.java +++ b/app/src/main/java/nodomain/freeyourgadget/gadgetbridge/devices/femometer/FemometerVinca2SampleProvider.java @@ -53,7 +53,7 @@ public class FemometerVinca2SampleProvider extends AbstractTimeSampleProvider