diff --git a/core/src/main/java/info/nightscout/androidaps/utils/extensions/UserEntryPresentationHelper.kt b/core/src/main/java/info/nightscout/androidaps/utils/extensions/UserEntryPresentationHelper.kt index d32eb7473b..05341ff31d 100644 --- a/core/src/main/java/info/nightscout/androidaps/utils/extensions/UserEntryPresentationHelper.kt +++ b/core/src/main/java/info/nightscout/androidaps/utils/extensions/UserEntryPresentationHelper.kt @@ -3,7 +3,6 @@ package info.nightscout.androidaps.utils.extensions import dagger.Reusable import info.nightscout.androidaps.Constants import info.nightscout.androidaps.core.R -import info.nightscout.androidaps.database.entities.Translator import info.nightscout.androidaps.database.entities.UserEntry import info.nightscout.androidaps.database.entities.UserEntry.ColorGroup import info.nightscout.androidaps.database.entities.UserEntry.Units @@ -12,6 +11,7 @@ import info.nightscout.androidaps.interfaces.ProfileFunction import info.nightscout.androidaps.utils.DateUtil import info.nightscout.androidaps.utils.DecimalFormatter import info.nightscout.androidaps.utils.resources.ResourceHelper +import info.nightscout.androidaps.utils.Translator import javax.inject.Inject @Reusable diff --git a/core/src/main/java/info/nightscout/androidaps/utils/serialisation/SealedClassHelper.kt b/core/src/main/java/info/nightscout/androidaps/utils/serialisation/SealedClassHelper.kt index 7985d2c605..216754bd86 100644 --- a/core/src/main/java/info/nightscout/androidaps/utils/serialisation/SealedClassHelper.kt +++ b/core/src/main/java/info/nightscout/androidaps/utils/serialisation/SealedClassHelper.kt @@ -17,7 +17,7 @@ object SealedClassHelper { override fun create(gson: Gson, type: TypeToken): TypeAdapter { val kClass = Reflection.getOrCreateKotlinClass(type.rawType) return if (kClass.sealedSubclasses.any()) { - SealedClassTypeAdapter(kClass, gson) + SealedClassTypeAdapter(kClass, gson) } else gson.getDelegateAdapter(this, type) } @@ -26,25 +26,26 @@ object SealedClassHelper { private class SealedClassTypeAdapter(private val kClass: KClass, val gson: Gson) : TypeAdapter() { override fun read(jsonReader: JsonReader): T? { - jsonReader.beginObject() //start reading the object - val nextName = jsonReader.nextName() //get the name on the object - val innerClass = kClass.sealedSubclasses.firstOrNull { - it.simpleName!!.contains(nextName) - } - ?: throw Exception("$nextName is not found to be a data class of the sealed class ${kClass.qualifiedName}") + jsonReader.beginObject() + val nextName = jsonReader.nextName() + val innerClass = kClass.sealedSubclasses.firstOrNull { it.simpleName == nextName } + ?: throw Exception("$nextName is not a child of the sealed class ${kClass.qualifiedName}") val x = gson.fromJson(jsonReader, innerClass.javaObjectType) jsonReader.endObject() - //if there a static object, actually return that back to ensure equality and such! + // if there a static object, actually return that return innerClass.objectInstance as T? ?: x } override fun write(out: JsonWriter, value: T) { val jsonString = gson.toJson(value) - out.beginObject() val name = value.javaClass.canonicalName - out.name(name.splitToSequence(".").last()).jsonValue(jsonString) - out.endObject() + if (name != null) { + out.beginObject() + out.name(name.splitToSequence(".").last()).jsonValue(jsonString) + out.endObject() + } } } +} -} \ No newline at end of file +inline fun Gson.fromJson(json: String): T = fromJson(json, object : TypeToken() {}.type) diff --git a/core/src/main/java/info/nightscout/androidaps/utils/serialisation/ValueWithUnitSerialiser.kt b/core/src/main/java/info/nightscout/androidaps/utils/serialisation/ValueWithUnitSerialiser.kt index 019c38a704..c5a8c6948b 100644 --- a/core/src/main/java/info/nightscout/androidaps/utils/serialisation/ValueWithUnitSerialiser.kt +++ b/core/src/main/java/info/nightscout/androidaps/utils/serialisation/ValueWithUnitSerialiser.kt @@ -1,18 +1,14 @@ package info.nightscout.androidaps.utils.serialisation -import com.google.gson.reflect.TypeToken import info.nightscout.androidaps.database.entities.XXXValueWithUnit -import info.nightscout.androidaps.utils.ValueWithUnitWrapper object ValueWithUnitSerialiser { - fun toSealedClassJson(list: List): String = - list.map { ValueWithUnitWrapper(it) }.let { SealedClassHelper.gson.toJson(it) } + fun toSealedClassJson(list: List): String = list.map(::ValueWithUnitWrapper) + .let(SealedClassHelper.gson::toJson) - fun fromJson(string: String): List { - val itemType = object : TypeToken>() {}.type - - return SealedClassHelper.gson.fromJson>(string, itemType).map { it.wrapped } - } + fun fromJson(string: String): List = SealedClassHelper.gson + .fromJson>(string).map { it.wrapped } + private class ValueWithUnitWrapper(val wrapped: XXXValueWithUnit) } \ No newline at end of file diff --git a/database/src/main/java/info/nightscout/androidaps/database/entities/UserEntry.kt b/database/src/main/java/info/nightscout/androidaps/database/entities/UserEntry.kt index e0cdf352ac..1c43cbe25f 100644 --- a/database/src/main/java/info/nightscout/androidaps/database/entities/UserEntry.kt +++ b/database/src/main/java/info/nightscout/androidaps/database/entities/UserEntry.kt @@ -16,7 +16,7 @@ data class UserEntry( override var utcOffset: Long = TimeZone.getDefault().getOffset(timestamp).toLong(), var action: Action, var remark: String, - val sources: Sources, + // val sources: Sources, var values: MutableList ) : DBEntry, DBEntryWithTime { enum class Action (val colorGroup: ColorGroup) { diff --git a/database/src/main/java/info/nightscout/androidaps/database/entities/XXXValueWithUnit.kt b/database/src/main/java/info/nightscout/androidaps/database/entities/XXXValueWithUnit.kt index 28fa6ff8fa..f41f322996 100644 --- a/database/src/main/java/info/nightscout/androidaps/database/entities/XXXValueWithUnit.kt +++ b/database/src/main/java/info/nightscout/androidaps/database/entities/XXXValueWithUnit.kt @@ -65,6 +65,7 @@ sealed class XXXValueWithUnit { */ // just do develop in this file. Remove when done. +/* interface Translator { fun translate(units: UserEntry.Units): String @@ -72,43 +73,4 @@ interface Translator { fun translate(type: TherapyEvent.Type): String fun translate(reason: TemporaryTarget.Reason): String } - -enum class Sources(val text: String) { - @SerializedName("TreatmentDialog") TreatmentDialog ("TreatmentDialog"), - @SerializedName("InsulinDialog") InsulinDialog ("InsulinDialog"), - @SerializedName("CarbDialog") CarbDialog ("CarbDialog"), - @SerializedName("WizardDialog") WizardDialog ("WizardDialog"), - @SerializedName("QuickWizard") QuickWizard ("QuickWizard"), - @SerializedName("ExtendedBolusDialog") ExtendedBolusDialog ("ExtendedBolusDialog"), - @SerializedName("TTDialog") TTDialog ("TTDialog"), - @SerializedName("ProfileSwitchDialog") ProfileSwitchDialog ("ProfileSwitchDialog"), - @SerializedName("LoopDialog") LoopDialog ("LoopDialog"), - @SerializedName("TempBasalDialog") TempBasalDialog ("TempBasalDialog"), - @SerializedName("CalibrationDialog") CalibrationDialog ("CalibrationDialog"), - @SerializedName("FillDialog") FillDialog ("FillDialog"), - @SerializedName("BgCheck") BgCheck ("BgCheck"), - @SerializedName("SensorInsert") SensorInsert ("SensorInsert"), - @SerializedName("BatteryChange") BatteryChange ("BatteryChange"), - @SerializedName("Note") Note ("Note"), - @SerializedName("Exercise") Exercise ("Exercise"), - @SerializedName("Question") Question ("Question"), - @SerializedName("Announcement") Announcement ("Announcement"), - @SerializedName("Actions") Actions ("Actions"), //From Actions plugin - @SerializedName("Automation") Automation ("Automation"), //From Automation plugin - @SerializedName("LocalProfile") LocalProfile ("LocalProfile"), //From LocalProfile plugin - @SerializedName("Loop") Loop ("Loop"), //From Loop plugin - @SerializedName("Maintenance") Maintenance ("Maintenance"), //From Maintenance plugin - @SerializedName("NSClient") NSClient ("NSClient"), //From NSClient plugin - @SerializedName("Pump") Pump ("Pump"), //From Pump plugin (for example from pump history) - @SerializedName("SMS") SMS ("SMS"), //From SMS plugin - @SerializedName("Treatments") Treatments ("Treatments"), //From Treatments plugin - @SerializedName("Wear") Wear ("Wear"), //From Wear plugin - @SerializedName("Food") Food ("Food"), //From Food plugin - @SerializedName("Unknown") Unknown ("Unknown") //if necessary - ; - - companion object { - fun fromString(source: String?) = values().firstOrNull { it.name == source } ?: Unknown - fun fromText(source: String?) = values().firstOrNull { it.text == source } ?: Unknown - } -} \ No newline at end of file +*/