diff --git a/app/src/main/java/net/pokeranalytics/android/calculus/optimalduration/OptimalDurationCalculator.kt b/app/src/main/java/net/pokeranalytics/android/calculus/optimalduration/OptimalDurationCalculator.kt new file mode 100644 index 00000000..4a5f611a --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/calculus/optimalduration/OptimalDurationCalculator.kt @@ -0,0 +1,2 @@ +package net.pokeranalytics.android.calculus.optimalduration + diff --git a/app/src/main/java/net/pokeranalytics/android/model/filter/Query.kt b/app/src/main/java/net/pokeranalytics/android/model/filter/Query.kt index 57569c43..d56f03a4 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/filter/Query.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/filter/Query.kt @@ -12,7 +12,7 @@ fun List.mapFirstCondition() : List { class Query { constructor(vararg elements: QueryCondition) { - if (elements.size > 0) { + if (elements.isNotEmpty()) { this.add(elements.asList()) } } @@ -23,22 +23,25 @@ class Query { return this._conditions } - fun add(vararg elements: QueryCondition) { - if (elements.size > 0) { + fun add(vararg elements: QueryCondition): Query { + if (elements.isNotEmpty()) { this.add(elements.asList()) } + return this } - fun add(queryCondition: QueryCondition) { + fun add(queryCondition: QueryCondition): Query { this._conditions.add(queryCondition) + return this } - fun remove(queryCondition: QueryCondition) { - this._conditions.remove(queryCondition) + fun add(queryConditions: List): Query{ + this._conditions.addAll(queryConditions) + return this } - fun add(queryConditions: List) { - this._conditions.addAll(queryConditions) + fun remove(queryCondition: QueryCondition) { + this._conditions.remove(queryCondition) } val defaultName: String @@ -59,28 +62,32 @@ class Query { inline fun queryWith(query: RealmQuery): RealmQuery { var realmQuery = query - val queryFromTime = this.conditions.filter { - it is QueryCondition.StartedFromTime - }.firstOrNull() - val queryToTime = this.conditions.filter { - it is QueryCondition.EndedToTime - }.firstOrNull() - - this.conditions.forEach { - if (it is QueryCondition.StartedFromTime) { - realmQuery = it.queryWith(realmQuery, queryToTime) - } else if (it is QueryCondition.EndedToTime) { - realmQuery = it.queryWith(realmQuery, queryFromTime) - } else { - realmQuery = it.queryWith(realmQuery) - } + val queryFromTime = this.conditions.firstOrNull { + it is QueryCondition.StartedFromTime + } + val queryToTime = this.conditions.firstOrNull { + it is QueryCondition.EndedToTime + } + + this.conditions.forEach { + realmQuery = when (it) { + is QueryCondition.StartedFromTime -> { + it.queryWith(realmQuery, queryToTime) + } + is QueryCondition.EndedToTime -> { + it.queryWith(realmQuery, queryFromTime) + } + else -> { + it.queryWith(realmQuery) + } + } } // println("<<<<<< ${realmQuery.description}") - val queryLast = this.conditions.filter { - it is QueryCondition.Last - }.firstOrNull() - queryLast?.let {qc -> + val queryLast = this.conditions.firstOrNull { + it is QueryCondition.Last + } + queryLast?.let {qc -> (qc as QueryCondition.Last).singleValue?.let { return realmQuery.limit(it.toLong()) } 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 ac94450e..1877363f 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 @@ -306,6 +306,9 @@ sealed class QueryCondition : FilterElementRow { abstract class TrueQueryCondition : QueryCondition() { override var operator: Operator = Operator.TRUE } + abstract class NotNullQueryCondition : QueryCondition() { + override var operator: Operator = Operator.NOTNULL + } object IsLive : TrueQueryCondition() @@ -601,9 +604,9 @@ sealed class QueryCondition : FilterElementRow { } } - object DateNotNull : QueryCondition() { - override var operator = Operator.NOTNULL - } + object DateNotNull : NotNullQueryCondition() + object EndDateNotNull : NotNullQueryCondition() + object BigBlindNotNull : NotNullQueryCondition() class StartedFromTime() : TimeQuery() { override var operator = Operator.MORE