JSON serialization, save and load routines

This commit is contained in:
2024-11-03 08:30:07 +01:00
parent 596fa67272
commit 2948e059de
3 changed files with 91 additions and 4 deletions

View File

@ -1,12 +1,13 @@
package it.danieleverducci.lunatracker.entities
import org.json.JSONObject
import java.util.Date
class LunaEvent(
val type: LunaEventType,
val quantity: Int? = null
val quantity: Int? = null,
){
val time: Long // In unix time (seconds since 1970)
var time: Long // In unix time (seconds since 1970)
init {
time = System.currentTimeMillis() / 1000
@ -15,7 +16,43 @@ class LunaEvent(
override fun toString(): String {
return "${type.toString()} qty: $quantity time: ${Date(time * 1000)}"
}
}
fun toJson(): JSONObject {
val jo = JSONObject()
val type = when (type) {
LunaEventType.BABY_BOTTLE -> "BABY_BOTTLE"
LunaEventType.BREASTFEEDING_LEFT_NIPPLE -> "BREASTFEEDING_LEFT_NIPPLE"
LunaEventType.BREASTFEEDING_BOTH_NIPPLE -> "BREASTFEEDING_BOTH_NIPPLE"
LunaEventType.BREASTFEEDING_RIGHT_NIPPLE -> "BREASTFEEDING_RIGHT_NIPPLE"
LunaEventType.DIAPERCHANGE_POO -> "DIAPERCHANGE_POO"
LunaEventType.DIAPERCHANGE_PEE -> "DIAPERCHANGE_PEE"
else -> "UNKNOWN"
}
jo.put("type", type)
jo.put("quantity", quantity)
jo.put("time", time)
return jo
}
companion object {
fun fromJson(j: JSONObject): LunaEvent {
val type = when (j.getString("type")) {
"BABY_BOTTLE" -> LunaEventType.BABY_BOTTLE
"BREASTFEEDING_LEFT_NIPPLE" -> LunaEventType.BREASTFEEDING_LEFT_NIPPLE
"BREASTFEEDING_BOTH_NIPPLE" -> LunaEventType.BREASTFEEDING_BOTH_NIPPLE
"BREASTFEEDING_RIGHT_NIPPLE" -> LunaEventType.BREASTFEEDING_RIGHT_NIPPLE
"DIAPERCHANGE_POO" -> LunaEventType.DIAPERCHANGE_POO
"DIAPERCHANGE_PEE" -> LunaEventType.DIAPERCHANGE_PEE
else -> LunaEventType.UNKNOWN
}
val quantity = j.optInt("quantity")
val time = j.getLong("time")
val evt = LunaEvent(type, quantity)
evt.time = time
return evt
}
}
}
enum class LunaEventType {
BABY_BOTTLE,
@ -24,4 +61,5 @@ enum class LunaEventType {
BREASTFEEDING_RIGHT_NIPPLE,
DIAPERCHANGE_POO,
DIAPERCHANGE_PEE,
UNKNOWN
}