From da3fe957c527ef4d2e0c31c32d969e80a796a431 Mon Sep 17 00:00:00 2001 From: Laurent Date: Fri, 12 Apr 2019 17:39:27 +0200 Subject: [PATCH] Added method to compute a Report with Comparators and conditions --- .../android/calculus/Calculator.kt | 22 ++++++++++++++++++- .../android/model/filter/QueryCondition.kt | 3 +++ 2 files changed, 24 insertions(+), 1 deletion(-) 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 af908c6a..fb435fd5 100644 --- a/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt +++ b/app/src/main/java/net/pokeranalytics/android/calculus/Calculator.kt @@ -2,6 +2,10 @@ package net.pokeranalytics.android.calculus import io.realm.Realm import net.pokeranalytics.android.calculus.Stat.* +import net.pokeranalytics.android.model.comparison.Comparator +import net.pokeranalytics.android.model.comparison.combined +import net.pokeranalytics.android.model.filter.QueryCondition +import net.pokeranalytics.android.model.filter.name import net.pokeranalytics.android.model.realm.ComputableResult import net.pokeranalytics.android.model.realm.Filter import net.pokeranalytics.android.model.realm.SessionSet @@ -60,9 +64,25 @@ class Calculator { companion object { + fun computeStatsWithComparators(realm: Realm, comparators: List = listOf(), conditions: List = listOf(), options: Options): Report { + + val computableGroups: MutableList = mutableListOf() + comparators.combined().forEach { comparatorConditions -> + + val allConditions = mutableListOf() + allConditions.addAll(conditions) + allConditions.addAll(comparatorConditions) + + val group = ComputableGroup(allConditions.name(), conditions) + computableGroups.add(group) + + } + return Calculator.computeGroups(realm, computableGroups, options) + } + fun computeStatsWithFilters(realm: Realm, filters: List, options: Options): Report { - var computableGroups: MutableList = mutableListOf() + val computableGroups: MutableList = mutableListOf() filters.forEach { filter -> val group = ComputableGroup(filter.name, filter.filterConditions.map { it.queryCondition }) diff --git a/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt b/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt index b9f24f47..c07db415 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt @@ -8,6 +8,9 @@ import net.pokeranalytics.android.util.extensions.endOfDay import net.pokeranalytics.android.util.extensions.startOfDay import java.util.* +fun List.name() : String { + return this.map { it.name }.joinToString(" / ") +} /** * Enum describing the way a query should be handled