diff --git a/app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt b/app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt index ade36d37..ab0e160c 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt @@ -5,6 +5,7 @@ import io.realm.Realm import net.pokeranalytics.android.model.filter.Query import net.pokeranalytics.android.model.filter.QueryCondition import net.pokeranalytics.android.model.realm.* +import net.pokeranalytics.android.model.realm.handhistory.HandHistory import net.pokeranalytics.android.model.utils.Seed import net.pokeranalytics.android.model.utils.SessionSetManager import net.pokeranalytics.android.util.BLIND_SEPARATOR @@ -134,6 +135,17 @@ class Patcher { session.cgBlinds = blindsFormatted.joinToString(BLIND_SEPARATOR) } } + + val handHistories = realm.where(HandHistory::class.java).findAll() + handHistories.forEach { hh -> + val blinds = arrayListOf(hh.oldSmallBlind, hh.oldBigBlind).filterNotNull() + val blindsFormatted = blinds.map { NumberFormat.getInstance().format(it) } + if (blindsFormatted.isNotEmpty()) { + hh.blinds = blindsFormatted.joinToString(BLIND_SEPARATOR) + } + } + + } realm.close() } 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 2876d457..04e1fba9 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 @@ -270,8 +270,11 @@ class PokerAnalyticsMigration : RealmMigration { } schema.get("HandHistory")?.let { hs -> - hs.addField("cgStakes", String::class.java) - hs.addField("cgBlinds", String::class.java) + hs.setNullable("ante", true) + hs.addField("stakes", String::class.java) + hs.addField("blinds", String::class.java) + hs.addField("biggestBet", Double::class.java) + ?.setNullable("biggestBet", true) hs.renameField("smallBlind", "oldSmallBlind") hs.renameField("bigBlind", "oldBigBlind") } diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index 5569e930..598d12c6 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -32,15 +32,14 @@ import net.pokeranalytics.android.ui.adapter.UnmanagedRowRepresentableException import net.pokeranalytics.android.ui.graph.Graph import net.pokeranalytics.android.ui.view.* import net.pokeranalytics.android.ui.view.rows.SessionPropertiesRow -import net.pokeranalytics.android.util.CrashLogging -import net.pokeranalytics.android.util.NULL_TEXT -import net.pokeranalytics.android.util.TextFormat -import net.pokeranalytics.android.util.UserDefaults +import net.pokeranalytics.android.util.* import net.pokeranalytics.android.util.extensions.hourMinute import net.pokeranalytics.android.util.extensions.shortDateTime import net.pokeranalytics.android.util.extensions.toCurrency import net.pokeranalytics.android.util.extensions.toMinutes import java.text.DateFormat +import java.text.NumberFormat +import java.text.ParseException import java.util.* import java.util.Currency @@ -328,7 +327,7 @@ open class Session : RealmObject(), Savable, RowUpdatable, RowRepresentable, Tim var cgBlinds: String? = null set(value) { - field = value + field = cleanupBlinds(value) this.generateStakes() this.defineHighestBet() this.computeStats() @@ -1093,6 +1092,26 @@ open class Session : RealmObject(), Savable, RowUpdatable, RowRepresentable, Tim // this.cgBiggestBet = bets.maxOrNull() // } + private fun cleanupBlinds(blinds: String?): String? { + + if (blinds == null) { + return null + } + + val blindValues = blinds.split(BLIND_SEPARATOR).mapNotNull { + try { + NumberFormat.getInstance().parse(it) + } catch (e: ParseException) { + null + } + } + return if (blindValues.isNotEmpty()) { + blindValues.joinToString(BLIND_SEPARATOR) + } else { + null + } + } + /// StakesHolder override val ante: Double? diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/keyboard/StakesKeyboardView.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/keyboard/StakesKeyboardView.kt index 2d264cf6..5634ff1d 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/keyboard/StakesKeyboardView.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/keyboard/StakesKeyboardView.kt @@ -10,6 +10,7 @@ import kotlinx.android.synthetic.main.view_keyboard_stakes.view.* import net.pokeranalytics.android.R import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.util.BLIND_SEPARATOR +import java.text.DecimalFormatSymbols class StakesKeyboardView : LinearLayoutCompat { @@ -44,6 +45,7 @@ class StakesKeyboardView : LinearLayoutCompat { view.value_7.text = "7" view.value_8.text = "8" view.value_9.text = "9" + view.value_decimal.text = DecimalFormatSymbols.getInstance().decimalSeparator.toString() view.value_back.text = "⌫" view.value_separator.text = "/" @@ -57,6 +59,7 @@ class StakesKeyboardView : LinearLayoutCompat { view.value_7.setOnClickListener { this.commitText("7") } view.value_8.setOnClickListener { this.commitText("8") } view.value_9.setOnClickListener { this.commitText("9") } + view.value_decimal.setOnClickListener { this.commitText(DecimalFormatSymbols.getInstance().decimalSeparator.toString()) } view.value_separator.setOnClickListener { this.commitText(BLIND_SEPARATOR) } view.value_back.setOnClickListener { this.deleteText() }