diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt index 3981ae4a..cbd36805 100644 --- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt +++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt @@ -10,7 +10,6 @@ import io.realm.kotlin.where import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import net.pokeranalytics.android.calculus.ReportWhistleBlower import net.pokeranalytics.android.model.migrations.Patcher import net.pokeranalytics.android.model.migrations.PokerAnalyticsMigration import net.pokeranalytics.android.model.realm.Session @@ -25,7 +24,6 @@ import java.util.* class PokerAnalyticsApplication : Application() { - var reportWhistleBlower: ReportWhistleBlower? = null var backupOperator: BackupOperator? = null companion object { @@ -81,9 +79,9 @@ class PokerAnalyticsApplication : Application() { Patcher.patchAll(this) // Processors - SessionManager.create() + SessionManager.configure(this.applicationContext) UserConfigObserver.create() - this.reportWhistleBlower = ReportWhistleBlower(this.applicationContext) +// this.reportWhistleBlower = ReportWhistleBlower(this.applicationContext) // Backups this.backupOperator = BackupOperator(this.applicationContext) @@ -92,6 +90,10 @@ class PokerAnalyticsApplication : Application() { val locale = Locale.getDefault() CrashLogging.log("Country: ${locale.country}, language: ${locale.language}") +// val realm = Realm.getDefaultInstance() +// val v:Int = 0 +// val set = realm.where().equalTo("sessions.type", v).findAll() +// Timber.d("SESSION SET COUNT = ${set.size}") // Realm.getDefaultInstance().executeTransaction { // it.delete(Performance::class.java) diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/ReportWhistleBlower.kt b/app/src/main/java/net/pokeranalytics/android/calculus/ReportWhistleBlower.kt index 92c51b6b..81be7b75 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/ReportWhistleBlower.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/ReportWhistleBlower.kt @@ -4,7 +4,6 @@ import android.content.Context import android.os.CountDownTimer import io.realm.Realm import io.realm.RealmQuery -import io.realm.RealmResults import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -13,12 +12,10 @@ import net.pokeranalytics.android.model.LiveOnline import net.pokeranalytics.android.model.realm.CustomField import net.pokeranalytics.android.model.realm.Performance import net.pokeranalytics.android.model.realm.PerformanceKey -import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.ui.view.rows.StaticReport import net.pokeranalytics.android.util.extensions.findById import net.pokeranalytics.android.util.extensions.formattedHourlyDuration import net.pokeranalytics.android.util.extensions.writeAsync -import timber.log.Timber import kotlin.coroutines.CoroutineContext @@ -28,7 +25,7 @@ interface NewPerformanceListener { class ReportWhistleBlower(var context: Context) { - private var sessions: RealmResults? = null +// private var sessions: RealmResults? = null // private var results: RealmResults? = null private var currentTask: ReportTask? = null @@ -43,19 +40,19 @@ class ReportWhistleBlower(var context: Context) { init { - val realm = Realm.getDefaultInstance() - - this.sessions = realm.where(Session::class.java).findAll() - this.sessions?.addChangeListener { _ -> - requestReportLaunch() - } - -// this.results = realm.where(Result::class.java).findAll() -// this.results?.addChangeListener { _ -> +// val realm = Realm.getDefaultInstance() +// +// this.sessions = realm.where(Session::class.java).findAll() +// this.sessions?.addChangeListener { _ -> // requestReportLaunch() // } - - realm.close() +// +//// this.results = realm.where(Result::class.java).findAll() +//// this.results?.addChangeListener { _ -> +//// requestReportLaunch() +//// } +// +// realm.close() } fun addListener(newPerformanceListener: NewPerformanceListener) { @@ -67,7 +64,7 @@ class ReportWhistleBlower(var context: Context) { } fun requestReportLaunch() { - Timber.d(">>> Launch report") +// Timber.d(">>> Launch report") if (paused) { return @@ -176,7 +173,7 @@ class ReportTask(private var whistleBlower: ReportWhistleBlower, var context: Co private fun launchReport(realm: Realm, report: StaticReport) { - Timber.d(">>> launch report = $report") +// Timber.d(">>> launch report = $report") when (report) { StaticReport.OptimalDuration -> launchOptimalDuration(realm, report) @@ -207,7 +204,7 @@ class ReportTask(private var whistleBlower: ReportWhistleBlower, var context: Co for (stat in result.options.stats) { - Timber.d("analyse stat: $stat for report: $staticReport") +// Timber.d("analyse stat: $stat for report: $staticReport") // Get current performance var query = performancesQuery(realm, staticReport, stat) @@ -229,7 +226,7 @@ class ReportTask(private var whistleBlower: ReportWhistleBlower, var context: Co val performanceQuery = computedResults.group.query val performanceName = performanceQuery.getName(this.context, nameSeparator) - Timber.d("Best computed = $performanceName, ${computedResults.computedStat(Stat.NET_RESULT)?.value}") +// Timber.d("Best computed = $performanceName, ${computedResults.computedStat(Stat.NET_RESULT)?.value}") var storePerf = true currentPerf?.let { @@ -277,10 +274,10 @@ class ReportTask(private var whistleBlower: ReportWhistleBlower, var context: Co } } ?: run { // if there is no max but a now irrelevant Performance, we delete it - Timber.d("NO best computed value, current perf = $currentPerf ") +// Timber.d("NO best computed value, current perf = $currentPerf ") currentPerf?.let { perf -> realm.writeAsync { asyncRealm -> - Timber.d("Delete perf: stat = ${perf.stat}, report = ${perf.reportId}") +// Timber.d("Delete perf: stat = ${perf.stat}, report = ${perf.reportId}") asyncRealm.findById(perf.id)?.deleteFromRealm() // perf.deleteFromRealm() } diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReportManager.kt b/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReportManager.kt index 3b3b3542..636da991 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReportManager.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReportManager.kt @@ -73,7 +73,7 @@ object BankrollReportManager { var report: BankrollReport? = null val coroutine = CoroutineScope(context = Dispatchers.IO).async { val s = Date() - Timber.d(">>>>> start computing bankroll...") +// Timber.d(">>>>> start computing bankroll...") val realm = Realm.getDefaultInstance() @@ -84,7 +84,7 @@ object BankrollReportManager { val e = Date() val duration = (e.time - s.time) / 1000.0 - Timber.d(">>>>> ended in $duration seconds") +// Timber.d(">>>>> ended in $duration seconds") } coroutine.await() diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/optimalduration/CashGameOptimalDurationCalculator.kt b/app/src/main/java/net/pokeranalytics/android/calculus/optimalduration/CashGameOptimalDurationCalculator.kt index 1ec0797d..99e7f0a4 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/optimalduration/CashGameOptimalDurationCalculator.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/optimalduration/CashGameOptimalDurationCalculator.kt @@ -8,7 +8,6 @@ import net.pokeranalytics.android.model.filter.QueryCondition import net.pokeranalytics.android.model.realm.Session import org.apache.commons.math3.fitting.PolynomialCurveFitter import org.apache.commons.math3.fitting.WeightedObservedPoints -import timber.log.Timber import java.util.* import kotlin.math.pow import kotlin.math.round @@ -65,7 +64,7 @@ class CashGameOptimalDurationCalculator { var validBuckets = 0 val hkeys = sessionsByDuration.keys.map { it / 3600 / 1000.0 }.sorted() - Timber.d("Stop notif > keys: $hkeys ") +// Timber.d("Stop notif > keys: $hkeys ") for (key in sessionsByDuration.keys.sorted()) { val sessionCount = sessionsByDuration[key]?.size ?: 0 if (start == null && sessionCount >= minimumValidityCount) { @@ -76,15 +75,15 @@ class CashGameOptimalDurationCalculator { validBuckets++ } } - Timber.d("Stop notif > validBuckets: $validBuckets ") +// Timber.d("Stop notif > validBuckets: $validBuckets ") if (!(start != null && end != null && (end - start) >= intervalValidity)) { - Timber.d("Stop notif > invalid setup: $start / $end ") +// Timber.d("Stop notif > invalid setup: $start / $end ") return null } // define if we have enough sessions if (sessions.size < 50) { - Timber.d("Stop notif > not enough sessions: ${sessions.size} ") +// Timber.d("Stop notif > not enough sessions: ${sessions.size} ") return null } @@ -134,7 +133,7 @@ class CashGameOptimalDurationCalculator { return bestDuration } - Timber.d("Stop notif > not found, best duration: $bestDuration") +// Timber.d("Stop notif > not found, best duration: $bestDuration") realm.close() return null } diff --git a/app/src/main/java/net/pokeranalytics/android/model/filter/Query.kt b/app/src/main/java/net/pokeranalytics/android/model/filter/Query.kt index 7c7c89bc..54af52f4 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/filter/Query.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/filter/Query.kt @@ -108,7 +108,6 @@ class Query { return Query(this) } - /* Returns the first object Id of any QueryCondition */ 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 39075d64..382f8024 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 @@ -62,7 +62,7 @@ class Patcher { patchRatedAmounts() } - patchPerformances(application) + patchPerformances() } @@ -196,13 +196,13 @@ class Patcher { realm.close() } - private fun patchPerformances(application: PokerAnalyticsApplication) { + private fun patchPerformances() { val realm = Realm.getDefaultInstance() val sessionCount = realm.where().findAll().size val performanceCount = realm.where().findAll().size if (sessionCount > 1 && performanceCount == 0) { - application.reportWhistleBlower?.requestReportLaunch() + SessionManager.reportWhistleBlower?.requestReportLaunch() } realm.close() } 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 2b9c8575..17682bf9 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 @@ -5,7 +5,6 @@ import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.util.UserDefaults -import timber.log.Timber import java.util.* open class Currency : RealmObject() { @@ -43,7 +42,7 @@ open class Currency : RealmObject() { fun refreshRelatedRatedValues() { - Timber.d("refreshRelatedRatedValues of $code") +// Timber.d("refreshRelatedRatedValues of $code") val rate = this.rate ?: DEFAULT_RATE val query = this.realm.where(ComputableResult::class.java) query.`in`("session.bankroll.currency.id", arrayOf(this.id)) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt index d83a9fd0..5735b063 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt @@ -43,6 +43,7 @@ open class Filter : RealmObject(), RowRepresentable, RowUpdatable, Deletable, Us inline fun queryOn(realm: Realm, query: Query, sortField: String? = null): RealmResults { val rootQuery = realm.where() var realmQuery = query.queryWith(rootQuery) +// Timber.d("entity = ${realmQuery.typeQueried} > desc = ${realmQuery.description}") sortField?.let { realmQuery = realmQuery.sort(it) } 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 30fa5203..fedf6796 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 @@ -135,7 +135,7 @@ open class Result : RealmObject(), Filterable { } // Computes the number of rebuy - fun computeNumberOfRebuy() { + private fun computeNumberOfRebuy() { this.session?.let { if (it.isCashGame()) { it.cgBiggestBet?.let { bb -> 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 fc2f3259..d4ebfbcd 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 @@ -100,9 +100,9 @@ open class Session : RealmObject(), Savable, RowRepresentable, Timed, AnyStake::class.java -> "cgStakes" NumberOfTable::class.java -> "numberOfTables" NetAmountWon::class.java, NetAmountLost::class.java -> "computableResults.ratedNet" - NumberOfRebuy::class.java -> "result.numberOfRebuy" + NumberOfRebuy::class.java -> "numberOfRebuy" TournamentNumberOfPlayer::class.java -> "tournamentNumberOfPlayers" - TournamentFinalPosition::class.java -> "result.tournamentFinalPosition" + TournamentFinalPosition::class.java -> "tournamentFinalPosition" TournamentFee::class.java -> "tournamentEntryFee" StartedFromDate::class.java, StartedToDate::class.java, EndedFromDate::class.java, EndedToDate::class.java -> "startDate" AnyDayOfWeek::class.java, IsWeekEnd::class.java, IsWeekDay::class.java -> "dayOfWeek" @@ -444,9 +444,9 @@ open class Session : RealmObject(), Savable, RowRepresentable, Timed, } else if (buyin != null || cashout != null) { useBuyin = true } else { - if (this.isCashGame() && !this.isLive) { - useBuyin = false - } + if (this.isCashGame() && !this.isLive) { + useBuyin = false + } } } @@ -461,7 +461,7 @@ open class Session : RealmObject(), Savable, RowRepresentable, Timed, // Precompute results this.addToComputeQueue() - this.sessionSet?.computeStats() + } // Computes the number of rebuy 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 20025072..c4e6ccb6 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 @@ -15,11 +15,12 @@ import net.pokeranalytics.android.model.interfaces.Identifiable import net.pokeranalytics.android.model.interfaces.Timed import net.pokeranalytics.android.util.NULL_TEXT import net.pokeranalytics.android.util.TextFormat +import timber.log.Timber import java.text.DateFormat import java.util.* -open class SessionSet() : RealmObject(), Timed, Filterable { +open class SessionSet : RealmObject(), Timed, Filterable { @PrimaryKey override var id = UUID.randomUUID().toString() @@ -61,6 +62,7 @@ open class SessionSet() : RealmObject(), Timed, Filterable { override var netDuration: Long = 0L fun computeStats() { + Timber.d("compute > session count = ${this.sessions?.size}") this.ratedNet = this.sessions?.sumOf { it.computableResult?.ratedNet ?: 0.0 } ?: 0.0 this.estimatedHands = this.sessions?.sumOf { it.estimatedHands } ?: 0.0 this.bbNet = this.sessions?.sumOf { it.bbNet } ?: 0.0 @@ -75,7 +77,7 @@ open class SessionSet() : RealmObject(), Timed, Filterable { var ratedNet: Double = 0.0 - val hourlyRate: Double + private val hourlyRate: Double get() { return this.ratedNet / this.hourlyDuration } @@ -84,7 +86,7 @@ open class SessionSet() : RealmObject(), Timed, Filterable { var bbNet: BB = 0.0 - val bbHourlyRate: BB + private val bbHourlyRate: BB get() { return this.bbNet / this.hourlyDuration } @@ -100,14 +102,14 @@ open class SessionSet() : RealmObject(), Timed, Filterable { companion object { - fun newInstance(realm: Realm) : SessionSet { + fun newInstance(realm: Realm): SessionSet { val sessionSet = SessionSet() return realm.copyToRealm(sessionSet) } - fun fieldNameForQueryType(queryCondition: Class < out QueryCondition >): String? { - Session.fieldNameForQueryType(queryCondition)?.let { - return "sessions.$it" + fun fieldNameForQueryType(queryCondition: Class ): String? { + Session.fieldNameForQueryType(queryCondition)?.let { fieldName -> + return "sessions.$fieldName" } return null } diff --git a/app/src/main/java/net/pokeranalytics/android/model/utils/DataUtils.kt b/app/src/main/java/net/pokeranalytics/android/model/utils/DataUtils.kt index e342d746..48e77f9b 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/utils/DataUtils.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/utils/DataUtils.kt @@ -16,7 +16,7 @@ class DataUtils { fun sessionCount(realm: Realm, startDate: Date, endDate: Date?, net: Double): Int { var sessionQuery = realm.where(Session::class.java) .equalTo("startDate", startDate) - .equalTo("result.net", net) + .equalTo("net", net) endDate?.let { sessionQuery = sessionQuery.equalTo("endDate", it) diff --git a/app/src/main/java/net/pokeranalytics/android/model/utils/SessionManager.kt b/app/src/main/java/net/pokeranalytics/android/model/utils/SessionManager.kt index 8a79bf94..d7d37c61 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/utils/SessionManager.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/utils/SessionManager.kt @@ -1,14 +1,17 @@ package net.pokeranalytics.android.model.utils +import android.content.Context import io.realm.Realm import io.realm.RealmQuery import io.realm.RealmResults +import net.pokeranalytics.android.calculus.ReportWhistleBlower import net.pokeranalytics.android.exceptions.ModelException import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.SessionSet import net.pokeranalytics.android.util.extensions.findById import net.pokeranalytics.android.util.extensions.writeAsync +import timber.log.Timber import kotlin.math.max class CorruptSessionSetException(message: String) : Exception(message) @@ -26,16 +29,35 @@ object SessionManager { // private var netModifiedSessionIds: MutableSet = mutableSetOf() private var statsToComputeSessionIds: MutableSet = mutableSetOf() + var context: Context? = null + private set + + var reportWhistleBlower: ReportWhistleBlower? = null + init { val realm = Realm.getDefaultInstance() this.sessions = realm.where(Session::class.java).findAllAsync() - this.sessions?.addChangeListener { results, changeSet -> + this.sessions?.addChangeListener { results -> + + if (this.statsToComputeSessionIds.isNotEmpty()) { + results.realm.writeAsync { asyncRealm -> + for (sessionId in statsToComputeSessionIds) { + Timber.d("Session Manager > compute stats") + asyncRealm.findById(sessionId)?.let { session -> + session.computeStats() + session.sessionSet?.computeStats() + } + } + this.statsToComputeSessionIds.clear() + } + } if (this.dateModifiedSessionIds.isNotEmpty()) { results.realm.writeAsync { asyncRealm -> for (sessionId in dateModifiedSessionIds) { + Timber.d("Session Manager > manage dates") asyncRealm.findById(sessionId)?.let { session -> if (session.endDate != null) { this.updateTimeline(session) @@ -48,6 +70,8 @@ object SessionManager { } } + this.reportWhistleBlower?.requestReportLaunch() + // if (this.netModifiedSessionIds.isNotEmpty()) { // results.realm.writeAsync { asyncRealm -> // for (sessionId in netModifiedSessionIds) { @@ -57,22 +81,14 @@ object SessionManager { // } // } - if (this.statsToComputeSessionIds.isNotEmpty()) { - results.realm.writeAsync { asyncRealm -> - for (sessionId in statsToComputeSessionIds) { - asyncRealm.findById(sessionId)?.computeStats() - } - this.statsToComputeSessionIds.clear() - } - } - } realm.close() } - fun create() { - // empty, juste called to make sure the singleton is initialized + fun configure(context: Context) { + this.context = context + this.reportWhistleBlower = ReportWhistleBlower(context) } fun sessionDateChanged(session: Session) { @@ -90,6 +106,8 @@ object SessionManager { */ fun updateTimeline(session: Session) { + Timber.d("updateTimeline...") + if (!session.realm.isInTransaction) { throw PAIllegalStateException("realm should be in transaction at this point") } @@ -132,6 +150,7 @@ object SessionManager { * Does that by deleting then recreating */ private fun cleanupSessionSets(session: Session, sessionSets: RealmResults) { + Timber.d("cleanupSessionSets...") // get all endedSessions from sets val allImpactedSessions = mutableSetOf() @@ -152,11 +171,11 @@ object SessionManager { } - /** * Update the global timeline using the impacted [sessionSets] and the updated [session] */ private fun updateTimeFrames(sessionSets: RealmResults, session: Session) { + Timber.d("updateTimeFrames...") when (sessionSets.size) { 0 -> this.createOrUpdateSessionSet(session) @@ -169,6 +188,7 @@ object SessionManager { * Creates or update the session set for the [session] */ private fun createOrUpdateSessionSet(session: Session) { + Timber.d("createOrUpdateSessionSet...") val set = session.sessionSet if (set != null) { @@ -184,6 +204,8 @@ object SessionManager { * Create a set and affect it to the [session] */ private fun createSessionSet(session: Session) { + Timber.d("createSessionSet...") + val set: SessionSet = SessionSet.newInstance(session.realm) set.startDate = session.startDate!! set.endDate = session.endDate!! @@ -198,6 +220,8 @@ object SessionManager { */ private fun mergeSessionGroups(session: Session, sessionSets: RealmResults) { + Timber.d("mergeSessionGroups") + var startDate = session.startDate!! var endDate = session.endDate!! @@ -251,6 +275,8 @@ object SessionManager { */ fun removeFromTimeline(session: Session) { + Timber.d("removeFromTimeline") + if (!session.realm.isInTransaction) { throw PAIllegalStateException("realm should be in transaction at this point") } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt index 690dc909..5439bd1d 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt @@ -15,6 +15,7 @@ import net.pokeranalytics.android.model.filter.Query import net.pokeranalytics.android.model.filter.QueryCondition import net.pokeranalytics.android.model.realm.Currency import net.pokeranalytics.android.model.realm.Session +import net.pokeranalytics.android.model.utils.SessionManager import net.pokeranalytics.android.ui.activity.components.BaseActivity import net.pokeranalytics.android.ui.adapter.HomePagerAdapter import net.pokeranalytics.android.util.Preferences @@ -48,7 +49,7 @@ class HomeActivity : BaseActivity(), NewPerformanceListener { private val mOnNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item -> if (binding.viewPager.currentItem == Tab.REPORTS.identifier) { - this.paApplication.reportWhistleBlower?.clearNotifications() + SessionManager.reportWhistleBlower?.clearNotifications() } when (item.itemId) { @@ -100,13 +101,13 @@ class HomeActivity : BaseActivity(), NewPerformanceListener { initUI() checkFirstLaunch() - this.paApplication.reportWhistleBlower?.addListener(this) + SessionManager.reportWhistleBlower?.addListener(this) } override fun onDestroy() { super.onDestroy() - this.paApplication.reportWhistleBlower?.removeListener(this) + SessionManager.reportWhistleBlower?.removeListener(this) } private fun observeRealmObjects() { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ImportFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ImportFragment.kt index 7b862799..f8755b2b 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ImportFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ImportFragment.kt @@ -13,6 +13,7 @@ import kotlinx.coroutines.async import kotlinx.coroutines.launch import net.pokeranalytics.android.R import net.pokeranalytics.android.databinding.FragmentImportBinding +import net.pokeranalytics.android.model.utils.SessionManager import net.pokeranalytics.android.ui.fragment.components.RealmFragment import net.pokeranalytics.android.util.csv.CSVImporter import net.pokeranalytics.android.util.csv.ImportDelegate @@ -91,7 +92,7 @@ class ImportFragment : RealmFragment(), ImportDelegate { private fun startImport() { - this.parentActivity?.paApplication?.reportWhistleBlower?.pause() + SessionManager.reportWhistleBlower?.pause() this.importer = CSVImporter(uri, requireContext()) this.importer.delegate = this @@ -142,7 +143,7 @@ class ImportFragment : RealmFragment(), ImportDelegate { } private fun end() { - this.parentActivity?.paApplication?.reportWhistleBlower?.resume() + SessionManager.reportWhistleBlower?.resume() activity?.finish() } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt index 02ed5483..ebe27953 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt @@ -26,6 +26,7 @@ import net.pokeranalytics.android.model.combined import net.pokeranalytics.android.model.interfaces.Deletable import net.pokeranalytics.android.model.realm.Performance import net.pokeranalytics.android.model.realm.ReportSetup +import net.pokeranalytics.android.model.utils.SessionManager import net.pokeranalytics.android.ui.activity.ReportCreationActivity import net.pokeranalytics.android.ui.activity.components.ReportActivity import net.pokeranalytics.android.ui.activity.components.RequestCode @@ -186,13 +187,13 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc ReportCreationActivity.newInstanceForResult(this, requireContext()) } - this.paApplication?.reportWhistleBlower?.addListener(this) + SessionManager.reportWhistleBlower?.addListener(this) } override fun onDestroy() { super.onDestroy() - this.paApplication?.reportWhistleBlower?.removeListener(this) + SessionManager.reportWhistleBlower?.removeListener(this) } // Rows @@ -265,7 +266,7 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc override fun boolForRow(row: RowRepresentable): Boolean { val reportRow = row as PerformanceRow return Preferences.showInAppBadges(requireContext()) - && (this.paApplication?.reportWhistleBlower?.has(reportRow.performance.id) ?: false) + && (SessionManager.reportWhistleBlower?.has(reportRow.performance.id) ?: false) } override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { @@ -321,7 +322,7 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc val report = Calculator.computeStats(realm, options = options) - Timber.d("launchComputation: ${System.currentTimeMillis() - startDate.time}ms") +// Timber.d("launchComputation: ${System.currentTimeMillis() - startDate.time}ms") launch(Dispatchers.Main) { if (!isDetached) { @@ -334,7 +335,7 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc } override fun newBestPerformanceHandler() { - Timber.d("newBestPerformanceHandler called") +// Timber.d("newBestPerformanceHandler called") activity?.runOnUiThread { this.dataListAdapter.notifyDataSetChanged() diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt index a83c36c7..2fef2b88 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt @@ -29,7 +29,6 @@ import net.pokeranalytics.android.ui.modules.filter.FilterActivityRequestCode import net.pokeranalytics.android.ui.modules.filter.FilterableType import net.pokeranalytics.android.ui.modules.filter.FiltersActivity import net.pokeranalytics.android.ui.modules.settings.TransactionFilterActivity -import timber.log.Timber import java.util.* class StatisticsFragment : FilterableFragment(), RealmAsyncListener { @@ -162,7 +161,7 @@ class StatisticsFragment : FilterableFragment(), RealmAsyncListener { val async = CoroutineScope(context = Dispatchers.IO).async { val s = Date() - Timber.d(">>> start...") +// Timber.d(">>> start...") val realm = Realm.getDefaultInstance() realm.refresh() @@ -174,7 +173,7 @@ class StatisticsFragment : FilterableFragment(), RealmAsyncListener { val e = Date() val duration = (e.time - s.time) / 1000.0 - Timber.d(">>> ended in $duration seconds") +// Timber.d(">>> ended in $duration seconds") } async.await() @@ -241,7 +240,7 @@ class StatisticsFragment : FilterableFragment(), RealmAsyncListener { val tSessionGroup = ComputableGroup(Query(QueryCondition.IsTournament).merge(query), tStats) - Timber.d(">>>>> Start computations...") +// Timber.d(">>>>> Start computations...") val options = Calculator.Options() val computedStats = mutableListOf() diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/Top10Fragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/Top10Fragment.kt index 8fdda037..c8985729 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/Top10Fragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/Top10Fragment.kt @@ -114,7 +114,7 @@ class Top10Fragment : RealmFragment(), RowRepresentableDataSource, RowRepresenta this.positiveSessions = getRealm().where() .isNotNull("startDate") .isNotNull("endDate") - .greaterThan("result.net", 0.0) + .greaterThan("net", 0.0) .findAll() updateTop10() diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/RealmFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/RealmFragment.kt index a61491e3..046fa836 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/RealmFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/RealmFragment.kt @@ -9,7 +9,6 @@ import io.realm.RealmModel import io.realm.RealmResults import kotlinx.coroutines.Dispatchers import net.pokeranalytics.android.exceptions.PAIllegalStateException -import timber.log.Timber import kotlin.coroutines.CoroutineContext interface RealmAsyncListener { @@ -70,7 +69,7 @@ open class RealmFragment : BaseFragment() { this.changeListener = listener val results = this.realm.where(clazz).findAllAsync() results.addChangeListener { t, _ -> - Timber.d("Realm changes: ${realmResults?.size}, $this") +// Timber.d("Realm changes: ${realmResults?.size}, $this") this.changeListener?.asyncListenedEntityChange(t.realm) } this.observedRealmResults.add(results) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ComposableTableReportFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ComposableTableReportFragment.kt index 5daf23ba..a50fa5f3 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ComposableTableReportFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ComposableTableReportFragment.kt @@ -30,7 +30,6 @@ import net.pokeranalytics.android.ui.view.rows.CustomizableRowRepresentable import net.pokeranalytics.android.ui.view.rows.StatRow import net.pokeranalytics.android.util.NULL_TEXT import net.pokeranalytics.android.util.TextFormat -import timber.log.Timber import java.util.* open class ComposableTableReportFragment : RealmFragment(), StaticRowRepresentableDataSource, CoroutineScope, @@ -208,7 +207,7 @@ open class ComposableTableReportFragment : RealmFragment(), StaticRowRepresentab var report: Report? = null val test = CoroutineScope(context = Dispatchers.IO).async { val s = Date() - Timber.d(">>> start...") +// Timber.d(">>> start...") val realm = Realm.getDefaultInstance() realm.refresh() @@ -221,7 +220,7 @@ open class ComposableTableReportFragment : RealmFragment(), StaticRowRepresentab val e = Date() val duration = (e.time - s.time) / 1000.0 - Timber.d(">>> ended in $duration seconds") +// Timber.d(">>> ended in $duration seconds") } test.await() diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ProgressReportFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ProgressReportFragment.kt index 1903b7c1..c57fab53 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ProgressReportFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/ProgressReportFragment.kt @@ -30,7 +30,6 @@ import net.pokeranalytics.android.ui.extensions.showWithAnimation import net.pokeranalytics.android.ui.fragment.GraphFragment import net.pokeranalytics.android.ui.graph.Graph import net.pokeranalytics.android.ui.helpers.AppReviewManager -import timber.log.Timber import java.util.* @@ -166,7 +165,7 @@ class ProgressReportFragment : AbstractReportFragment() { CoroutineScope(context = Dispatchers.IO).launch { val s = Date() - Timber.d(">>> start...") +// Timber.d(">>> start...") val realm = Realm.getDefaultInstance() @@ -178,7 +177,7 @@ class ProgressReportFragment : AbstractReportFragment() { val e = Date() val duration = (e.time - s.time) / 1000.0 - Timber.d(">>> ended in $duration seconds") +// Timber.d(">>> ended in $duration seconds") launch(Dispatchers.Main) { setGraphData(report, aggregationType) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/calendar/CalendarFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/calendar/CalendarFragment.kt index c46d50f9..c546b44a 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/calendar/CalendarFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/calendar/CalendarFragment.kt @@ -38,7 +38,6 @@ import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.rows.CustomizableRowRepresentable import net.pokeranalytics.android.util.extensions.* -import timber.log.Timber import java.util.* import kotlin.collections.set @@ -489,7 +488,7 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable sortedMonthlyReports = monthlyReports.toSortedMap(compareByDescending { it }) sortedYearlyReports = yearlyReports.toSortedMap(compareByDescending { it }) - Timber.d("Computation: ${System.currentTimeMillis() - startDate.time}ms") +// Timber.d("Computation: ${System.currentTimeMillis() - startDate.time}ms") } @@ -497,7 +496,7 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable * Display data */ private fun displayData() { - Timber.d("displayData") +// Timber.d("displayData") if (context == null) { return } // required because of launchAsyncStatComputation @@ -593,8 +592,8 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable } } - Timber.d("Display data: ${System.currentTimeMillis() - startDate.time}ms") - Timber.d("Rows: ${rows.size}") +// Timber.d("Display data: ${System.currentTimeMillis() - startDate.time}ms") +// Timber.d("Rows: ${rows.size}") this.calendarAdapter.notifyDataSetChanged() diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/feed/FeedSessionRowRepresentableAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/feed/FeedSessionRowRepresentableAdapter.kt index c5239c89..fc8ce2c7 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/feed/FeedSessionRowRepresentableAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/feed/FeedSessionRowRepresentableAdapter.kt @@ -20,9 +20,7 @@ import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.SessionRowView import net.pokeranalytics.android.util.extensions.getMonthAndYear -import timber.log.Timber import java.util.* -import kotlin.collections.HashMap /** @@ -182,7 +180,7 @@ class FeedSessionRowRepresentableAdapter( allSessions.clear() allSessions.addAll(this.pendingSessions) allSessions.addAll(this.startedSessions) - Timber.d("Update session list, total count = ${allSessions.size}") +// Timber.d("Update session list, total count = ${allSessions.size}") val headersPositions = HashMap() @@ -210,7 +208,7 @@ class FeedSessionRowRepresentableAdapter( } sortedHeaders = headersPositions.toSortedMap() - Timber.d("Create viewTypesPositions in: ${System.currentTimeMillis() - start}ms") +// Timber.d("Create viewTypesPositions in: ${System.currentTimeMillis() - start}ms") } /** diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/filter/FilterDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/filter/FilterDetailsFragment.kt index 358795d8..f83957b4 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/filter/FilterDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/filter/FilterDetailsFragment.kt @@ -234,9 +234,9 @@ open class FilterDetailsFragment : RealmFragment(), RowRepresentableDelegate { //TODO: Save currentFilter details data Timber.d("Save data for queryWith: ${currentFilter?.id}") - this.model.selectedRows.forEach { - Timber.d("Selected rows: $it") - } +// this.model.selectedRows.forEach { +// Timber.d("Selected rows: $it") +// } this.activityModel.selectedCategoryRow?.let { category -> diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/session/SessionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/session/SessionFragment.kt index ea55c043..6486365d 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/session/SessionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/session/SessionFragment.kt @@ -443,7 +443,7 @@ class SessionFragment : RealmFragment(), RowRepresentableDelegate, StaticRowRepr currentSession.scheduleStopNotification(requireContext(), delay) val formattedDuration = (it / 3600 / 1000).formattedHourlyDuration() - Timber.d("Setting stop notification in: $formattedDuration") +// Timber.d("Setting stop notification in: $formattedDuration") val message = requireContext().getString(R.string.stop_notification_in_, formattedDuration) Toast.makeText(requireContext(), message, Toast.LENGTH_LONG).show() } diff --git a/app/src/main/java/net/pokeranalytics/android/util/BackupOperator.kt b/app/src/main/java/net/pokeranalytics/android/util/BackupOperator.kt index 37e76d47..6584ffe7 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/BackupOperator.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/BackupOperator.kt @@ -40,7 +40,7 @@ class BackupOperator(var context: Context) { fun backupIfNecessary() { - Timber.d(">>> backupIfNecessary") +// Timber.d(">>> backupIfNecessary") Preferences.getBackupEmail(context)?.let { email -> this.backupSessionsIfNecessary(email) diff --git a/app/src/main/java/net/pokeranalytics/android/util/csv/PACSVDescriptor.kt b/app/src/main/java/net/pokeranalytics/android/util/csv/PACSVDescriptor.kt index 65a1e263..d25b9467 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/csv/PACSVDescriptor.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/csv/PACSVDescriptor.kt @@ -261,7 +261,7 @@ abstract class PACSVDescriptor(source: DataSource, } val net = session.net - if (startDate != null && net != null) { // valid session + if (startDate != null) { // valid session // session already in realm, we'd love not put it in Realm before doing the check val count = DataUtils.sessionCount(realm, startDate!!, endDate, net) if (this.noSessionImport || count == 0) {