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)
val realmConfiguration = RealmConfiguration.Builder()
.name(Realm.DEFAULT_REALM_NAME)
.schemaVersion(6)
.schemaVersion(7)
.migration(PokerAnalyticsMigration())
.initialData(Seed(this))
.build()

@ -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 {

@ -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<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
override var id = UUID.randomUUID().toString()
// Migration
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 {
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<RowRepresentable>? {
return rowRepresentation
}
override fun adapterRows(): List<RowRepresentable>? {
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<CustomField>().equalTo("id", id).findFirst() != null
}
override fun alreadyExists(realm: Realm): Boolean {
return realm.where<CustomField>().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
}
}
Loading…
Cancel
Save