diff --git a/app/src/androidTest/java/net/pokeranalytics/android/RealmInstrumentedUnitTest.kt b/app/src/androidTest/java/net/pokeranalytics/android/RealmInstrumentedUnitTest.kt index d19327fd..45faaaef 100644 --- a/app/src/androidTest/java/net/pokeranalytics/android/RealmInstrumentedUnitTest.kt +++ b/app/src/androidTest/java/net/pokeranalytics/android/RealmInstrumentedUnitTest.kt @@ -18,7 +18,8 @@ open class RealmInstrumentedUnitTest { fun newSessionInstance(realm: Realm) : Session { val session = realm.createObject(Session::class.java, UUID.randomUUID().toString()) - session.computableResult = realm.createObject(ComputableResult::class.java) + val computableResult = realm.createObject(ComputableResult::class.java) + computableResult.session = session session.result = realm.createObject(Result::class.java) return session } 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 7458503e..ff68b8b4 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt @@ -219,6 +219,9 @@ class Calculator { } } } + else -> { + // nothing + } } var average = 0.0 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 a9d2092f..276f3a47 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 @@ -1,9 +1,6 @@ package net.pokeranalytics.android.model.realm import io.realm.RealmObject -import io.realm.RealmResults -import io.realm.annotations.Ignore -import io.realm.annotations.LinkingObjects import net.pokeranalytics.android.calculus.interfaces.Computable open class ComputableResult : RealmObject(), Computable { @@ -24,11 +21,11 @@ open class ComputableResult : RealmObject(), Computable { override var sessionSet: SessionSet? = null - @LinkingObjects("computableResult") - private val sessions: RealmResults? = null +// @LinkingObjects("computableResult") +// private val sessions: RealmResults? = null - @Ignore - val session: Session? = this.sessions?.firstOrNull() +// @Ignore + var session: Session? = null fun updateWith(session: Session) { diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Currency.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Currency.kt index 9f4d8b65..5f18c933 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Currency.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Currency.kt @@ -27,7 +27,7 @@ open class Currency : RealmObject() { // could be async val query = this.realm.where(ComputableResult::class.java) - query.`in`("sessions.bankroll.currency.id", arrayOf(this.id)) + query.`in`("session.bankroll.currency.id", arrayOf(this.id)) val cResults = query.findAll() cResults.forEach { computable -> 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 ebe070ed..77d784ff 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 @@ -4,8 +4,10 @@ import android.content.Context import io.realm.Realm import io.realm.RealmList import io.realm.RealmObject +import io.realm.RealmResults import io.realm.annotations.Ignore import io.realm.annotations.Index +import io.realm.annotations.LinkingObjects import io.realm.annotations.PrimaryKey import io.realm.kotlin.where import net.pokeranalytics.android.R @@ -61,7 +63,10 @@ open class Session : RealmObject(), Manageable, StaticRowRepresentableDataSource fun newInstance(realm: Realm, isTournament: Boolean, bankroll: Bankroll? = null): Session { val session = Session() session.result = Result() - session.computableResult = ComputableResult() + + val computableResult = ComputableResult() + computableResult.session = session + if (bankroll != null) { session.bankroll = bankroll } else { @@ -86,7 +91,13 @@ open class Session : RealmObject(), Manageable, StaticRowRepresentableDataSource /** * Optimized result for faster stats */ - var computableResult: ComputableResult? = null +// var computableResult: ComputableResult? = null + + @LinkingObjects("session") + private val computableResults: RealmResults? = null + + @Ignore + val computableResult: ComputableResult? = this.computableResults?.firstOrNull() // Timed interface @@ -293,10 +304,11 @@ open class Session : RealmObject(), Manageable, StaticRowRepresentableDataSource } fun updateComputableResult() { - this.computableResult?.let { + + this.computableResults?.forEach { it.updateWith(this) } ?: run { - throw IllegalStateException("Session should always have a Light Result") + throw IllegalStateException("Session should always have a computable results") } } 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 3acab070..f569614c 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 @@ -57,7 +57,7 @@ open class SessionSet : RealmObject(), Timed { } fun computeStats() { - this.ratedNet = this.sessions?.sumByDouble { it.computableResult!!.ratedNet } ?: 0.0 + 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 } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt index 8f6a5f86..e8faee6c 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt @@ -166,25 +166,16 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc val s = Date() - val allSessions = realm.where(ComputableResult::class.java).isNotNull("sessions.endDate").findAll() + val allSessions = realm.where(ComputableResult::class.java).isNotNull("session.endDate").findAll() val allSessionSets = realm.where(SessionSet::class.java).findAll() Timber.d(">>>>> number of computables to compute = ${allSessions.size}") - val cgSessions = allSessions.where().equalTo("sessions.type", Session.Type.CASH_GAME.ordinal).findAll() + val cgSessions = allSessions.where().equalTo("session.type", Session.Type.CASH_GAME.ordinal).findAll() val cgSessionSets = realm.where(SessionSet::class.java).equalTo("sessions.type", Session.Type.CASH_GAME.ordinal).findAll() - val tSessions = allSessions.where().equalTo("sessions.type", Session.Type.TOURNAMENT.ordinal).findAll() + val tSessions = allSessions.where().equalTo("session.type", Session.Type.TOURNAMENT.ordinal).findAll() val tSessionSets = realm.where(SessionSet::class.java).equalTo("sessions.type", Session.Type.TOURNAMENT.ordinal).findAll() -// val computableList = realm.copyFromRealm(allSessions) - -// computableList.forEach { session -> -// if (true) { // @todo -// cgSessions.add(session) -// } else { -// tSessions.add(session) -// } -// } val e = Date() val duration = (e.time - s.time) / 1000.0 Timber.d(">>> filtering in ${duration} seconds") diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/SessionObserverFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/SessionObserverFragment.kt index 2f5b288d..ffa166be 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/SessionObserverFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/SessionObserverFragment.kt @@ -10,7 +10,7 @@ open class SessionObserverFragment : PokerAnalyticsFragment() { init { val realm = Realm.getDefaultInstance() - this.endedSessions = realm.where(ComputableResult::class.java).isNotNull("sessions.endDate").findAll() + this.endedSessions = realm.where(ComputableResult::class.java).isNotNull("session.endDate").findAll() this.endedSessions.addChangeListener { _, _ -> this.sessionsChanged() }