diff --git a/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/SessionFilterInstrumentedUnitTest.kt b/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/SessionFilterInstrumentedUnitTest.kt index 8a477114..5d2cab7b 100644 --- a/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/SessionFilterInstrumentedUnitTest.kt +++ b/app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/SessionFilterInstrumentedUnitTest.kt @@ -541,4 +541,36 @@ class SessionFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() { Assert.assertTrue(result.contains((it as Session).id)) } } + + @Test + fun testNumberOfRebuys() { + val realm = this.mockRealm + realm.beginTransaction() + val s1 = Session.testInstance(netResult = 200.0, isTournament = true) + s1.result!!.buyin = 50.0 + s1.tournamentEntryFee = 10.0 + val s2 = Session.testInstance(netResult = 50.0, isTournament = true) + s2.result!!.buyin = 10.0 + s2.tournamentEntryFee = 10.0 + + + val s3 = Session.testInstance(netResult = 500.0) + s3.cgBigBlind = 2.0 + s3.result!!.buyin = 1000.0 + + val s4 = Session.testInstance(netResult = 570.0) + s4.cgBigBlind = 5.0 + s4.result!!.buyin = 200.0 + realm.commitTransaction() + + val filterMore = QueryCondition.NumberOfRebuy(QueryCondition.Operator.MORE, 5.0) + val sessions = Filter.queryOn(realm, arrayListOf(filterMore)) + + Assert.assertEquals(2, sessions.size) + + val result = arrayListOf(s1.id, s3.id) + sessions.forEach { + Assert.assertTrue(result.contains((it as Session).id)) + } + } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt index a16c0963..8abd764e 100644 --- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt +++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt @@ -30,7 +30,7 @@ class PokerAnalyticsApplication : Application() { Realm.init(this) val realmConfiguration = RealmConfiguration.Builder() .name(Realm.DEFAULT_REALM_NAME) - .schemaVersion(3) + .schemaVersion(4) .migration(PokerAnalyticsMigration()) .initialData(Seed(this)) .build() diff --git a/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt b/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt index de7cb184..b5166458 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt @@ -330,8 +330,16 @@ sealed class QueryCondition : FilterElementRow { class NumberOfTable: ListOfInt() - open class NetAmountWon: ListOfDouble() - class NetAmountLost: NetAmountWon() { override var sign: Int = -1 } + class NumberOfRebuy(): ListOfDouble() { + constructor(operator: Operator, numberOfRebuy: Double) : this() { + this.operator = operator + listOfValues = arrayListOf(numberOfRebuy) + } + } + + open class NetAmount: ListOfDouble() + class NetAmountWon: NetAmount() + class NetAmountLost: NetAmount() { override var sign: Int = -1 } class NumberOfPlayer: ListOfInt() diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Result.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Result.kt index 9a8c4985..3f0bc919 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Result.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Result.kt @@ -127,7 +127,7 @@ open class Result : RealmObject(), Filterable { if (it.isCashGame()) { it.cgBigBlind?.let { bb -> if (bb > 0.0) { - this.numberOfRebuy = (this.buyin ?: 0.0) / bb + this.numberOfRebuy = (this.buyin ?: 0.0) / (bb * 100.0) } else { this.numberOfRebuy = null } 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 985c9128..f08e56cb 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 @@ -77,8 +77,9 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat AnyTournamentType::class.java -> "tournamentType" AnyBlind::class.java -> "blinds" NumberOfTable::class.java -> "numberOfTable" - NetAmountWon::class.java -> "computableResults.ratedNet" - NumberOfPlayer::class.java -> "tournamentNumberOfPlayers" + NetAmount::class.java -> "computableResults.ratedNet" + NumberOfRebuy::class.java -> "result.numberOfRebuy" + NumberOfPlayer::class.java -> "result.tournamentNumberOfPlayers" TournamentFee::class.java -> "tournamentEntryFee" StartedFromDate::class.java, StartedToDate::class.java -> "startDate" EndedFromDate::class.java, EndedToDate::class.java -> "endDate" @@ -222,6 +223,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat field = value this.computeStats() formatBlinds() + this.result?.computeNumberOfRebuy() } var blinds: String? = null @@ -231,6 +233,10 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat // The entry fee of the tournament var tournamentEntryFee: Double? = null + set(value) { + field = value + this.result?.computeNumberOfRebuy() + } // The total number of players who participated in the tournament var tournamentNumberOfPlayers: Int? = null diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategoryRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategoryRow.kt index 5bc99a77..f0202ccc 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategoryRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategoryRow.kt @@ -74,7 +74,8 @@ enum class FilterCategoryRow(override val resId: Int?, override val viewType: In MULTI_PLAYER ) RESULT -> arrayListOf( - VALUE + VALUE, + NUMBER_OF_REBUY ) TRANSACTION_TYPES -> arrayListOf() diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt index f4bd2859..a2235c00 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt @@ -33,12 +33,13 @@ enum class FilterSectionRow(override val resId: Int?) : RowRepresentable { PLAYERS_COUNT(R.string.players_count), TOURNAMENT_RE_BUY_COUNT(R.string.rebuy_count), ENTRY_FEE(R.string.buyin), - MULTI_TABLING(R.string.multi_tabling), + MULTI_TABLING(R.string.number_of_tables), VALUE(R.string.value), LOCATION(R.string.locations), BANKROLL(R.string.bankrolls), NUMBER_OF_PLAYERS(R.string.number_of_players), MULTI_PLAYER(R.string.multiplayer), + NUMBER_OF_REBUY(R.string.number_of_buyins) ; private enum class SelectionType { @@ -89,14 +90,12 @@ enum class FilterSectionRow(override val resId: Int?) : RowRepresentable { // Cash BLIND -> Criteria.Blinds.queryConditions -// CASH_RE_BUY_COUNT -> QueryCondition.moreOrLess() // Tournament TOURNAMENT_TYPE -> Criteria.TournamentTypes.queryConditions // COMPLETION_PERCENTAGE -> arrayListOf() -// PLACE -> QueryCondition.moreOrLess() + //PLACE -> QueryCondition.moreOrLess() PLAYERS_COUNT -> QueryCondition.moreOrLess() -// TOURNAMENT_RE_BUY_COUNT -> QueryCondition.moreOrLess() ENTRY_FEE -> Criteria.TournamentFees.queryConditions TOURNAMENT_NAME -> Criteria.TournamentNames.queryConditions @@ -104,7 +103,8 @@ enum class FilterSectionRow(override val resId: Int?) : RowRepresentable { LOCATION -> Criteria.Locations.queryConditions BANKROLL -> Criteria.Bankrolls.queryConditions MULTI_TABLING -> QueryCondition.moreOrLess() -// NUMBER_OF_PLAYERS -> QueryCondition.moreOrLess() + NUMBER_OF_PLAYERS -> QueryCondition.moreOrLess() + NUMBER_OF_REBUY -> QueryCondition.moreOrLess() // MULTI_PLAYER -> arrayListOf() VALUE -> arrayListOf().apply {