Merge branch 'dev' of gitlab.com:stax-river/poker-analytics into dev

feature/top10
Laurent 7 years ago
commit 05a344a9bc
  1. 15
      app/src/main/java/net/pokeranalytics/android/model/comparison/Comparator.kt
  2. 27
      app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt

@ -29,12 +29,25 @@ enum class Comparator {
LIMIT_TYPE, LIMIT_TYPE,
TABLE_SIZE, TABLE_SIZE,
TOURNAMENT_TYPE, TOURNAMENT_TYPE,
TOURNAMENT_ENTRY_FEE,
; ;
val queryConditions: List<QueryCondition> val queryConditions: List<QueryCondition>
get() { get() {
return when (this) { return when (this) {
MONTH_OF_YEAR -> List(12) { index -> QueryCondition.MONTH().apply { setMonth(index) } } TOURNAMENT_ENTRY_FEE -> {
val fees = arrayListOf<QueryCondition.BETWEEN_TOURNAMENT_FEE>()
val realm = Realm.getDefaultInstance()
val fieldName = Session.fieldNameForQueryType(QueryCondition.BETWEEN_TOURNAMENT_FEE())
realm.where<Session>().distinct(fieldName).findAll().sort(fieldName, Sort.ASCENDING).map {
it.tournamentEntryFee?.let { fee ->
fees.add(QueryCondition.BETWEEN_TOURNAMENT_FEE().apply { between(fee, fee) })
}
}
realm.close()
fees
}
MONTH_OF_YEAR -> List(12) { index -> QueryCondition.MONTH().apply { setMonth(index) } }
DAY_OF_WEEK -> List(7) { index -> QueryCondition.DAY_OF_WEEK().apply { setDay(index) } } DAY_OF_WEEK -> List(7) { index -> QueryCondition.DAY_OF_WEEK().apply { setDay(index) } }
YEAR -> { YEAR -> {
val years = arrayListOf<QueryCondition.YEAR>() val years = arrayListOf<QueryCondition.YEAR>()

@ -29,6 +29,9 @@ sealed class QueryCondition(var operator: Operator? = null) {
this.valueMap = mapOf("ids" to id) this.valueMap = mapOf("ids" to id)
} }
class MoreQueryCondition : QueryCondition(Operator.MORE)
class LessQueryCondition : QueryCondition(Operator.LESS)
companion object { companion object {
fun valueOf(name:String) : QueryCondition { fun valueOf(name:String) : QueryCondition {
val kClass = Class.forName("${QueryCondition::class.qualifiedName}$$name").kotlin val kClass = Class.forName("${QueryCondition::class.qualifiedName}$$name").kotlin
@ -42,7 +45,10 @@ sealed class QueryCondition(var operator: Operator? = null) {
enum class Operator { enum class Operator {
BETWEEN, BETWEEN,
MORE, MORE,
LESS; LESS,
BETWEEN_RIGHT_EXCLUSIVE,
BETWEEN_LEFT_EXCLUSIVE,
;
} }
object LIVE : QueryCondition() object LIVE : QueryCondition()
@ -98,7 +104,14 @@ sealed class QueryCondition(var operator: Operator? = null) {
class BETWEEN_NUMBER_OF_PLAYER: QueryCondition(Operator.BETWEEN) class BETWEEN_NUMBER_OF_PLAYER: QueryCondition(Operator.BETWEEN)
class MORE_THAN_TOURNAMENT_FEE: QueryCondition(Operator.MORE) class MORE_THAN_TOURNAMENT_FEE: QueryCondition(Operator.MORE)
class LESS_THAN_TOURNAMENT_FEE: QueryCondition(Operator.LESS) class LESS_THAN_TOURNAMENT_FEE: QueryCondition(Operator.LESS)
class BETWEEN_TOURNAMENT_FEE: QueryCondition(Operator.BETWEEN) class BETWEEN_TOURNAMENT_FEE: QueryCondition(Operator.BETWEEN_RIGHT_EXCLUSIVE) {
fun between(leftValue:Double, rightValue:Double) {
this.valueMap = mapOf(
"leftValue" to leftValue,
"rightValue" to rightValue
)
}
}
class MIN_RE_BUY: QueryCondition(Operator.MORE) class MIN_RE_BUY: QueryCondition(Operator.MORE)
class MAX_RE_BUY: QueryCondition(Operator.LESS) class MAX_RE_BUY: QueryCondition(Operator.LESS)
@ -198,6 +211,16 @@ sealed class QueryCondition(var operator: Operator? = null) {
val rightValue: Double by valueMap val rightValue: Double by valueMap
return realmQuery.between(fieldName, leftValue, rightValue) return realmQuery.between(fieldName, leftValue, rightValue)
} }
Operator.BETWEEN_LEFT_EXCLUSIVE -> {
val leftValue: Double by valueMap
val rightValue: Double by valueMap
return realmQuery.greaterThan(fieldName, leftValue).and().lessThanOrEqualTo(fieldName, rightValue)
}
Operator.BETWEEN_RIGHT_EXCLUSIVE-> {
val leftValue: Double by valueMap
val rightValue: Double by valueMap
return realmQuery.greaterThanOrEqualTo(fieldName, leftValue).and().lessThan(fieldName, rightValue)
}
} }
return when (this) { return when (this) {

Loading…
Cancel
Save