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 {
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<QueryCondition>): Query{
this._conditions.addAll(queryConditions)
return this
}
fun add(queryConditions: List<QueryCondition>) {
this._conditions.addAll(queryConditions)
fun remove(queryCondition: QueryCondition) {
this._conditions.remove(queryCondition)
}
val defaultName: String
@ -59,28 +62,32 @@ class Query {
inline fun <reified T : Filterable> queryWith(query: RealmQuery<T>): RealmQuery<T> {
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())
}

@ -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

Loading…
Cancel
Save