Clean and improve models & migration

dev
Aurelien Hubert 7 years ago
parent b23591e05c
commit 386a5bab37
  1. 9
      app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt
  2. 39
      app/src/main/java/net/pokeranalytics/android/model/realm/CustomField.kt
  3. 25
      app/src/main/java/net/pokeranalytics/android/model/realm/CustomFieldEntry.kt

@ -2,6 +2,7 @@ package net.pokeranalytics.android.model.migrations
import io.realm.DynamicRealm
import io.realm.RealmMigration
import net.pokeranalytics.android.model.realm.CustomField
import net.pokeranalytics.android.model.realm.CustomFieldEntry
import timber.log.Timber
@ -104,8 +105,9 @@ class PokerAnalyticsMigration : RealmMigration {
}
schema.create("CustomFieldEntry")?.let {
it.addField("id", String::class.java).setRequired("id", true)
it.addField("value", String::class.java).setNullable("type", false)
it.addField("order", Integer::class.java).setNullable("type", false)
it.addField("value", String::class.java).setNullable("value", false)
it.addField("order", Integer::class.java).setNullable("order", false)
it.addField("customField", CustomField::class.java).setNullable("customField", false)
}
schema.get("CustomField")?.let {
it.addField("type", Integer::class.java).setNullable("type", false)
@ -113,7 +115,6 @@ class PokerAnalyticsMigration : RealmMigration {
it.addField("sortCondition", Integer::class.java)
it.addRealmListField("entries", CustomFieldEntry::class.java)
}
schema.get("ReportSetup")?.let {
it.addRealmListField("statIds", Int::class.java)
it.addRealmListField("criteriaIds", Int::class.java)
@ -122,10 +123,10 @@ class PokerAnalyticsMigration : RealmMigration {
it.addRealmObjectField("filter", filterSchema)
}
}
schema.get("Session")?.let {
it.addField("startDateHourMinuteComponent", Double::class.java).setNullable("startDateHourMinuteComponent", true)
it.addField("endDateHourMinuteComponent", Double::class.java).setNullable("endDateHourMinuteComponent", true)
it.addRealmListField("customFieldEntries", CustomFieldEntry::class.java)
}
currentVersion++
}

@ -1,6 +1,7 @@
package net.pokeranalytics.android.model.realm
import android.content.Context
import android.text.InputType
import io.realm.Realm
import io.realm.RealmList
import io.realm.RealmObject
@ -11,6 +12,7 @@ import net.pokeranalytics.android.model.interfaces.DeleteValidityStatus
import net.pokeranalytics.android.model.interfaces.NameManageable
import net.pokeranalytics.android.model.interfaces.SaveValidityStatus
import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor
import net.pokeranalytics.android.ui.view.RowViewType
@ -58,13 +60,16 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa
updateRowRepresentation()
}
override fun localizedTitle(context: Context): String {
return this.name
}
override fun getDisplayName(context: Context): String {
return this.name
}
@Ignore
override val viewType: Int = RowViewType.TITLE_VALUE_ARROW.ordinal
override var viewType: Int = RowViewType.TITLE_VALUE_ARROW.ordinal
@Ignore
private var rowRepresentation: List<RowRepresentable> = mutableListOf()
@ -105,6 +110,14 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa
return R.string.relationship_error
}
override val bottomSheetType: BottomSheetType
get() {
return when (type) {
Type.LIST.uniqueIdentifier -> BottomSheetType.LIST_STATIC
else -> BottomSheetType.EDIT_TEXT
}
}
override fun editDescriptors(row: RowRepresentable): ArrayList<RowRepresentableEditDescriptor>? {
return when (row) {
is CustomFieldEntry -> row.editingDescriptors(
@ -116,6 +129,28 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa
}
}
override fun editingDescriptors(map: Map<String, Any?>): ArrayList<RowRepresentableEditDescriptor>? {
return when (type) {
Type.LIST.uniqueIdentifier -> {
val defaultValue: Any? by map
val data: RealmList<CustomFieldEntry>? by map
arrayListOf(
RowRepresentableEditDescriptor(defaultValue, staticData = data)
)
}
else -> {
val defaultValue: String? by map
arrayListOf(
RowRepresentableEditDescriptor(
defaultValue, inputType = InputType.TYPE_CLASS_NUMBER
or InputType.TYPE_NUMBER_FLAG_DECIMAL
or InputType.TYPE_NUMBER_FLAG_SIGNED
)
)
}
}
}
/**
* Update the row representation
*/
@ -160,6 +195,7 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa
*/
fun addEntry(): CustomFieldEntry {
val entry = CustomFieldEntry()
entry.customField = this
entries.add(entry)
sortEntries()
updateRowRepresentation()
@ -175,5 +211,4 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa
updateRowRepresentation()
}
}

@ -11,15 +11,20 @@ import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor
import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.util.NULL_TEXT
import net.pokeranalytics.android.util.extensions.toCurrency
import java.util.*
import java.util.Currency
open class CustomFieldEntry : RealmObject(), RowRepresentable {
@PrimaryKey
var id = UUID.randomUUID().toString()
var value: String = ""
var order: Int = 0
var customField: CustomField? = null
var value: String = ""
@Ignore
var isMovable: Boolean = false
@ -55,4 +60,22 @@ open class CustomFieldEntry : RealmObject(), RowRepresentable {
)
}
/**
* Return the amount
*/
fun getFormattedValue(currency: Currency? = null): String {
return when (customField?.type) {
CustomField.Type.AMOUNT.uniqueIdentifier -> {
try {
value.toDouble().toCurrency(currency)
} catch (e: Exception) {
NULL_TEXT
}
}
else -> {
value
}
}
}
}
Loading…
Cancel
Save