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 19e9ebd1..ea1f8e5b 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 @@ -6,6 +6,7 @@ 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.utils.Seed +import net.pokeranalytics.android.model.utils.SessionSetManager import net.pokeranalytics.android.util.Preferences class Patcher { @@ -13,25 +14,32 @@ class Patcher { companion object { fun patchAll(context: Context) { - patchMissingTransactionTypes(context) + + Preferences.executeOnce(Preferences.Keys.PATCH_SESSION_SETS, context) { + patchSessionSet() + } Preferences.executeOnce(Preferences.Keys.PATCH_BREAK, context) { patchBreaks() } Preferences.executeOnce(Preferences.Keys.PATCH_TRANSACTION_TYPES_NAMES, context) { patchDefaultTransactionTypes(context) } - Preferences.executeOnce(Preferences.Keys.PATCH_BLINDS_FORMAT, context) { - patchBlindFormat() - } + Preferences.executeOnce(Preferences.Keys.PATCH_BLINDS_FORMAT, context) { + patchBlindFormat() + } val realm = Realm.getDefaultInstance() - val lockedTypes = realm.where(TransactionType::class.java).equalTo("lock", true).findAll() + val lockedTypes = + realm.where(TransactionType::class.java).equalTo("lock", true).findAll() if (lockedTypes.size == 3) { Preferences.executeOnce(Preferences.Keys.ADD_NEW_TRANSACTION_TYPES, context) { - val newTypes = arrayOf(TransactionType.Value.STACKING_INCOMING, TransactionType.Value.STACKING_OUTGOING) + val newTypes = arrayOf( + TransactionType.Value.STACKING_INCOMING, + TransactionType.Value.STACKING_OUTGOING + ) realm.executeTransaction { Seed.createDefaultTransactionTypes(newTypes, context, realm) } @@ -45,7 +53,8 @@ class Patcher { val realm = Realm.getDefaultInstance() val depositType = TransactionType.Value.DEPOSIT - val deposit = realm.where(TransactionType::class.java).equalTo("kind", depositType.uniqueIdentifier).findFirst() + val deposit = realm.where(TransactionType::class.java) + .equalTo("kind", depositType.uniqueIdentifier).findFirst() if (deposit == null) { realm.executeTransaction { Seed.createDefaultTransactionTypes(arrayOf(depositType), context, realm) @@ -53,7 +62,8 @@ class Patcher { } val withdrawalType = TransactionType.Value.WITHDRAWAL - val withdrawal = realm.where(TransactionType::class.java).equalTo("kind", withdrawalType.uniqueIdentifier).findFirst() + val withdrawal = realm.where(TransactionType::class.java) + .equalTo("kind", withdrawalType.uniqueIdentifier).findFirst() if (withdrawal == null) { realm.executeTransaction { Seed.createDefaultTransactionTypes(arrayOf(withdrawalType), context, realm) @@ -68,18 +78,18 @@ class Patcher { val realm = Realm.getDefaultInstance() val sets = realm.where(SessionSet::class.java).findAll() val sessions = Filter.queryOn(realm, Query(QueryCondition.IsCash)) - val results = realm.where(Result::class.java).findAll() + val results = realm.where(Result::class.java).findAll() realm.executeTransaction { sets.forEach { it.computeStats() } - sessions.forEach { - it.formatBlinds() - } - results.forEach { - it.computeNumberOfRebuy() - } + sessions.forEach { + it.formatBlinds() + } + results.forEach { + it.computeNumberOfRebuy() + } } realm.close() @@ -100,16 +110,33 @@ class Patcher { realm.close() } - private fun patchBlindFormat() { - val realm = Realm.getDefaultInstance() - realm.executeTransaction { - val sessions = realm.where(Session::class.java).findAll() - sessions.forEach { session -> - session.formatBlinds() - } - } - realm.close() - } + private fun patchBlindFormat() { + val realm = Realm.getDefaultInstance() + realm.executeTransaction { + val sessions = realm.where(Session::class.java).findAll() + sessions.forEach { session -> + session.formatBlinds() + } + } + realm.close() + } + + /* + 02/09/19: A bug with the session set management made them kept instead of deleted, + thus making duration calculation wrong + */ + private fun patchSessionSet() { + val realm = Realm.getDefaultInstance() + + realm.executeTransaction { + realm.where(SessionSet::class.java).findAll().deleteAllFromRealm() + val sessions = realm.where(Session::class.java).findAll() + sessions.forEach { session -> + SessionSetManager.updateTimeline(session) + } + } + realm.close() + } } diff --git a/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt b/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt index b4c73024..ae2a8138 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt @@ -32,6 +32,7 @@ class Preferences { ACTIVE_FILTER_ID("ActiveFilterId"), LATEST_PURCHASE("latestPurchase"), PATCH_BREAK("patchBreaks"), + PATCH_SESSION_SETS("patchSessionSet"), PATCH_TRANSACTION_TYPES_NAMES("patchTransactionTypesNames"), PATCH_BLINDS_FORMAT("patchBlindFormat"), ADD_NEW_TRANSACTION_TYPES("addNewTransactionTypes")