Block stuff

threading
Laurent 3 years ago
parent 47b30f1788
commit 7c64408749
  1. 3
      app/src/main/java/net/pokeranalytics/android/calculus/ReportWhistleBlower.kt
  2. 3
      app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReportManager.kt
  3. 5
      app/src/main/java/net/pokeranalytics/android/model/utils/SessionSetManager.kt
  4. 4
      app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt
  5. 19
      app/src/main/java/net/pokeranalytics/android/ui/fragment/ReportsFragment.kt
  6. 19
      app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt
  7. 16
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/RealmFragment.kt
  8. 3
      app/src/main/java/net/pokeranalytics/android/ui/modules/bankroll/BankrollFragment.kt
  9. 6
      app/src/main/java/net/pokeranalytics/android/ui/modules/calendar/CalendarFragment.kt
  10. 8
      app/src/main/java/net/pokeranalytics/android/ui/modules/feed/FeedFragment.kt
  11. 2
      app/src/main/java/net/pokeranalytics/android/ui/modules/session/SessionFragment.kt
  12. 2
      app/src/main/java/net/pokeranalytics/android/util/Global.kt

@ -33,7 +33,7 @@ class ReportWhistleBlower(var context: Context) {
private val listeners: MutableList<NewPerformanceListener> = mutableListOf() private val listeners: MutableList<NewPerformanceListener> = mutableListOf()
private var paused: Boolean = false private var paused: Boolean = !Global.LAUNCH_ASYNC_LISTENERS
private var timer: CountDownTimer? = null private var timer: CountDownTimer? = null
@ -68,7 +68,6 @@ class ReportWhistleBlower(var context: Context) {
} }
fun requestReportLaunch() { fun requestReportLaunch() {
// Timber.d(">>> Launch report")
if (paused) { if (paused) {
return return

@ -6,6 +6,7 @@ import kotlinx.coroutines.*
import net.pokeranalytics.android.model.realm.Bankroll import net.pokeranalytics.android.model.realm.Bankroll
import net.pokeranalytics.android.model.realm.ComputableResult import net.pokeranalytics.android.model.realm.ComputableResult
import net.pokeranalytics.android.model.realm.Transaction import net.pokeranalytics.android.model.realm.Transaction
import net.pokeranalytics.android.util.Global
import timber.log.Timber import timber.log.Timber
import java.util.* import java.util.*
import kotlin.coroutines.CoroutineContext import kotlin.coroutines.CoroutineContext
@ -25,7 +26,9 @@ object BankrollReportManager {
bankrolls = realm.where(Bankroll::class.java).findAll() bankrolls = realm.where(Bankroll::class.java).findAll()
transactions = realm.where(Transaction::class.java).findAll() transactions = realm.where(Transaction::class.java).findAll()
if (Global.LAUNCH_ASYNC_LISTENERS) {
initializeListeners() initializeListeners()
}
realm.close() realm.close()
} }

@ -6,6 +6,7 @@ import io.realm.RealmResults
import net.pokeranalytics.android.exceptions.ModelException import net.pokeranalytics.android.exceptions.ModelException
import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.model.realm.SessionSet import net.pokeranalytics.android.model.realm.SessionSet
import net.pokeranalytics.android.util.Global
import net.pokeranalytics.android.util.extensions.findById import net.pokeranalytics.android.util.extensions.findById
import timber.log.Timber import timber.log.Timber
@ -32,14 +33,14 @@ object SessionSetManager {
val realm = Realm.getDefaultInstance() val realm = Realm.getDefaultInstance()
this.sessions = realm.where(Session::class.java).findAllAsync() this.sessions = realm.where(Session::class.java).findAllAsync()
if (Global.LAUNCH_ASYNC_LISTENERS) {
this.sessions.addChangeListener { _, _ -> this.sessions.addChangeListener { _, _ ->
// if (Global.LAUNCH_ASYNC_LISTENERS) {
if (this.sessionIdsToProcess.isNotEmpty()) { if (this.sessionIdsToProcess.isNotEmpty()) {
realm.executeTransactionAsync { asyncRealm -> realm.executeTransactionAsync { asyncRealm ->
processSessions(asyncRealm) processSessions(asyncRealm)
} }
} }
// } }
} }
realm.close() realm.close()

@ -17,6 +17,7 @@ import net.pokeranalytics.android.model.realm.Currency
import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.activity.components.BaseActivity import net.pokeranalytics.android.ui.activity.components.BaseActivity
import net.pokeranalytics.android.ui.adapter.HomePagerAdapter import net.pokeranalytics.android.ui.adapter.HomePagerAdapter
import net.pokeranalytics.android.util.Global
import net.pokeranalytics.android.util.Preferences import net.pokeranalytics.android.util.Preferences
import net.pokeranalytics.android.util.billing.AppGuard import net.pokeranalytics.android.util.billing.AppGuard
import net.pokeranalytics.android.util.extensions.findAll import net.pokeranalytics.android.util.extensions.findAll
@ -114,6 +115,8 @@ class HomeActivity : BaseActivity(), NewPerformanceListener {
// observe currency changes // observe currency changes
this.currencies = realm.where(Currency::class.java).findAllAsync() this.currencies = realm.where(Currency::class.java).findAllAsync()
if (Global.LAUNCH_ASYNC_LISTENERS) {
this.currencies.addChangeListener { _, _ -> this.currencies.addChangeListener { _, _ ->
realm.executeTransactionAsync { asyncRealm -> realm.executeTransactionAsync { asyncRealm ->
asyncRealm.where(Currency::class.java).findAll().forEach { currency -> asyncRealm.where(Currency::class.java).findAll().forEach { currency ->
@ -122,6 +125,7 @@ class HomeActivity : BaseActivity(), NewPerformanceListener {
} }
} }
} }
}
/** /**
* Init UI * Init UI

@ -11,11 +11,13 @@ import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.Realm import io.realm.Realm
import io.realm.RealmResults import io.realm.RealmResults
import kotlinx.coroutines.* import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.calculus.Calculator import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.NewPerformanceListener import net.pokeranalytics.android.calculus.NewPerformanceListener
import net.pokeranalytics.android.calculus.Report
import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.calculus.calcul.ReportDisplay import net.pokeranalytics.android.calculus.calcul.ReportDisplay
import net.pokeranalytics.android.databinding.FragmentReportsBinding import net.pokeranalytics.android.databinding.FragmentReportsBinding
@ -36,10 +38,10 @@ import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.ui.view.rows.CustomizableRowRepresentable import net.pokeranalytics.android.ui.view.rows.CustomizableRowRepresentable
import net.pokeranalytics.android.ui.view.rows.StaticReport import net.pokeranalytics.android.ui.view.rows.StaticReport
import net.pokeranalytics.android.util.Global
import net.pokeranalytics.android.util.NULL_TEXT import net.pokeranalytics.android.util.NULL_TEXT
import net.pokeranalytics.android.util.Preferences import net.pokeranalytics.android.util.Preferences
import timber.log.Timber import timber.log.Timber
import java.util.*
data class ReportSection(val report: StaticReport, var performances: MutableList<PerformanceRow>) { data class ReportSection(val report: StaticReport, var performances: MutableList<PerformanceRow>) {
@ -148,17 +150,21 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc
* Init data * Init data
*/ */
private fun initData() { private fun initData() {
this.reportSetups = getRealm().where(ReportSetup::class.java).findAllAsync().sort("name")
this.reportSetups = getRealm().where(ReportSetup::class.java).sort("name").findAllAsync()
this.performances = getRealm().where(Performance::class.java).findAllAsync()
if (Global.LAUNCH_ASYNC_LISTENERS) {
this.reportSetups.addChangeListener { _, _ -> this.reportSetups.addChangeListener { _, _ ->
this.updateRows() this.updateRows()
} }
this.performances = getRealm().where(Performance::class.java).findAllAsync()
this.performances.addChangeListener { _, _ -> this.performances.addChangeListener { _, _ ->
this.updateRows() this.updateRows()
} }
} }
}
/** /**
* Init UI * Init UI
*/ */
@ -307,6 +313,7 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc
*/ */
private fun launchReportWithOptions(options: Calculator.Options, reportDisplay: ReportDisplay, reportName: String) { private fun launchReportWithOptions(options: Calculator.Options, reportDisplay: ReportDisplay, reportName: String) {
Timber.d("launchReportWithOptions")
showLoader() showLoader()
CoroutineScope(Dispatchers.Default).launch { CoroutineScope(Dispatchers.Default).launch {

@ -30,7 +30,9 @@ import net.pokeranalytics.android.ui.modules.filter.FilterActivityRequestCode
import net.pokeranalytics.android.ui.modules.filter.FilterableType import net.pokeranalytics.android.ui.modules.filter.FilterableType
import net.pokeranalytics.android.ui.modules.filter.FiltersActivity import net.pokeranalytics.android.ui.modules.filter.FiltersActivity
import net.pokeranalytics.android.ui.modules.settings.TransactionFilterActivity import net.pokeranalytics.android.ui.modules.settings.TransactionFilterActivity
import net.pokeranalytics.android.util.Global
import timber.log.Timber import timber.log.Timber
import java.util.*
class StatisticsFragment : FilterableFragment(), RealmAsyncListener { class StatisticsFragment : FilterableFragment(), RealmAsyncListener {
@ -73,11 +75,13 @@ class StatisticsFragment : FilterableFragment(), RealmAsyncListener {
this.currentFilterable = FilterableType.SESSION this.currentFilterable = FilterableType.SESSION
applyFilter() applyFilter()
if (Global.LAUNCH_ASYNC_LISTENERS) {
addRealmChangeListener(this, UserConfig::class.java) addRealmChangeListener(this, UserConfig::class.java)
addRealmChangeListener(this, ComputableResult::class.java) addRealmChangeListener(this, ComputableResult::class.java)
addRealmChangeListener(this, Transaction::class.java) addRealmChangeListener(this, Transaction::class.java)
addRealmChangeListener(this, SessionSet::class.java) addRealmChangeListener(this, SessionSet::class.java)
} }
}
private fun initUI() { private fun initUI() {
val fragmentTransaction = parentFragmentManager.beginTransaction() val fragmentTransaction = parentFragmentManager.beginTransaction()
@ -165,8 +169,8 @@ class StatisticsFragment : FilterableFragment(), RealmAsyncListener {
CoroutineScope(Dispatchers.Default).launch { CoroutineScope(Dispatchers.Default).launch {
val async = async { val async = async {
// val s = Date() val s = Date()
// Timber.d(">>> start...") Timber.d(">>> start...")
val realm = Realm.getDefaultInstance() val realm = Realm.getDefaultInstance()
realm.refresh() realm.refresh()
@ -176,9 +180,9 @@ class StatisticsFragment : FilterableFragment(), RealmAsyncListener {
realm.close() realm.close()
// val e = Date() val e = Date()
// val duration = (e.time - s.time) / 1000.0 val duration = (e.time - s.time) / 1000.0
// Timber.d(">>> ended in $duration seconds") Timber.d(">>> computations took $duration seconds")
} }
async.await() async.await()
@ -196,6 +200,9 @@ class StatisticsFragment : FilterableFragment(), RealmAsyncListener {
*/ */
private fun createSessionGroupsAndStartCompute(realm: Realm): Report { private fun createSessionGroupsAndStartCompute(realm: Realm): Report {
Timber.d(">>> Launch statistics computations")
val filter: Filter? = this.currentFilter(this.requireContext(), realm)?.let { val filter: Filter? = this.currentFilter(this.requireContext(), realm)?.let {
if (it.filterableType == currentFilterable) { it } else { null } if (it.filterableType == currentFilterable) { it } else { null }
} }
@ -244,8 +251,6 @@ class StatisticsFragment : FilterableFragment(), RealmAsyncListener {
val tSessionGroup = ComputableGroup(Query(QueryCondition.IsTournament).merge(query), tStats) val tSessionGroup = ComputableGroup(Query(QueryCondition.IsTournament).merge(query), tStats)
Timber.d(">>>>> Start computations...")
val options = Calculator.Options() val options = Calculator.Options()
val computedStats = mutableListOf<Stat>() val computedStats = mutableListOf<Stat>()
computedStats.addAll(allStats) computedStats.addAll(allStats)

@ -35,16 +35,6 @@ open class RealmFragment : BaseFragment() {
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
realm = Realm.getDefaultInstance() realm = Realm.getDefaultInstance()
// this.observedEntities.forEach {
// val realmResults = realm.where(it).findAllAsync()
// realmResults.addChangeListener { t, _ ->
// this.entitiesChanged(it, t)
// }
//
// this.observedRealmResults.add(realmResults)
// }
return super.onCreateView(inflater, container, savedInstanceState) return super.onCreateView(inflater, container, savedInstanceState)
} }
@ -63,11 +53,9 @@ open class RealmFragment : BaseFragment() {
this.changeListener = listener this.changeListener = listener
val results = this.realm.where(clazz).findAllAsync() val results = this.realm.where(clazz).findAllAsync()
results.addChangeListener { t, _ -> results.addChangeListener { res, _ ->
// Timber.d("Realm changes: ${realmResults?.size}, $this") // Timber.d("Realm changes: ${realmResults?.size}, $this")
if (Global.LAUNCH_ASYNC_LISTENERS) { this.changeListener?.asyncListenedEntityChange(res.realm, clazz)
this.changeListener?.asyncListenedEntityChange(t.realm, clazz)
}
} }
this.observedRealmResults.add(results) this.observedRealmResults.add(results)
} }

@ -33,6 +33,7 @@ import net.pokeranalytics.android.ui.view.rows.BankrollGraphRow
import net.pokeranalytics.android.ui.view.rows.BankrollMainRow import net.pokeranalytics.android.ui.view.rows.BankrollMainRow
import net.pokeranalytics.android.ui.view.rows.BankrollTotalRow import net.pokeranalytics.android.ui.view.rows.BankrollTotalRow
import net.pokeranalytics.android.ui.view.rows.CustomizableRowRepresentable import net.pokeranalytics.android.ui.view.rows.CustomizableRowRepresentable
import net.pokeranalytics.android.util.Global
import net.pokeranalytics.android.util.extensions.sorted import net.pokeranalytics.android.util.extensions.sorted
import timber.log.Timber import timber.log.Timber
import java.util.* import java.util.*
@ -118,9 +119,11 @@ class BankrollFragment : DeletableItemFragment(), StaticRowRepresentableDataSour
private fun initData() { private fun initData() {
this.bankrolls = getRealm().sorted() this.bankrolls = getRealm().sorted()
if (Global.LAUNCH_ASYNC_LISTENERS) {
this.bankrolls.addChangeListener { _, _ -> this.bankrolls.addChangeListener { _, _ ->
this.createRowRepresentables() this.createRowRepresentables()
} }
}
this.createRowRepresentables() this.createRowRepresentables()
} }

@ -35,7 +35,9 @@ import net.pokeranalytics.android.ui.view.CalendarTabs
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.ui.view.rows.CustomizableRowRepresentable import net.pokeranalytics.android.ui.view.rows.CustomizableRowRepresentable
import net.pokeranalytics.android.util.Global
import net.pokeranalytics.android.util.extensions.* import net.pokeranalytics.android.util.extensions.*
import timber.log.Timber
import java.util.* import java.util.*
import kotlin.collections.set import kotlin.collections.set
@ -100,11 +102,13 @@ class CalendarFragment : RealmFragment(), StaticRowRepresentableDataSource,
initData() initData()
initUI() initUI()
if (Global.LAUNCH_ASYNC_LISTENERS) {
addRealmChangeListener(this, UserConfig::class.java) addRealmChangeListener(this, UserConfig::class.java)
addRealmChangeListener(this, ComputableResult::class.java) addRealmChangeListener(this, ComputableResult::class.java)
addRealmChangeListener(this, Transaction::class.java) addRealmChangeListener(this, Transaction::class.java)
addRealmChangeListener(this, SessionSet::class.java) addRealmChangeListener(this, SessionSet::class.java)
} }
}
private var transactionFilterMenuItem: MenuItem? = null private var transactionFilterMenuItem: MenuItem? = null
@ -359,6 +363,8 @@ class CalendarFragment : RealmFragment(), StaticRowRepresentableDataSource,
private fun launchStatComputation(realm: Realm) { private fun launchStatComputation(realm: Realm) {
Timber.d(">>> Launch calendar computations")
val calendar = Calendar.getInstance() val calendar = Calendar.getInstance()
calendar.time = Date().startOfMonth() calendar.time = Date().startOfMonth()

@ -148,10 +148,6 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate, PurchaseLis
AppGuard.registerListener(this) AppGuard.registerListener(this)
addRealmChangeListener(this, Session::class.java)
addRealmChangeListener(this, Transaction::class.java)
addRealmChangeListener(this, HandHistory::class.java)
initUI() initUI()
initData() initData()
} }
@ -340,6 +336,10 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate, PurchaseLis
*/ */
private fun initData() { private fun initData() {
addRealmChangeListener(this, Session::class.java)
addRealmChangeListener(this, Transaction::class.java)
addRealmChangeListener(this, HandHistory::class.java)
this.currentFilterable = FilterableType.SESSION this.currentFilterable = FilterableType.SESSION
applyFilter() applyFilter()
} }

@ -279,7 +279,7 @@ class SessionFragment : RealmFragment(), RowRepresentableDelegate, StaticRowRepr
session.updateValue(value, row) session.updateValue(value, row)
} }
Timber.d("val = ${this.currentSession.customFieldEntries}") // Timber.d("val = ${this.currentSession.customFieldEntries}")
// try { // try {
// this.currentSession.updateValue(value, row) // this.currentSession.updateValue(value, row)

@ -8,6 +8,6 @@ const val UUID_SEPARATOR: String = ","
class Global { class Global {
companion object { companion object {
const val LAUNCH_ASYNC_LISTENERS = true const val LAUNCH_ASYNC_LISTENERS = false
} }
} }

Loading…
Cancel
Save