From 613d24db65c70117eef3f190bdd3e972470c5b2d Mon Sep 17 00:00:00 2001 From: Erik Johansson Date: Wed, 17 Jan 2018 20:24:43 +0100 Subject: [PATCH] Move to/from int converters to enum --- .../core/bluetooth/BluetoothMiScale2.java | 2 +- .../core/database/ScaleUserDatabase.java | 8 +-- .../openscale/core/utils/Converters.java | 52 +++++++++++++------ .../com.health.openscale/ConvertersTest.java | 16 ++++++ 4 files changed, 56 insertions(+), 22 deletions(-) diff --git a/android_app/app/src/main/java/com/health/openscale/core/bluetooth/BluetoothMiScale2.java b/android_app/app/src/main/java/com/health/openscale/core/bluetooth/BluetoothMiScale2.java index 02ca85fb..45e939f0 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/bluetooth/BluetoothMiScale2.java +++ b/android_app/app/src/main/java/com/health/openscale/core/bluetooth/BluetoothMiScale2.java @@ -96,7 +96,7 @@ public class BluetoothMiScale2 extends BluetoothCommunication { case 0: // set scale units final ScaleUser selectedUser = OpenScale.getInstance(context).getSelectedScaleUser(); - byte[] setUnitCmd = new byte[]{(byte)0x06, (byte)0x04, (byte)0x00, (byte) Converters.toWeightUnitInt(selectedUser.getScaleUnit())}; + byte[] setUnitCmd = new byte[]{(byte)0x06, (byte)0x04, (byte)0x00, (byte) selectedUser.getScaleUnit().toInt()}; writeBytes(WEIGHT_CUSTOM_SERVICE, WEIGHT_CUSTOM_CONFIG, setUnitCmd); break; case 1: diff --git a/android_app/app/src/main/java/com/health/openscale/core/database/ScaleUserDatabase.java b/android_app/app/src/main/java/com/health/openscale/core/database/ScaleUserDatabase.java index 78745f3e..b9d10fb9 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/database/ScaleUserDatabase.java +++ b/android_app/app/src/main/java/com/health/openscale/core/database/ScaleUserDatabase.java @@ -112,8 +112,8 @@ public class ScaleUserDatabase extends SQLiteOpenHelper { values.put(COLUMN_NAME_USER_NAME, scaleUser.getUserName()); values.put(COLUMN_NAME_BIRTHDAY, formatDateTime.format(scaleUser.getBirthday())); values.put(COLUMN_NAME_BODY_HEIGHT, scaleUser.getBodyHeight()); - values.put(COLUMN_NAME_SCALE_UNIT, Converters.toWeightUnitInt(scaleUser.getScaleUnit())); - values.put(COLUMN_NAME_GENDER, Converters.toGenderInt(scaleUser.getGender())); + values.put(COLUMN_NAME_SCALE_UNIT, scaleUser.getScaleUnit().toInt()); + values.put(COLUMN_NAME_GENDER, scaleUser.getGender().toInt()); values.put(COLUMN_NAME_INITIAL_WEIGHT, scaleUser.getInitialWeight()); values.put(COLUMN_NAME_GOAL_WEIGHT, scaleUser.getGoalWeight()); values.put(COLUMN_NAME_GOAL_DATE, formatDateTime.format(scaleUser.getGoalDate())); @@ -145,8 +145,8 @@ public class ScaleUserDatabase extends SQLiteOpenHelper { values.put(COLUMN_NAME_USER_NAME, scaleUser.getUserName()); values.put(COLUMN_NAME_BIRTHDAY, formatDateTime.format(scaleUser.getBirthday())); values.put(COLUMN_NAME_BODY_HEIGHT, scaleUser.getBodyHeight()); - values.put(COLUMN_NAME_SCALE_UNIT, Converters.toWeightUnitInt(scaleUser.getScaleUnit())); - values.put(COLUMN_NAME_GENDER, Converters.toGenderInt(scaleUser.getGender())); + values.put(COLUMN_NAME_SCALE_UNIT, scaleUser.getScaleUnit().toInt()); + values.put(COLUMN_NAME_GENDER, scaleUser.getGender().toInt()); values.put(COLUMN_NAME_INITIAL_WEIGHT, scaleUser.getInitialWeight()); values.put(COLUMN_NAME_GOAL_WEIGHT, scaleUser.getGoalWeight()); values.put(COLUMN_NAME_GOAL_DATE, formatDateTime.format(scaleUser.getGoalDate())); diff --git a/android_app/app/src/main/java/com/health/openscale/core/utils/Converters.java b/android_app/app/src/main/java/com/health/openscale/core/utils/Converters.java index 9ff800e1..1f8f9ca4 100644 --- a/android_app/app/src/main/java/com/health/openscale/core/utils/Converters.java +++ b/android_app/app/src/main/java/com/health/openscale/core/utils/Converters.java @@ -33,9 +33,39 @@ public class Converters { } return "kg"; } + + public static WeightUnit fromInt(int unit) { + switch (unit) { + case 1: + return LB; + case 2: + return ST; + } + return KG; + } + + public int toInt() { + switch (this) { + case LB: + return 1; + case ST: + return 2; + } + return 0; + } } - public enum Gender { MALE, FEMALE } + public enum Gender { + MALE, FEMALE; + + public static Gender fromInt(int gender) { + return gender == 0 ? MALE : FEMALE; + } + + public int toInt() { + return this == MALE ? 0 : 1; + } + } private static float KG_LB = 2.20462f; private static float KG_ST = 0.157473f; @@ -52,34 +82,22 @@ public class Converters { @TypeConverter public static WeightUnit fromWeightUnitInt(int unit) { - switch (unit) { - case 1: - return WeightUnit.LB; - case 2: - return WeightUnit.ST; - } - return WeightUnit.KG; + return WeightUnit.fromInt(unit); } @TypeConverter public static int toWeightUnitInt(WeightUnit unit) { - switch (unit) { - case LB: - return 1; - case ST: - return 2; - } - return 0; + return unit.toInt(); } @TypeConverter public static Gender fromGenderInt(int gender) { - return gender == 0 ? Gender.MALE : Gender.FEMALE; + return Gender.fromInt(gender); } @TypeConverter public static int toGenderInt(Gender gender) { - return gender == Gender.MALE ? 0 : 1; + return gender.toInt(); } public static float toKilogram(float value, WeightUnit unit) { diff --git a/android_app/app/src/test/java/com.health.openscale/ConvertersTest.java b/android_app/app/src/test/java/com.health.openscale/ConvertersTest.java index 50b2265b..296f8f68 100644 --- a/android_app/app/src/test/java/com.health.openscale/ConvertersTest.java +++ b/android_app/app/src/test/java/com.health.openscale/ConvertersTest.java @@ -30,10 +30,18 @@ public class ConvertersTest { assertEquals(1, Converters.toWeightUnitInt(Converters.WeightUnit.LB)); assertEquals(2, Converters.toWeightUnitInt(Converters.WeightUnit.ST)); + for (Converters.WeightUnit unit : Converters.WeightUnit.values()) { + assertEquals(Converters.toWeightUnitInt(unit), unit.toInt()); + } + assertEquals(Converters.WeightUnit.KG, Converters.fromWeightUnitInt(0)); assertEquals(Converters.WeightUnit.LB, Converters.fromWeightUnitInt(1)); assertEquals(Converters.WeightUnit.ST, Converters.fromWeightUnitInt(2)); + for (int i = 0; i < Converters.WeightUnit.values().length; ++i) { + assertEquals(Converters.fromWeightUnitInt(i), Converters.WeightUnit.fromInt(i)); + } + assertEquals("kg", Converters.WeightUnit.KG.toString()); assertEquals("lb", Converters.WeightUnit.LB.toString()); assertEquals("st", Converters.WeightUnit.ST.toString()); @@ -44,9 +52,17 @@ public class ConvertersTest { assertEquals(0, Converters.toGenderInt(Converters.Gender.MALE)); assertEquals(1, Converters.toGenderInt(Converters.Gender.FEMALE)); + for (Converters.Gender gender : Converters.Gender.values()) { + assertEquals(Converters.toGenderInt(gender), gender.toInt()); + } + assertEquals(Converters.Gender.MALE, Converters.fromGenderInt(0)); assertEquals(Converters.Gender.FEMALE, Converters.fromGenderInt(1)); + for (int i = 0; i < Converters.Gender.values().length; ++i) { + assertEquals(Converters.fromGenderInt(i), Converters.Gender.fromInt(i)); + } + assertEquals("MALE", Converters.Gender.MALE.toString()); assertEquals("FEMALE", Converters.Gender.FEMALE.toString()); }