|
|
|
@ -10,7 +10,6 @@ import net.pokeranalytics.android.model.filter.filter |
|
|
|
import net.pokeranalytics.android.model.filter.name |
|
|
|
import net.pokeranalytics.android.model.filter.name |
|
|
|
import net.pokeranalytics.android.model.realm.ComputableResult |
|
|
|
import net.pokeranalytics.android.model.realm.ComputableResult |
|
|
|
import net.pokeranalytics.android.model.realm.SessionSet |
|
|
|
import net.pokeranalytics.android.model.realm.SessionSet |
|
|
|
import net.pokeranalytics.android.model.upToNow |
|
|
|
|
|
|
|
import net.pokeranalytics.android.util.extensions.startOfDay |
|
|
|
import net.pokeranalytics.android.util.extensions.startOfDay |
|
|
|
import timber.log.Timber |
|
|
|
import timber.log.Timber |
|
|
|
import java.util.* |
|
|
|
import java.util.* |
|
|
|
@ -121,22 +120,51 @@ class Calculator { |
|
|
|
return when (aggregationType) { |
|
|
|
return when (aggregationType) { |
|
|
|
AggregationType.SESSION, AggregationType.DURATION -> this.computeGroups(realm, listOf(group), options) |
|
|
|
AggregationType.SESSION, AggregationType.DURATION -> this.computeGroups(realm, listOf(group), options) |
|
|
|
AggregationType.MONTH, AggregationType.YEAR -> { |
|
|
|
AggregationType.MONTH, AggregationType.YEAR -> { |
|
|
|
val criteria: List<Criteria> = aggregationType.criterias |
|
|
|
val queryLists = aggregationType.queryLists |
|
|
|
this.computeStatsWithComparators(realm, criteria, group.conditions, options) |
|
|
|
this.computeStatsWithComparators(realm, queryLists, group.conditions, options) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun computeStatsWithCriterias( |
|
|
|
|
|
|
|
realm: Realm, |
|
|
|
|
|
|
|
criterias: List<Criteria>, |
|
|
|
|
|
|
|
conditions: List<QueryCondition> = listOf(), |
|
|
|
|
|
|
|
options: Options = Options() |
|
|
|
|
|
|
|
): Report { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val computableGroups: MutableList<ComputableGroup> = mutableListOf() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
criterias.combined().forEach { comparatorConditions -> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val allConditions = mutableListOf<QueryCondition>() |
|
|
|
|
|
|
|
allConditions.addAll(conditions) |
|
|
|
|
|
|
|
allConditions.addAll(comparatorConditions) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val group = ComputableGroup(allConditions.name(), allConditions) |
|
|
|
|
|
|
|
computableGroups.add(group) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (computableGroups.size == 0) { |
|
|
|
|
|
|
|
val group = ComputableGroup(conditions.name(), conditions) |
|
|
|
|
|
|
|
computableGroups.add(group) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return this.computeGroups(realm, computableGroups, options) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
fun computeStatsWithComparators( |
|
|
|
fun computeStatsWithComparators( |
|
|
|
realm: Realm, |
|
|
|
realm: Realm, |
|
|
|
criteria: List<Criteria> = listOf(), |
|
|
|
compConditions: List<List<QueryCondition>> = listOf(), |
|
|
|
conditions: List<QueryCondition> = listOf(), |
|
|
|
conditions: List<QueryCondition> = listOf(), |
|
|
|
options: Options = Options() |
|
|
|
options: Options = Options() |
|
|
|
): Report { |
|
|
|
): Report { |
|
|
|
|
|
|
|
|
|
|
|
val computableGroups: MutableList<ComputableGroup> = mutableListOf() |
|
|
|
val computableGroups: MutableList<ComputableGroup> = mutableListOf() |
|
|
|
|
|
|
|
|
|
|
|
criteria.combined().upToNow().forEach { comparatorConditions -> |
|
|
|
compConditions.forEach { comparatorConditions -> |
|
|
|
|
|
|
|
|
|
|
|
val allConditions = mutableListOf<QueryCondition>() |
|
|
|
val allConditions = mutableListOf<QueryCondition>() |
|
|
|
allConditions.addAll(conditions) |
|
|
|
allConditions.addAll(conditions) |
|
|
|
|