From ace7d7a6b6098bfb01cedb08ec4496f98d8e46a5 Mon Sep 17 00:00:00 2001 From: Laurent Date: Thu, 11 Apr 2019 14:43:37 +0200 Subject: [PATCH] Calculator now wraps object in a Report, Report -> ReportSetup + file renaming --- .../android/calculus/Calculator.kt | 10 +++--- .../{ComputableGroup.kt => Report.kt} | 24 ++++++++++++++ .../calculus/{Format.kt => TextFormat.kt} | 0 .../migrations/PokerAnalyticsMigration.kt | 1 + .../model/realm/{Report.kt => ReportSetup.kt} | 2 +- .../android/ui/fragment/StatsFragment.kt | 32 +++++++++---------- 6 files changed, 47 insertions(+), 22 deletions(-) rename app/src/main/java/net/pokeranalytics/android/calculus/{ComputableGroup.kt => Report.kt} (91%) rename app/src/main/java/net/pokeranalytics/android/calculus/{Format.kt => TextFormat.kt} (100%) rename app/src/main/java/net/pokeranalytics/android/model/realm/{Report.kt => ReportSetup.kt} (94%) 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 f3cb17b3..2617ae13 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt @@ -60,7 +60,7 @@ class Calculator { companion object { - fun computeStatsWithFilters(realm: Realm, filters: List, options: Options): List { + fun computeStatsWithFilters(realm: Realm, filters: List, options: Options): Report { var computableGroups: MutableList = mutableListOf() filters.forEach { filter -> @@ -75,9 +75,9 @@ class Calculator { /** * Computes all stats for list of Session sessionGroup */ - fun computeGroups(realm: Realm, groups: List, options: Options): List { + fun computeGroups(realm: Realm, groups: List, options: Options): Report { - val computedResults = mutableListOf() + val report = Report() groups.forEach { group -> val s = Date() @@ -96,7 +96,7 @@ class Calculator { } results.finalize(options) // later treatment, such as evolution numericValues sorting - computedResults.add(results) + report.addResults(results) val e = Date() val duration = (e.time - s.time) / 1000.0 @@ -104,7 +104,7 @@ class Calculator { } - return computedResults + return report } /** diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/ComputableGroup.kt b/app/src/main/java/net/pokeranalytics/android/calculus/Report.kt similarity index 91% rename from app/src/main/java/net/pokeranalytics/android/calculus/ComputableGroup.kt rename to app/src/main/java/net/pokeranalytics/android/calculus/Report.kt index b1fdf74f..9a22521c 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/ComputableGroup.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Report.kt @@ -10,6 +10,30 @@ import net.pokeranalytics.android.model.realm.ComputableResult import net.pokeranalytics.android.model.realm.Filter import net.pokeranalytics.android.model.realm.SessionSet +class Report() { + + private var _results: MutableList = mutableListOf() + + val results: List = this._results + +// private var groups: MutableList = mutableListOf() +// +// var options: Calculator.Options = options +// +// fun addGroup(group: ComputableGroup) { +// this.groups.add(group) +// } +// +// fun addGroups(groups: Collection) { +// this.groups.addAll(groups) +// } + + fun addResults(result: ComputedResults) { + this._results.add(result) + } + +} + /** * A sessionGroup of computable items identified by a name */ diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/Format.kt b/app/src/main/java/net/pokeranalytics/android/calculus/TextFormat.kt similarity index 100% rename from app/src/main/java/net/pokeranalytics/android/calculus/Format.kt rename to app/src/main/java/net/pokeranalytics/android/calculus/TextFormat.kt diff --git a/app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt b/app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt index 4588fd95..1513a8aa 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt @@ -36,6 +36,7 @@ class PokerAnalyticsMigration : RealmMigration { if (currentVersion == 1) { Timber.d("*** Running migration ${currentVersion + 1}") + schema.rename("Report", "ReportSetup") schema.rename("FilterElement", "FilterCondition") schema.get("Filter")?.let { it.renameField("filterElements", "filterConditions") diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Report.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/ReportSetup.kt similarity index 94% rename from app/src/main/java/net/pokeranalytics/android/model/realm/Report.kt rename to app/src/main/java/net/pokeranalytics/android/model/realm/ReportSetup.kt index abf711a9..2edad050 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Report.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/ReportSetup.kt @@ -11,7 +11,7 @@ enum class ReportDisplay { MAP } -open class Report : RealmObject() { +open class ReportSetup : RealmObject() { @PrimaryKey var id = UUID.randomUUID().toString() 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 000e43de..65cb1378 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 @@ -37,7 +37,7 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc private var stringTournament = "" private lateinit var statsAdapter: RowRepresentableAdapter - private var computedResults : List? = null + private var report : Report? = null companion object { @@ -137,31 +137,31 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc GlobalScope.launch(coroutineContext) { - var results = listOf() + var r = Report() val test = GlobalScope.async { val s = Date() Timber.d(">>> start...") val realm = Realm.getDefaultInstance() - results = createSessionGroupsAndStartCompute(realm) - computedResults = results + r = createSessionGroupsAndStartCompute(realm) + report = r realm.close() 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() if (!isDetached) { - showResults(results) + showResults(r) } } } - private fun createSessionGroupsAndStartCompute(realm: Realm) : List { + private fun createSessionGroupsAndStartCompute(realm: Realm) : Report { val allStats: List = listOf(Stat.NETRESULT, Stat.HOURLY_RATE, Stat.AVERAGE, Stat.NUMBER_OF_SETS, Stat.AVERAGE_DURATION, Stat.DURATION) val allSessionGroup = ComputableGroup(stringAll, listOf(), allStats) @@ -176,16 +176,16 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc } - private fun showResults(results: List) { - this.rowRepresentables = this.convertResultsIntoRepresentables(results) + private fun showResults(report: Report) { + this.rowRepresentables = this.convertReportIntoRepresentables(report) statsAdapter.notifyDataSetChanged() } - private fun convertResultsIntoRepresentables(results: List) : ArrayList { + private fun convertReportIntoRepresentables(report: Report) : ArrayList { val rows: ArrayList = ArrayList() - results.forEach { result -> + report.results.forEach { result -> rows.add(CustomizableRowRepresentable(title = result.group.name)) result.group.stats?.forEach { stat -> rows.add(StatRepresentable(stat, result.computedStat(stat), result.group.name)) @@ -202,7 +202,7 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc if (row is StatRepresentable) { // filter groups - val groupResults = this.computedResults?.filter { + val groupResults = this.report?.results?.filter { it.group.name == row.groupName } @@ -217,7 +217,7 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc GlobalScope.launch(coroutineContext) { - var results = listOf() + var report = Report() val test = GlobalScope.async { val s = Date() Timber.d(">>> start...") @@ -225,18 +225,18 @@ class StatsFragment : SessionObserverFragment(), StaticRowRepresentableDataSourc val realm = Realm.getDefaultInstance() val options = Calculator.Options() options.evolutionValues = Calculator.Options.EvolutionValues.STANDARD - results = Calculator.computeGroups(realm, listOf(computableGroup), options) + report = Calculator.computeGroups(realm, listOf(computableGroup), options) realm.close() 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() if (!isDetached) { - results.firstOrNull()?.defaultStatEntries(stat)?.let { entries -> + report.results.firstOrNull()?.defaultStatEntries(stat)?.let { entries -> GraphActivity.newInstance(requireContext(), stat, entries) } }