|
|
|
|
@ -18,68 +18,20 @@ fun List<QueryCondition>.name() : String { |
|
|
|
|
* To handle that, the enum has a public [valueMap] variable |
|
|
|
|
* A new type should also set the expected numericValues required in the [filterValuesExpectedKeys] |
|
|
|
|
*/ |
|
|
|
|
enum class QueryCondition(var operator: Operator? = null) { |
|
|
|
|
LIVE, |
|
|
|
|
CASH, |
|
|
|
|
ONLINE, |
|
|
|
|
TOURNAMENT, |
|
|
|
|
BANKROLL, |
|
|
|
|
GAME, |
|
|
|
|
TOURNAMENT_NAME, |
|
|
|
|
ANY_TOURNAMENT_FEATURES, |
|
|
|
|
ALL_TOURNAMENT_FEATURES, |
|
|
|
|
LOCATION, |
|
|
|
|
LIMIT, |
|
|
|
|
TABLE_SIZE, |
|
|
|
|
TOURNAMENT_TYPE, |
|
|
|
|
BLIND, |
|
|
|
|
LAST_GAMES, |
|
|
|
|
LAST_SESSIONS, |
|
|
|
|
MORE_NUMBER_OF_TABLE(Operator.MORE), |
|
|
|
|
LESS_NUMBER_OF_TABLE(Operator.LESS), |
|
|
|
|
BETWEEN_NUMBER_OF_TABLE(Operator.BETWEEN), |
|
|
|
|
MORE_THAN_NET_RESULT(Operator.MORE), |
|
|
|
|
LESS_THAN_NET_RESULT(Operator.LESS), |
|
|
|
|
MORE_THAN_BUY_IN(Operator.MORE), |
|
|
|
|
LESS_THAN_BUY_IN(Operator.LESS), |
|
|
|
|
MORE_THAN_CASH_OUT(Operator.MORE), |
|
|
|
|
LESS_THAN_CASH_OUT(Operator.LESS), |
|
|
|
|
MORE_THAN_TIPS(Operator.MORE), |
|
|
|
|
LESS_THAN_TIPS(Operator.LESS), |
|
|
|
|
MORE_THAN_NUMBER_OF_PLAYER(Operator.MORE), |
|
|
|
|
LESS_THAN_NUMBER_OF_PLAYER(Operator.LESS), |
|
|
|
|
BETWEEN_NUMBER_OF_PLAYER(Operator.BETWEEN), |
|
|
|
|
MORE_THAN_TOURNAMENT_FEE(Operator.MORE), |
|
|
|
|
LESS_THAN_TOURNAMENT_FEE(Operator.LESS), |
|
|
|
|
BETWEEN_TOURNAMENT_FEE(Operator.BETWEEN), |
|
|
|
|
MIN_RE_BUY(Operator.MORE), |
|
|
|
|
MAX_RE_BUY(Operator.LESS), |
|
|
|
|
|
|
|
|
|
// Dates |
|
|
|
|
STARTED_FROM_DATE, |
|
|
|
|
STARTED_TO_DATE, |
|
|
|
|
ENDED_FROM_DATE, |
|
|
|
|
ENDED_TO_DATE, |
|
|
|
|
DAY_OF_WEEK, |
|
|
|
|
MONTH, |
|
|
|
|
YEAR, |
|
|
|
|
WEEK_DAY, |
|
|
|
|
WEEK_END, |
|
|
|
|
TODAY, |
|
|
|
|
YESTERDAY, |
|
|
|
|
TODAY_AND_YESTERDAY, |
|
|
|
|
THIS_WEEK, |
|
|
|
|
THIS_MONTH, |
|
|
|
|
THIS_YEAR, |
|
|
|
|
PAST_DAYS, |
|
|
|
|
MORE_THAN_DURATION(Operator.MORE), |
|
|
|
|
LESS_THAN_DURATION(Operator.LESS), |
|
|
|
|
STARTED_FROM_TIME, |
|
|
|
|
ENDED_TO_TIME, |
|
|
|
|
sealed class QueryCondition(var operator: Operator? = null) { |
|
|
|
|
|
|
|
|
|
COMMENT, |
|
|
|
|
abstract class QueryDataCondition : QueryCondition() |
|
|
|
|
|
|
|
|
|
; |
|
|
|
|
companion object { |
|
|
|
|
fun valueOf(name:String) : QueryCondition { |
|
|
|
|
val kClass = Class.forName("${QueryCondition::class.qualifiedName}$$name").kotlin |
|
|
|
|
val instance = kClass.objectInstance ?: kClass.java.newInstance() |
|
|
|
|
return instance as QueryCondition |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
val name: String = this::class.simpleName ?: throw PokerAnalyticsException.FilterElementUnknownName |
|
|
|
|
|
|
|
|
|
enum class Operator { |
|
|
|
|
BETWEEN, |
|
|
|
|
@ -87,6 +39,67 @@ enum class QueryCondition(var operator: Operator? = null) { |
|
|
|
|
LESS; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
object LIVE : QueryCondition() |
|
|
|
|
object CASH : QueryCondition() |
|
|
|
|
object ONLINE : QueryCondition() |
|
|
|
|
object TOURNAMENT: QueryCondition() |
|
|
|
|
class BANKROLL: QueryDataCondition() |
|
|
|
|
class GAME: QueryCondition() |
|
|
|
|
class TOURNAMENT_NAME: QueryCondition() |
|
|
|
|
class ANY_TOURNAMENT_FEATURES: QueryCondition() |
|
|
|
|
class ALL_TOURNAMENT_FEATURES: QueryCondition() |
|
|
|
|
class LOCATION: QueryCondition() |
|
|
|
|
class LIMIT: QueryCondition() |
|
|
|
|
class TABLE_SIZE: QueryCondition() |
|
|
|
|
class TOURNAMENT_TYPE: QueryCondition() |
|
|
|
|
class BLIND: QueryCondition() |
|
|
|
|
class LAST_GAMES: QueryCondition() |
|
|
|
|
class LAST_SESSIONS: QueryCondition() |
|
|
|
|
class MORE_NUMBER_OF_TABLE: QueryCondition(Operator.MORE) |
|
|
|
|
class LESS_NUMBER_OF_TABLE: QueryCondition(Operator.LESS) |
|
|
|
|
class BETWEEN_NUMBER_OF_TABLE: QueryCondition(Operator.BETWEEN) |
|
|
|
|
class MORE_THAN_NET_RESULT: QueryCondition(Operator.MORE) |
|
|
|
|
class LESS_THAN_NET_RESULT: QueryCondition(Operator.LESS) |
|
|
|
|
class MORE_THAN_BUY_IN: QueryCondition(Operator.MORE) |
|
|
|
|
class LESS_THAN_BUY_IN: QueryCondition(Operator.LESS) |
|
|
|
|
class MORE_THAN_CASH_OUT: QueryCondition(Operator.MORE) |
|
|
|
|
class LESS_THAN_CASH_OUT: QueryCondition(Operator.LESS) |
|
|
|
|
class MORE_THAN_TIPS: QueryCondition(Operator.MORE) |
|
|
|
|
class LESS_THAN_TIPS: QueryCondition(Operator.LESS) |
|
|
|
|
class MORE_THAN_NUMBER_OF_PLAYER: QueryCondition(Operator.MORE) |
|
|
|
|
class LESS_THAN_NUMBER_OF_PLAYER: QueryCondition(Operator.LESS) |
|
|
|
|
class BETWEEN_NUMBER_OF_PLAYER: QueryCondition(Operator.BETWEEN) |
|
|
|
|
class MORE_THAN_TOURNAMENT_FEE: QueryCondition(Operator.MORE) |
|
|
|
|
class LESS_THAN_TOURNAMENT_FEE: QueryCondition(Operator.LESS) |
|
|
|
|
class BETWEEN_TOURNAMENT_FEE: QueryCondition(Operator.BETWEEN) |
|
|
|
|
class MIN_RE_BUY: QueryCondition(Operator.MORE) |
|
|
|
|
class MAX_RE_BUY: QueryCondition(Operator.LESS) |
|
|
|
|
|
|
|
|
|
// Dates |
|
|
|
|
class STARTED_FROM_DATE: QueryCondition() |
|
|
|
|
class STARTED_TO_DATE: QueryCondition() |
|
|
|
|
class ENDED_FROM_DATE: QueryCondition() |
|
|
|
|
class ENDED_TO_DATE: QueryCondition() |
|
|
|
|
class DAY_OF_WEEK: QueryCondition() |
|
|
|
|
class MONTH: QueryCondition() |
|
|
|
|
class YEAR: QueryCondition() |
|
|
|
|
object WEEK_DAY: QueryCondition() |
|
|
|
|
object WEEK_END: QueryCondition() |
|
|
|
|
object TODAY: QueryCondition() |
|
|
|
|
object YESTERDAY: QueryCondition() |
|
|
|
|
object TODAY_AND_YESTERDAY: QueryCondition() |
|
|
|
|
object THIS_WEEK: QueryCondition() |
|
|
|
|
object THIS_MONTH: QueryCondition() |
|
|
|
|
object THIS_YEAR: QueryCondition() |
|
|
|
|
class PAST_DAYS: QueryCondition() |
|
|
|
|
class MORE_THAN_DURATION: QueryCondition(Operator.MORE) |
|
|
|
|
class LESS_THAN_DURATION: QueryCondition(Operator.LESS) |
|
|
|
|
class STARTED_FROM_TIME: QueryCondition() |
|
|
|
|
class ENDED_TO_TIME: QueryCondition() |
|
|
|
|
|
|
|
|
|
class COMMENT: QueryCondition() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var valueMap : Map<String, Any?>? = null |
|
|
|
|
get() { |
|
|
|
|
this.filterValuesExpectedKeys?.let { valueMapExceptedKeys -> |
|
|
|
|
@ -112,13 +125,13 @@ enum class QueryCondition(var operator: Operator? = null) { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return when (this) { |
|
|
|
|
BANKROLL, GAME, LOCATION, ANY_TOURNAMENT_FEATURES, ALL_TOURNAMENT_FEATURES, TOURNAMENT_NAME -> arrayOf("ids") |
|
|
|
|
LIMIT, TOURNAMENT_TYPE, TABLE_SIZE -> arrayOf("values") |
|
|
|
|
BLIND -> arrayOf("blinds", "hasDefaultCurrency") |
|
|
|
|
STARTED_FROM_DATE, STARTED_TO_DATE, ENDED_FROM_DATE, ENDED_TO_DATE -> arrayOf("date") |
|
|
|
|
DAY_OF_WEEK -> arrayOf("dayOfWeek") |
|
|
|
|
MONTH -> arrayOf("month") |
|
|
|
|
YEAR -> arrayOf("year") |
|
|
|
|
is BANKROLL, is GAME, is LOCATION, is ANY_TOURNAMENT_FEATURES, is ALL_TOURNAMENT_FEATURES, is TOURNAMENT_NAME -> arrayOf("ids") |
|
|
|
|
is LIMIT, is TOURNAMENT_TYPE, is TABLE_SIZE -> arrayOf("values") |
|
|
|
|
is BLIND -> arrayOf("blinds", "hasDefaultCurrency") |
|
|
|
|
is STARTED_FROM_DATE, is STARTED_TO_DATE, is ENDED_FROM_DATE, is ENDED_TO_DATE -> arrayOf("date") |
|
|
|
|
is DAY_OF_WEEK -> arrayOf("dayOfWeek") |
|
|
|
|
is MONTH -> arrayOf("month") |
|
|
|
|
is YEAR -> arrayOf("year") |
|
|
|
|
else -> null |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
@ -150,18 +163,18 @@ enum class QueryCondition(var operator: Operator? = null) { |
|
|
|
|
LIVE, ONLINE -> realmQuery.equalTo(fieldName, this == LIVE) |
|
|
|
|
CASH -> realmQuery.equalTo(fieldName, Session.Type.CASH_GAME.ordinal) |
|
|
|
|
TOURNAMENT -> realmQuery.equalTo(fieldName, Session.Type.TOURNAMENT.ordinal) |
|
|
|
|
ALL_TOURNAMENT_FEATURES -> { |
|
|
|
|
is ALL_TOURNAMENT_FEATURES -> { |
|
|
|
|
val ids: Array<String> by valueMap |
|
|
|
|
ids.forEach { |
|
|
|
|
realmQuery.equalTo(fieldName, it) |
|
|
|
|
} |
|
|
|
|
realmQuery |
|
|
|
|
} |
|
|
|
|
ANY_TOURNAMENT_FEATURES -> { |
|
|
|
|
is ANY_TOURNAMENT_FEATURES -> { |
|
|
|
|
val ids: Array<String> by valueMap |
|
|
|
|
realmQuery.`in`(fieldName, ids) |
|
|
|
|
} |
|
|
|
|
BLIND -> { |
|
|
|
|
is BLIND -> { |
|
|
|
|
val blinds: Array<String> by valueMap |
|
|
|
|
val hasDefaultCurrency: Array<Boolean> by valueMap |
|
|
|
|
//realmQuery.`in`(fieldName, blinds) |
|
|
|
|
@ -182,39 +195,39 @@ enum class QueryCondition(var operator: Operator? = null) { |
|
|
|
|
} |
|
|
|
|
realmQuery |
|
|
|
|
} |
|
|
|
|
BANKROLL, GAME, LOCATION, TOURNAMENT_NAME -> { |
|
|
|
|
is BANKROLL, is GAME, is LOCATION, is TOURNAMENT_NAME -> { |
|
|
|
|
val ids: Array<String> by valueMap |
|
|
|
|
realmQuery.`in`(fieldName, ids) |
|
|
|
|
} |
|
|
|
|
LIMIT, TOURNAMENT_TYPE, TABLE_SIZE -> { |
|
|
|
|
is LIMIT, is TOURNAMENT_TYPE, is TABLE_SIZE -> { |
|
|
|
|
val values: Array<Int?>? by valueMap |
|
|
|
|
realmQuery.`in`(fieldName, values) |
|
|
|
|
} |
|
|
|
|
STARTED_FROM_DATE -> { |
|
|
|
|
is STARTED_FROM_DATE -> { |
|
|
|
|
val date: Date by valueMap |
|
|
|
|
realmQuery.greaterThanOrEqualTo(fieldName, date) |
|
|
|
|
} |
|
|
|
|
STARTED_TO_DATE -> { |
|
|
|
|
is STARTED_TO_DATE -> { |
|
|
|
|
val date: Date by valueMap |
|
|
|
|
realmQuery.lessThanOrEqualTo(fieldName, date) |
|
|
|
|
} |
|
|
|
|
ENDED_FROM_DATE -> { |
|
|
|
|
is ENDED_FROM_DATE -> { |
|
|
|
|
val date: Date by valueMap |
|
|
|
|
realmQuery.greaterThanOrEqualTo(fieldName, date) |
|
|
|
|
} |
|
|
|
|
ENDED_TO_DATE -> { |
|
|
|
|
is ENDED_TO_DATE -> { |
|
|
|
|
val date: Date by valueMap |
|
|
|
|
realmQuery.lessThanOrEqualTo(fieldName, date) |
|
|
|
|
} |
|
|
|
|
DAY_OF_WEEK -> { |
|
|
|
|
is DAY_OF_WEEK -> { |
|
|
|
|
val dayOfWeek: Int by valueMap |
|
|
|
|
realmQuery.equalTo(fieldName, dayOfWeek) |
|
|
|
|
} |
|
|
|
|
MONTH -> { |
|
|
|
|
is MONTH -> { |
|
|
|
|
val month: Int by valueMap |
|
|
|
|
realmQuery.equalTo(fieldName, month) |
|
|
|
|
} |
|
|
|
|
YEAR -> { |
|
|
|
|
is YEAR -> { |
|
|
|
|
val year: Int by valueMap |
|
|
|
|
realmQuery.equalTo(fieldName, year) |
|
|
|
|
} |
|
|
|
|
@ -280,27 +293,28 @@ enum class QueryCondition(var operator: Operator? = null) { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
when (this) { |
|
|
|
|
ALL_TOURNAMENT_FEATURES, ANY_TOURNAMENT_FEATURES, BANKROLL, GAME, LOCATION, TOURNAMENT_NAME -> { |
|
|
|
|
is BANKROLL -> valueMap = mapOf("ids" to filterCondition.ids) |
|
|
|
|
is ALL_TOURNAMENT_FEATURES, is ANY_TOURNAMENT_FEATURES, is GAME, is LOCATION, is TOURNAMENT_NAME -> { |
|
|
|
|
valueMap = mapOf("ids" to filterCondition.ids) |
|
|
|
|
} |
|
|
|
|
LIMIT, TOURNAMENT_TYPE, TABLE_SIZE -> { |
|
|
|
|
is LIMIT, is TOURNAMENT_TYPE, is TABLE_SIZE -> { |
|
|
|
|
valueMap = mapOf("values" to filterCondition.values) |
|
|
|
|
} |
|
|
|
|
BLIND -> { |
|
|
|
|
is BLIND -> { |
|
|
|
|
valueMap = mapOf( |
|
|
|
|
"blinds" to filterCondition.blinds, |
|
|
|
|
"hasDefaultCurrency" to filterCondition.hasDefaultCurrency) |
|
|
|
|
} |
|
|
|
|
STARTED_FROM_DATE, STARTED_TO_DATE, ENDED_FROM_DATE, ENDED_TO_DATE -> { |
|
|
|
|
is STARTED_FROM_DATE, is STARTED_TO_DATE, is ENDED_FROM_DATE, is ENDED_TO_DATE -> { |
|
|
|
|
valueMap = mapOf("date" to filterCondition.date) |
|
|
|
|
} |
|
|
|
|
DAY_OF_WEEK -> { |
|
|
|
|
is DAY_OF_WEEK -> { |
|
|
|
|
valueMap = mapOf("dayOfWeek" to filterCondition.dayOfWeek) |
|
|
|
|
} |
|
|
|
|
MONTH -> { |
|
|
|
|
is MONTH -> { |
|
|
|
|
valueMap = mapOf("month" to filterCondition.month) |
|
|
|
|
} |
|
|
|
|
YEAR -> { |
|
|
|
|
is YEAR -> { |
|
|
|
|
valueMap = mapOf("year" to filterCondition.year) |
|
|
|
|
} |
|
|
|
|
else -> { |
|
|
|
|
|