Add migration for CustomField

dev
Aurelien Hubert 7 years ago
parent 0905781830
commit c3fb50ef52
  1. 2
      app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt
  2. 11
      app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt
  3. 96
      app/src/main/java/net/pokeranalytics/android/model/realm/CustomField.kt

@ -34,7 +34,7 @@ class PokerAnalyticsApplication : Application() {
Realm.init(this) Realm.init(this)
val realmConfiguration = RealmConfiguration.Builder() val realmConfiguration = RealmConfiguration.Builder()
.name(Realm.DEFAULT_REALM_NAME) .name(Realm.DEFAULT_REALM_NAME)
.schemaVersion(6) .schemaVersion(7)
.migration(PokerAnalyticsMigration()) .migration(PokerAnalyticsMigration())
.initialData(Seed(this)) .initialData(Seed(this))
.build() .build()

@ -106,6 +106,17 @@ class PokerAnalyticsMigration : RealmMigration {
currentVersion++ 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 { override fun equals(other: Any?): Boolean {

@ -1,6 +1,7 @@
package net.pokeranalytics.android.model.realm package net.pokeranalytics.android.model.realm
import io.realm.Realm import io.realm.Realm
import io.realm.RealmList
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.annotations.Ignore import io.realm.annotations.Ignore
import io.realm.annotations.PrimaryKey import io.realm.annotations.PrimaryKey
@ -19,65 +20,74 @@ import java.util.*
open class CustomField : RealmObject(), Manageable, StaticRowRepresentableDataSource, RowRepresentable { 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<RowRepresentable> by lazy {
val rows = ArrayList<RowRepresentable>()
rows.add(SimpleRow.NAME)
rows.addAll(CustomFieldRow.values())
rows
}
}
val rowRepresentation: List<RowRepresentable> by lazy {
val rows = ArrayList<RowRepresentable>()
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 // Migration
override var id = UUID.randomUUID().toString() var type: Int = Type.LIST.ordinal
var duplicateValue: Boolean = false
var entries: RealmList<String> = RealmList()
// The name of the currency field
var name: String = ""
// @todo // @todo
override fun getDisplayName(): String { override fun getDisplayName(): String {
return this.name return this.name
} }
@Ignore @Ignore
override val viewType: Int = RowViewType.TITLE_VALUE_ARROW.ordinal override val viewType: Int = RowViewType.TITLE_VALUE_ARROW.ordinal
override fun adapterRows(): List<RowRepresentable>? { override fun adapterRows(): List<RowRepresentable>? {
return rowRepresentation return rowRepresentation
} }
override fun updateValue(value: Any?, row: RowRepresentable) { override fun updateValue(value: Any?, row: RowRepresentable) {
when (row) { when (row) {
SimpleRow.NAME -> this.name = value as String? ?: "" SimpleRow.NAME -> this.name = value as String? ?: ""
} }
} }
override fun isValidForSave(): Boolean { override fun isValidForSave(): Boolean {
return true return true
} }
override fun alreadyExists(realm: Realm): Boolean { override fun alreadyExists(realm: Realm): Boolean {
return realm.where<CustomField>().equalTo("id", id).findFirst() != null return realm.where<CustomField>().equalTo("id", id).findFirst() != null
} }
override fun getFailedSaveMessage(status: SaveValidityStatus): Int { override fun getFailedSaveMessage(status: SaveValidityStatus): Int {
//TODO: //TODO:
return R.string.relationship_error return R.string.relationship_error
} }
override fun isValidForDelete(realm: Realm): Boolean { override fun isValidForDelete(realm: Realm): Boolean {
return true return true
} }
override fun getFailedDeleteMessage(status: DeleteValidityStatus): Int { override fun getFailedDeleteMessage(status: DeleteValidityStatus): Int {
//TODO: //TODO:
return R.string.relationship_error return R.string.relationship_error
} }
} }
Loading…
Cancel
Save