From c3fb50ef5291e9f8e4061f5d5e57501d675833a6 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Fri, 10 May 2019 12:12:59 +0200 Subject: [PATCH] Add migration for CustomField --- .../android/PokerAnalyticsApplication.kt | 2 +- .../migrations/PokerAnalyticsMigration.kt | 11 +++ .../android/model/realm/CustomField.kt | 96 ++++++++++--------- 3 files changed, 65 insertions(+), 44 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt index d9c7f7fa..239300b6 100644 --- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt +++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt @@ -34,7 +34,7 @@ class PokerAnalyticsApplication : Application() { Realm.init(this) val realmConfiguration = RealmConfiguration.Builder() .name(Realm.DEFAULT_REALM_NAME) - .schemaVersion(6) + .schemaVersion(7) .migration(PokerAnalyticsMigration()) .initialData(Seed(this)) .build() diff --git a/app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt b/app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt index 0a8d1cb5..a0fe661d 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt @@ -106,6 +106,17 @@ class PokerAnalyticsMigration : RealmMigration { currentVersion++ } + // Migrate to version 7 + if (currentVersion == 6) { + Timber.d("*** Running migration ${currentVersion + 1}") + schema.get("CustomField")?.let { + it.addField("type", Integer::class.java).setNullable("type", false) + it.addField("duplicateValue", Boolean::class.java) + it.addRealmListField("entries", String::class.java) + } + currentVersion++ + } + } override fun equals(other: Any?): Boolean { diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/CustomField.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/CustomField.kt index 518285bd..c9645405 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/CustomField.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/CustomField.kt @@ -1,6 +1,7 @@ package net.pokeranalytics.android.model.realm import io.realm.Realm +import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey @@ -19,65 +20,74 @@ import java.util.* open class CustomField : RealmObject(), Manageable, StaticRowRepresentableDataSource, RowRepresentable { + enum class Type(var resId: Int) { + LIST(R.string.items_list), + NUMBER(R.string.number), + AMOUNT(R.string.amount) + } - companion object { + companion object { + val rowRepresentation: List by lazy { + val rows = ArrayList() + rows.add(SimpleRow.NAME) + rows.addAll(CustomFieldRow.values()) + rows + } + } - val rowRepresentation: List by lazy { - val rows = ArrayList() - rows.add(SimpleRow.NAME) - rows.addAll(CustomFieldRow.values()) - rows - } - } + @PrimaryKey + override var id = UUID.randomUUID().toString() + // The name of the currency field + var name: String = "" - @PrimaryKey - override var id = UUID.randomUUID().toString() + // Migration + var type: Int = Type.LIST.ordinal + var duplicateValue: Boolean = false + var entries: RealmList = RealmList() - // The name of the currency field - var name: String = "" - // @todo + // @todo - override fun getDisplayName(): String { - return this.name - } + override fun getDisplayName(): String { + return this.name + } - @Ignore - override val viewType: Int = RowViewType.TITLE_VALUE_ARROW.ordinal + @Ignore + override val viewType: Int = RowViewType.TITLE_VALUE_ARROW.ordinal - override fun adapterRows(): List? { - return rowRepresentation - } + override fun adapterRows(): List? { + return rowRepresentation + } - override fun updateValue(value: Any?, row: RowRepresentable) { - when (row) { - SimpleRow.NAME -> this.name = value as String? ?: "" - } - } + override fun updateValue(value: Any?, row: RowRepresentable) { + when (row) { + SimpleRow.NAME -> this.name = value as String? ?: "" + } + } - override fun isValidForSave(): Boolean { - return true - } + override fun isValidForSave(): Boolean { + return true + } - override fun alreadyExists(realm: Realm): Boolean { - return realm.where().equalTo("id", id).findFirst() != null - } + override fun alreadyExists(realm: Realm): Boolean { + return realm.where().equalTo("id", id).findFirst() != null + } - override fun getFailedSaveMessage(status: SaveValidityStatus): Int { - //TODO: - return R.string.relationship_error - } + override fun getFailedSaveMessage(status: SaveValidityStatus): Int { + //TODO: + return R.string.relationship_error + } - override fun isValidForDelete(realm: Realm): Boolean { - return true - } + override fun isValidForDelete(realm: Realm): Boolean { + return true + } - override fun getFailedDeleteMessage(status: DeleteValidityStatus): Int { - //TODO: - return R.string.relationship_error - } + override fun getFailedDeleteMessage(status: DeleteValidityStatus): Int { + //TODO: + return R.string.relationship_error + } } \ No newline at end of file