diff --git a/app/src/androidTest/java/net/pokeranalytics/android/filter/SessionFilterInstrumentedUnitTest.kt b/app/src/androidTest/java/net/pokeranalytics/android/filter/SessionFilterInstrumentedUnitTest.kt index fd53269d..e2112c36 100644 --- a/app/src/androidTest/java/net/pokeranalytics/android/filter/SessionFilterInstrumentedUnitTest.kt +++ b/app/src/androidTest/java/net/pokeranalytics/android/filter/SessionFilterInstrumentedUnitTest.kt @@ -536,7 +536,7 @@ class SessionFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() { } @Test - fun tesNetResultFilter() { + fun testNetResultFilter() { val realm = this.mockRealm realm.beginTransaction() val s1 = Session.testInstance(netResult = 200.0) diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt b/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt index 638c7cb5..b8173952 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt @@ -143,7 +143,7 @@ class Calculator { computables.forEach { s -> index++; tSum += s.ratedNet - tBBSum += s.bbNetResult + tBBSum += s.bbNet tBBSessionCount += s.hasBigBlind tWinningSessionCount += s.isPositive tBuyinSum += s.ratedBuyin @@ -201,7 +201,7 @@ class Calculator { tHourlyDuration += sessionSet.hourlyDuration tSum += sessionSet.ratedNet tTotalHands += sessionSet.estimatedHands - tBBSum += sessionSet.bbNetResult + tBBSum += sessionSet.bbNet tHourlyRate = gSum / tHourlyDuration tHourlyRateBB = gBBSum / tHourlyDuration diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/interfaces/Computable.kt b/app/src/main/java/net/pokeranalytics/android/calculus/interfaces/Computable.kt index d3d91520..4d1eca7c 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/interfaces/Computable.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/interfaces/Computable.kt @@ -5,7 +5,7 @@ import net.pokeranalytics.android.model.realm.SessionSet interface Computable { var ratedNet: Double - var bbNetResult: Double + var bbNet: Double var hasBigBlind: Int var isPositive: Int var ratedBuyin: Double diff --git a/app/src/main/java/net/pokeranalytics/android/model/filter/SessionFilterable.kt b/app/src/main/java/net/pokeranalytics/android/model/filter/SessionFilterable.kt index 472a0bdc..7d84e62f 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/filter/SessionFilterable.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/filter/SessionFilterable.kt @@ -55,7 +55,7 @@ enum class SessionFilterable(private var fieldName:String? = null, private var s SMALL_BLIND("cgSmallBlind"), COMMENT("comment"), TOURNAMENT_FEATURES("tournamentFeatures.id"), - NET_RESULT("computableResult.ratedNet"), + NET_RESULT("computableResults.ratedNet"), BUY_IN("result.buyin"), CASH_OUT("result.cashout"), TIPS("result.tips"), diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/ComputableResult.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/ComputableResult.kt index 276f3a47..36e33f9c 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/ComputableResult.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/ComputableResult.kt @@ -7,7 +7,7 @@ open class ComputableResult : RealmObject(), Computable { override var ratedNet: Double = 0.0 - override var bbNetResult: Double = 0.0 + override var bbNet: Double = 0.0 override var hasBigBlind: Int = 0 @@ -21,14 +21,12 @@ open class ComputableResult : RealmObject(), Computable { override var sessionSet: SessionSet? = null -// @LinkingObjects("computableResult") -// private val sessions: RealmResults? = null - -// @Ignore var session: Session? = null fun updateWith(session: Session) { + this.sessionSet = session.sessionSet + val rate = session.bankroll?.currency?.rate ?: 1.0 session.result?.let { result -> @@ -36,18 +34,17 @@ open class ComputableResult : RealmObject(), Computable { this.isPositive = result.isPositive this.ratedBuyin = (result.buyin ?: 0.0) * rate } - this.bbNetResult = session.bbNetResult - this.hasBigBlind = session.hasBigBlind - this.estimatedHands = session.estimatedHands - this.bbPer100Hands = session.bbPer100Hands - this.sessionSet = session.sessionSet + this.bbNet = session.bbNet + this.hasBigBlind = if (session.cgBigBlind != null) 1 else 0 + this.estimatedHands = session.estimatedHands + this.bbPer100Hands = session.bbNet / (session.numberOfHandsPerHour * session.hourlyDuration) * 100 } enum class Field(val identifier: String) { RATED_NET("ratedNet"), - BB_NET("bbNetResult"), + BB_NET("bbNet"), HAS_BIG_BLIND("hasBigBlind"), IS_POSITIVE("isPositive"), RATED_BUYIN("ratedBuyin"), 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 ae91e05c..eb6c5fcc 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 @@ -42,18 +42,6 @@ import kotlin.collections.ArrayList open class Session : RealmObject(), Manageable, StaticRowRepresentableDataSource, RowRepresentable, Timed, TimeFilterable { -// @Ignore -// var rate: Double = 0.0 -// get() = this.bankroll?.currency?.rate ?: 0.0 -// -// @Ignore -// override var ratedNet: Double = 0.0 -// get() = this.result!!.net * this.rate -// -// @Ignore -// override var isPositive: Int = 0 -// get() = this.result!!.isPositive - enum class Type { CASH_GAME, TOURNAMENT @@ -89,11 +77,6 @@ open class Session : RealmObject(), Manageable, StaticRowRepresentableDataSource // The result of the main user var result: Result? = null - /** - * Optimized result for faster stats - */ -// var computableResult: ComputableResult? = null - @LinkingObjects("session") private val computableResults: RealmResults? = null @@ -102,9 +85,6 @@ open class Session : RealmObject(), Manageable, StaticRowRepresentableDataSource // Timed interface - override var dayOfWeek : Int? = null - override var month: Int? = null - override var year: Int? = null /** * The start date of the session @@ -123,6 +103,10 @@ open class Session : RealmObject(), Manageable, StaticRowRepresentableDataSource this.computeStats() } + override var dayOfWeek : Int? = null + override var month: Int? = null + override var year: Int? = null + /** * the end date of the session */ @@ -159,7 +143,7 @@ open class Session : RealmObject(), Manageable, StaticRowRepresentableDataSource this.updateRowRepresentation() } - // The time frame sessionGroup, which can contain multiple endedSessions + // The session set containing the sessions, which can contain multiple endedSessions var sessionSet: SessionSet? = null // the date of creation of the app @@ -205,7 +189,6 @@ open class Session : RealmObject(), Manageable, StaticRowRepresentableDataSource // The big blind value var cgBigBlind: Double? = null set(value) { - this.hasBigBlind = if (value != null) 1 else 0 field = value this.updateComputableResult() } @@ -277,30 +260,33 @@ open class Session : RealmObject(), Manageable, StaticRowRepresentableDataSource val LIVE_PLAYER_HANDS_PER_HOUR = 250.0 /** - * The estimation of hands played during the session + * The net result in big blinds */ - var estimatedHands: Double = 0.0 - private set - - /** - * The result in big blinds - */ - var bbNetResult: Double = 0.0 - private set + val bbNet: Double + get() { + val bb = this.cgBigBlind; val result = this.result + if (bb != null && result != null) { + return result.net / bb + } else { + return 0.0 + } + } /** - * The number of big blinds won per 100 hands + * The estimation of the number of hands played */ - var bbPer100Hands: Double = 0.0 - private set + @Ignore + var estimatedHands: Double = 0.0 + get() { + val noh = this.numberOfHandsPerHour + val hd = this.hourlyDuration + return noh * hd + } /** * Pre-compute various stats */ private fun computeStats() { - this.computeEstimatedHands() - this.computeBBNetResult() - this.computeBBPer100Hands() this.updateComputableResult() } @@ -324,36 +310,12 @@ open class Session : RealmObject(), Manageable, StaticRowRepresentableDataSource return playerHandsPerHour / tableSize.toDouble() } - private fun computeEstimatedHands() { - this.estimatedHands = this.numberOfHandsPerHour * this.hourlyDuration - } - - private fun computeBBNetResult() { - val bb = this.cgBigBlind; val result = this.result - if (bb != null && result != null) { - this.bbNetResult = result.net / bb - } else { - this.bbNetResult = 0.0 - } - } - - private fun computeBBPer100Hands() { - this.bbPer100Hands = this.bbNetResult / this.estimatedHands * 100 - } - - /** - * Returns 1 if the session has big blinds, otherwise 0 - */ - var hasBigBlind: Int = 0 - private set - @Ignore var ratedBuyin: Double = 0.0 get() { - this.result?.let { result -> - result.buyin?.let { - return it - } + val rate = this.bankroll?.currency?.rate ?: 1.0 + this.result?.buyin?.let { buyin -> + return buyin * rate } return 0.0 } @@ -366,9 +328,6 @@ open class Session : RealmObject(), Manageable, StaticRowRepresentableDataSource throw ModelException("Session should have an existing Result relationship") } -// @Ignore -// val ratedNet: Double = this.result?.ratedNet ?: 0.0 - // States /** diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt index f569614c..1a52cf08 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt @@ -59,7 +59,7 @@ open class SessionSet : RealmObject(), Timed { fun computeStats() { this.ratedNet = this.sessions?.sumByDouble { it.computableResult?.ratedNet ?: 0.0 } ?: 0.0 this.estimatedHands = this.sessions?.sumByDouble { it.estimatedHands } ?: 0.0 - this.bbNetResult = this.sessions?.sumByDouble { it.bbNetResult } ?: 0.0 + this.bbNet = this.sessions?.sumByDouble { it.bbNet } ?: 0.0 } /** @@ -68,22 +68,19 @@ open class SessionSet : RealmObject(), Timed { @LinkingObjects("sessionSet") val sessions: RealmResults? = null -// @Ignore var ratedNet: Double = 0.0 @Ignore val hourlyRate: Double = this.ratedNet / this.hourlyDuration -// @Ignore var estimatedHands: Double = 0.0 -// @Ignore - var bbNetResult: Double = 0.0 + var bbNet: Double = 0.0 enum class Field(val identifier: String) { RATED_NET("ratedNet"), HOURLY_RATE("hourlyRate"), - BB_NET("bbNetResult"), + BB_NET("bbNet"), ESTIMATED_HANDS("estimatedHands"), NET_DURATION("netDuration") } diff --git a/app/src/test/java/net/pokeranalytics/android/ExampleUnitTest.kt b/app/src/test/java/net/pokeranalytics/android/ExampleUnitTest.kt index 40a6e864..7467cb2f 100644 --- a/app/src/test/java/net/pokeranalytics/android/ExampleUnitTest.kt +++ b/app/src/test/java/net/pokeranalytics/android/ExampleUnitTest.kt @@ -25,7 +25,7 @@ class ExampleUnitTest : RealmUnitTest() { // // override var sessionSet: SessionSet? = SessionSet() // override var estimatedHands: Double = 0.0 -// override var bbNetResult: Double = 0.0 +// override var bbNet: Double = 0.0 // override var bigBlindSessionCount: Int = 0 // 0 or 1 // override var ratedBuyin: Double = 0.0 //