From cdaeff4684e26d3aee99178fcc7250ed2076a313 Mon Sep 17 00:00:00 2001 From: Laurent Date: Wed, 1 May 2019 15:29:19 +0200 Subject: [PATCH] Implementation improvements + start of changes notifications --- .../calculus/bankroll/BankrollCalculator.kt | 3 +- .../calculus/bankroll/BankrollReport.kt | 48 ++++++++++++++-- .../android/ui/activity/BankrollActivity.kt | 55 +++++++++++++++++++ 3 files changed, 100 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollCalculator.kt b/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollCalculator.kt index d045a4d9..0c9e126c 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollCalculator.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollCalculator.kt @@ -33,7 +33,8 @@ class BankrollCalculator { } bankroll.transactions?.let { transactions -> - transactionNet += transactions.sumByDouble { it.amount } * rate + val sum = transactions.sum("amount") + transactionNet += rate * sum.toDouble() } } diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt b/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt index d27da5c7..bfef7adf 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/bankroll/BankrollReport.kt @@ -12,6 +12,38 @@ import net.pokeranalytics.android.ui.graph.DataSetFactory import java.util.* import kotlin.collections.HashMap +//object BankrollReportManager { +// +// var mainReport: BankrollReport? = null +// var reports: MutableMap = mutableMapOf() +// +// fun udpateBankrolls(bankrolls: List) { +// this.invalidateMainReport() +// bankrolls.forEach { +// this.reports.remove(it.id) +// } +// } +// +// fun deleteBankrolls(bankrolls: List) { +// this.invalidateMainReport() +// bankrolls.forEach { +// this.reports.remove(it.id) +// } +// } +// +// private fun invalidateMainReport() { +// this.mainReport = null +// } +// +// private fun launchReports(bankrolls: List) { +// +// this.mainReport = BankrollCalculator.computeReport() +// +// +// } +// +//} + /** * This class holds the results from the BankrollCalculator computations * It has all the information required for the Bankroll various displays @@ -219,17 +251,23 @@ class BankrollReportSetup(val bankroll: Bankroll? = null, val from: Date? = null } /** - * A TransactionBucket holds a list of transactions and computes its amount sum + * A TransactionBucket holds a list of _transactions and computes its amount sum */ class TransactionBucket(useRate: Boolean = false) { /** - * A list of transactions + * A list of _transactions */ - var transactions: MutableList = mutableListOf() + private var _transactions: MutableList = mutableListOf() private set + + val transactions: List + get() { + return this._transactions + } + /** - * The sum of all transactions + * The sum of all _transactions */ var total: Double = 0.0 private set @@ -242,7 +280,7 @@ class TransactionBucket(useRate: Boolean = false) { fun addTransaction(transaction: Transaction) { - this.transactions.add(transaction) + this._transactions.add(transaction) var rate = 1.0 if (this.useRate) { rate = transaction.bankroll?.currency?.rate ?: 1.0 diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/BankrollActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/BankrollActivity.kt index e1b6ea05..5fb6250d 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/BankrollActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/BankrollActivity.kt @@ -4,11 +4,19 @@ import android.content.Context import android.content.Intent import android.os.Bundle import androidx.fragment.app.Fragment +import io.realm.RealmResults import net.pokeranalytics.android.R +import net.pokeranalytics.android.model.realm.Bankroll +import net.pokeranalytics.android.model.realm.ComputableResult +import net.pokeranalytics.android.model.realm.Transaction import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity class BankrollActivity : PokerAnalyticsActivity() { + private lateinit var computableResults: RealmResults + private lateinit var bankrolls: RealmResults + private lateinit var transactions: RealmResults + companion object { fun newInstance(context: Context) { val intent = Intent(context, BankrollActivity::class.java) @@ -28,6 +36,53 @@ class BankrollActivity : PokerAnalyticsActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_bankroll) + + this.computableResults = getRealm().where(ComputableResult::class.java).findAll() // ComputableResult are existing only if sessions are ended + this.computableResults.addChangeListener { t, changeSet -> + + val bankrolls = mutableSetOf() + val indexes = mutableSetOf() + indexes.addAll(changeSet.changes.toList()) + indexes.addAll(changeSet.insertions.toList()) + indexes.addAll(changeSet.deletions.toList()) + indexes.forEach { index -> + t[index]?.session?.bankroll?.let { br -> + bankrolls.add(br) + } + } + this.computeBankrollReports(bankrolls) + } + this.bankrolls = getRealm().where(Bankroll::class.java).findAll() // ComputableResult are existing only if sessions are ended + this.bankrolls.addChangeListener { _, changeSet -> + + + + + + } + this.transactions = getRealm().where(Transaction::class.java).findAll() // ComputableResult are existing only if sessions are ended + this.transactions.addChangeListener { t, changeSet -> + + val bankrolls = mutableSetOf() + val indexes = mutableSetOf() + indexes.addAll(changeSet.changes.toList()) + indexes.addAll(changeSet.insertions.toList()) + indexes.addAll(changeSet.deletions.toList()) + indexes.forEach { index -> + t[index]?.bankroll?.let { br -> + bankrolls.add(br) + } + } + this.computeBankrollReports(bankrolls) + } + + } + + fun computeBankrollReports(bankrolls: Collection) { + + + + } } \ No newline at end of file