diff --git a/app/src/main/java/net/pokeranalytics/android/model/comparison/Comparator.kt b/app/src/main/java/net/pokeranalytics/android/model/comparison/Comparator.kt index 90e4f6f0..d75299a4 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/comparison/Comparator.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/comparison/Comparator.kt @@ -2,21 +2,38 @@ package net.pokeranalytics.android.model.comparison import io.realm.Realm import io.realm.RealmQuery +import io.realm.Sort import io.realm.kotlin.where import net.pokeranalytics.android.exceptions.PokerAnalyticsException import net.pokeranalytics.android.model.filter.Filterable import net.pokeranalytics.android.model.filter.QueryCondition +import net.pokeranalytics.android.model.realm.Session enum class Comparator { DAY_OF_WEEK, + MONTH_OF_YEAR, MONTH, + YEAR, BLIND, ; val queryConditions: List get() { return when (this) { + MONTH_OF_YEAR -> List(12) { index-> QueryCondition.MONTH().apply { setMonth(index+1) } } DAY_OF_WEEK -> listOf() + YEAR -> { + val years = arrayListOf() + val realm = Realm.getDefaultInstance() + val distinctYears = realm.where().distinct("year").findAll().sort("year", Sort.DESCENDING) + distinctYears.forEach { session -> + session.year?.let { year -> + years.add(QueryCondition.YEAR().apply { setYear(year) }) + } + } + realm.close() + years + } else -> throw PokerAnalyticsException.QueryTypeUnhandled } } 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 d7ba8bc0..e7573c23 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 @@ -81,8 +81,16 @@ sealed class QueryCondition(var operator: Operator? = null) { class ENDED_FROM_DATE: QueryCondition() class ENDED_TO_DATE: QueryCondition() class DAY_OF_WEEK: QueryCondition() - class MONTH: QueryCondition() - class YEAR: QueryCondition() + class MONTH: QueryCondition() { + fun setMonth(month:Int) { + this.valueMap = mapOf("month" to month) + } + } + class YEAR: QueryCondition() { + fun setYear(year:Int) { + this.valueMap = mapOf("year" to year) + } + } object WEEK_DAY: QueryCondition() object WEEK_END: QueryCondition() object TODAY: QueryCondition() @@ -114,7 +122,7 @@ sealed class QueryCondition(var operator: Operator? = null) { } return field } - private set + protected set private val filterValuesExpectedKeys : Array? get() {