Fixes warning and ease the use of Query object

od
Laurent 6 years ago
parent 6b18c8c5d0
commit 4c91b27275
  1. 2
      app/src/main/java/net/pokeranalytics/android/calculus/optimalduration/OptimalDurationCalculator.kt
  2. 61
      app/src/main/java/net/pokeranalytics/android/model/filter/Query.kt
  3. 9
      app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt

@ -12,7 +12,7 @@ fun List<Query>.mapFirstCondition() : List<QueryCondition> {
class Query { class Query {
constructor(vararg elements: QueryCondition) { constructor(vararg elements: QueryCondition) {
if (elements.size > 0) { if (elements.isNotEmpty()) {
this.add(elements.asList()) this.add(elements.asList())
} }
} }
@ -23,22 +23,25 @@ class Query {
return this._conditions return this._conditions
} }
fun add(vararg elements: QueryCondition) { fun add(vararg elements: QueryCondition): Query {
if (elements.size > 0) { if (elements.isNotEmpty()) {
this.add(elements.asList()) this.add(elements.asList())
} }
return this
} }
fun add(queryCondition: QueryCondition) { fun add(queryCondition: QueryCondition): Query {
this._conditions.add(queryCondition) this._conditions.add(queryCondition)
return this
} }
fun remove(queryCondition: QueryCondition) { fun add(queryConditions: List<QueryCondition>): Query{
this._conditions.remove(queryCondition) this._conditions.addAll(queryConditions)
return this
} }
fun add(queryConditions: List<QueryCondition>) { fun remove(queryCondition: QueryCondition) {
this._conditions.addAll(queryConditions) this._conditions.remove(queryCondition)
} }
val defaultName: String val defaultName: String
@ -59,28 +62,32 @@ class Query {
inline fun <reified T : Filterable> queryWith(query: RealmQuery<T>): RealmQuery<T> { inline fun <reified T : Filterable> queryWith(query: RealmQuery<T>): RealmQuery<T> {
var realmQuery = query var realmQuery = query
val queryFromTime = this.conditions.filter { val queryFromTime = this.conditions.firstOrNull {
it is QueryCondition.StartedFromTime it is QueryCondition.StartedFromTime
}.firstOrNull() }
val queryToTime = this.conditions.filter { val queryToTime = this.conditions.firstOrNull {
it is QueryCondition.EndedToTime it is QueryCondition.EndedToTime
}.firstOrNull() }
this.conditions.forEach { this.conditions.forEach {
if (it is QueryCondition.StartedFromTime) { realmQuery = when (it) {
realmQuery = it.queryWith(realmQuery, queryToTime) is QueryCondition.StartedFromTime -> {
} else if (it is QueryCondition.EndedToTime) { it.queryWith(realmQuery, queryToTime)
realmQuery = it.queryWith(realmQuery, queryFromTime) }
} else { is QueryCondition.EndedToTime -> {
realmQuery = it.queryWith(realmQuery) it.queryWith(realmQuery, queryFromTime)
} }
else -> {
it.queryWith(realmQuery)
}
}
} }
// println("<<<<<< ${realmQuery.description}") // println("<<<<<< ${realmQuery.description}")
val queryLast = this.conditions.filter { val queryLast = this.conditions.firstOrNull {
it is QueryCondition.Last it is QueryCondition.Last
}.firstOrNull() }
queryLast?.let {qc -> queryLast?.let {qc ->
(qc as QueryCondition.Last).singleValue?.let { (qc as QueryCondition.Last).singleValue?.let {
return realmQuery.limit(it.toLong()) return realmQuery.limit(it.toLong())
} }

@ -306,6 +306,9 @@ sealed class QueryCondition : FilterElementRow {
abstract class TrueQueryCondition : QueryCondition() { abstract class TrueQueryCondition : QueryCondition() {
override var operator: Operator = Operator.TRUE override var operator: Operator = Operator.TRUE
} }
abstract class NotNullQueryCondition : QueryCondition() {
override var operator: Operator = Operator.NOTNULL
}
object IsLive : TrueQueryCondition() object IsLive : TrueQueryCondition()
@ -601,9 +604,9 @@ sealed class QueryCondition : FilterElementRow {
} }
} }
object DateNotNull : QueryCondition() { object DateNotNull : NotNullQueryCondition()
override var operator = Operator.NOTNULL object EndDateNotNull : NotNullQueryCondition()
} object BigBlindNotNull : NotNullQueryCondition()
class StartedFromTime() : TimeQuery() { class StartedFromTime() : TimeQuery() {
override var operator = Operator.MORE override var operator = Operator.MORE

Loading…
Cancel
Save