From 1d3760dc2ad54168e75c1a4a20e3f80ccad26214 Mon Sep 17 00:00:00 2001 From: Laurent Date: Thu, 23 May 2019 17:18:38 +0200 Subject: [PATCH] Refactoring + cleanup --- .../android/calculus/Calculator.kt | 71 ++++++++++++------- .../ui/fragment/CalendarDetailsFragment.kt | 2 +- .../android/ui/fragment/CalendarFragment.kt | 5 +- .../android/ui/fragment/ReportsFragment.kt | 2 +- .../fragment/report/AbstractReportFragment.kt | 4 +- 5 files changed, 52 insertions(+), 32 deletions(-) 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 31094164..9b2aac56 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt @@ -27,11 +27,11 @@ import kotlin.math.min class Calculator { /** - * The options used for calculations or display + * The options used for calculations and display */ class Options( var display: Display = Display.TABLE, - evolutionValues: EvolutionValues = EvolutionValues.NONE, + progressValues: ProgressValues = ProgressValues.NONE, var stats: List = listOf(), var criterias: List = listOf(), query: Query = Query(), @@ -41,14 +41,20 @@ class Calculator { var reportSetupId: String? = null ) { - var evolutionValues: EvolutionValues = evolutionValues + /** + * Specifies whether progress values should be added and their kind + */ + var progressValues: ProgressValues = progressValues get() { - if (field == EvolutionValues.NONE && this.display == Display.PROGRESS) { - return EvolutionValues.STANDARD + if (field == ProgressValues.NONE && this.display == Display.PROGRESS) { + return ProgressValues.STANDARD } return field } + /** + * The query used to filter data + */ private var _query: Query = query init { @@ -56,14 +62,14 @@ class Calculator { throw IllegalStateException("Can't specify a query with conditions AND a filter") } - when (this.aggregationType) { - AggregationType.MONTH -> this.criterias = listOf(Criteria.AllMonthsUpToNow) - AggregationType.YEAR -> this.criterias = listOf(Criteria.Years) - else -> {} + this.aggregationType?.let { + this.criterias = it.criterias } - } + /** + * The query used, either filter query or the provided query + */ val query: Query get() { this.filter?.let { @@ -73,7 +79,7 @@ class Calculator { } /** - * The way the statIds are going to be displayed + * The way the computed stats are going to be displayed */ enum class Display : RowRepresentable { TABLE, @@ -105,13 +111,12 @@ class Calculator { } } - } /** * The type of evolution numericValues */ - enum class EvolutionValues { + enum class ProgressValues { NONE, STANDARD, TIMED @@ -130,23 +135,37 @@ class Calculator { return false } + /** + * Whether the longest streaks should be computed + */ val computeLongestStreak: Boolean get() { return this.stats.contains(LONGEST_STREAKS) } + /** + * Whether the values should be sorted + */ val shouldSortValues: Boolean get() { - return this.evolutionValues != EvolutionValues.NONE || this.computeLongestStreak + return this.progressValues != ProgressValues.NONE || this.computeLongestStreak } + /** + * Whether the number of locations played should be computed + */ val computeLocationsPlayed: Boolean get() { return this.stats.contains(LOCATIONS_PLAYED) } + /** + * Whether the number of days played should be computed + */ val computeDaysPlayed: Boolean get() { return this.stats.contains(DAYS_PLAYED) } - + /** + * Whether progress values should be managed at the group level + */ val shouldManageMultiGroupProgressValues: Boolean get() { return if (this.aggregationType != null) { @@ -178,13 +197,15 @@ class Calculator { stats: List? = null ): Report { - val options = Options(display = Options.Display.PROGRESS, - evolutionValues = Options.EvolutionValues.STANDARD, + val options = Options( + display = Options.Display.PROGRESS, + progressValues = Options.ProgressValues.STANDARD, stats = listOf(stat), - aggregationType = aggregationType) + aggregationType = aggregationType + ) if (aggregationType == AggregationType.DURATION) { - options.evolutionValues = Options.EvolutionValues.TIMED + options.progressValues = Options.ProgressValues.TIMED } stats?.let { @@ -227,7 +248,7 @@ class Calculator { val report = Report(options) groups.forEach { group -> -// val s = Date() + // val s = Date() // Clean existing computables / sessionSets if group is reused group.cleanup() @@ -325,7 +346,7 @@ class Calculator { } val shouldIterateOverComputables = - (options.evolutionValues == Options.EvolutionValues.STANDARD || options.computeLongestStreak) + (options.progressValues == Options.ProgressValues.STANDARD || options.computeLongestStreak) // Computable Result if (shouldIterateOverComputables) { @@ -419,7 +440,7 @@ class Calculator { } val shouldIterateOverSets = computableGroup.conditions.isNotEmpty() || - options.evolutionValues != Options.EvolutionValues.NONE || + options.progressValues != Options.ProgressValues.NONE || options.computeDaysPlayed // Session Set @@ -450,8 +471,8 @@ class Calculator { tHourlyRateBB = tBBSum / tHourlyDuration daysSet.add(sessionSet.startDate.startOfDay()) - when (options.evolutionValues) { - Options.EvolutionValues.STANDARD -> { + when (options.progressValues) { + Options.ProgressValues.STANDARD -> { results.addEvolutionValue(tHourlyRate, stat = HOURLY_RATE, data = sessionSet) results.addEvolutionValue(tIndex.toDouble(), stat = NUMBER_OF_SETS, data = sessionSet) results.addEvolutionValue( @@ -472,7 +493,7 @@ class Calculator { } } - Options.EvolutionValues.TIMED -> { + Options.ProgressValues.TIMED -> { results.addEvolutionValue(tRatedNetSum, tHourlyDuration, NET_RESULT, sessionSet) results.addEvolutionValue(tHourlyRate, tHourlyDuration, HOURLY_RATE, sessionSet) results.addEvolutionValue( diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt index 72b7bfc3..a58d034b 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarDetailsFragment.kt @@ -188,7 +188,7 @@ class CalendarDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable val requiredStats: List = listOf(Stat.LOCATIONS_PLAYED, Stat.LONGEST_STREAKS, Stat.DAYS_PLAYED, Stat.STANDARD_DEVIATION_HOURLY) val options = Calculator.Options( - evolutionValues = Calculator.Options.EvolutionValues.STANDARD, + progressValues = Calculator.Options.ProgressValues.STANDARD, stats = requiredStats, query = query ) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt index f10d9c01..238f7f5c 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CalendarFragment.kt @@ -21,7 +21,6 @@ import net.pokeranalytics.android.model.Criteria import net.pokeranalytics.android.model.combined import net.pokeranalytics.android.model.filter.QueryCondition import net.pokeranalytics.android.model.realm.ComputableResult -import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.ui.activity.CalendarDetailsActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate @@ -262,7 +261,7 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable monthlyQueries.forEach { query -> val options = Calculator.Options( - evolutionValues = Calculator.Options.EvolutionValues.STANDARD, + progressValues = Calculator.Options.ProgressValues.STANDARD, stats = requiredStats, query = query ) @@ -296,7 +295,7 @@ class CalendarFragment : RealmFragment(), CoroutineScope, StaticRowRepresentable yearConditions.forEach { query -> val options = Calculator.Options( - evolutionValues = Calculator.Options.EvolutionValues.STANDARD, + progressValues = Calculator.Options.ProgressValues.STANDARD, stats = requiredStats, query = query ) 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 00594ac2..9759ec4e 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 @@ -170,7 +170,7 @@ class ReportsFragment : DeletableItemFragment(), StaticRowRepresentableDataSourc val requiredStats: List = listOf(Stat.NET_RESULT) val options = Calculator.Options( display = Calculator.Options.Display.COMPARISON, - evolutionValues = Calculator.Options.EvolutionValues.STANDARD, + progressValues = Calculator.Options.ProgressValues.STANDARD, stats = requiredStats, criterias = criteriaList ) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/AbstractReportFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/AbstractReportFragment.kt index 6def0117..8cfaa841 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/AbstractReportFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/AbstractReportFragment.kt @@ -56,11 +56,11 @@ abstract class AbstractReportFragment : DataManagerFragment() { val nameEditText = view.findViewById(R.id.reportName) builder.setView(view) // Add action buttons - .setPositiveButton(R.string.save) { dialog, id -> + .setPositiveButton(R.string.save) { dialog, _ -> saveReport(nameEditText.text.toString()) dialog.dismiss() } - .setNegativeButton(R.string.cancel) { dialog, id -> + .setNegativeButton(R.string.cancel) { dialog, _ -> dialog.cancel() }