|
|
|
|
@ -6,7 +6,7 @@ import net.pokeranalytics.android.exceptions.FilterValueMapException |
|
|
|
|
import net.pokeranalytics.android.model.filter.interfaces.Filterable |
|
|
|
|
import net.pokeranalytics.android.model.realm.Session |
|
|
|
|
|
|
|
|
|
enum class SessionFilterable(private var fieldName:String? = null): Filterable { |
|
|
|
|
enum class SessionFilterable(private var fieldName:String? = null, private var subType:SubType? = null): Filterable { |
|
|
|
|
LIVE, |
|
|
|
|
CASH, |
|
|
|
|
ONLINE, |
|
|
|
|
@ -19,13 +19,33 @@ enum class SessionFilterable(private var fieldName:String? = null): Filterable { |
|
|
|
|
LOCATION("location.id"), |
|
|
|
|
LIMIT("limit"), |
|
|
|
|
TABLE_SIZE("tableSize"), |
|
|
|
|
NUMBER_OF_TABLE("numberOfTable"), |
|
|
|
|
TOURNAMENT_TYPE("tournamentType"), |
|
|
|
|
BLINDS, |
|
|
|
|
LESS_THAN_NET_RESULT, |
|
|
|
|
MORE_THAN_NET_RESULT, |
|
|
|
|
MORE_NUMBER_OF_TABLE(Field.NUMBER_OF_TABLE.fieldName, SubType.MORE), |
|
|
|
|
LESS_NUMBER_OF_TABLE(Field.NUMBER_OF_TABLE.fieldName, SubType.LESS), |
|
|
|
|
BETWEEN_NUMBER_OF_TABLE(Field.NUMBER_OF_TABLE.fieldName, SubType.BETWEEN), |
|
|
|
|
MORE_THAN_NET_RESULT(Field.NET_RESULT.fieldName, SubType.MORE), |
|
|
|
|
LESS_THAN_NET_RESULT(Field.NET_RESULT.fieldName, SubType.LESS), |
|
|
|
|
MORE_THAN_BUY_IN(Field.BUY_IN.fieldName, SubType.MORE), |
|
|
|
|
LESS_THAN_BUY_IN(Field.BUY_IN.fieldName, SubType.LESS), |
|
|
|
|
MORE_THAN_CASH_OUT(Field.CASH_OUT.fieldName, SubType.MORE), |
|
|
|
|
LESS_THAN_CASH_OUT(Field.CASH_OUT.fieldName, SubType.LESS), |
|
|
|
|
MORE_THAN_TIPS(Field.TIPS.fieldName, SubType.MORE), |
|
|
|
|
LESS_THAN_TIPS(Field.TIPS.fieldName, SubType.LESS), |
|
|
|
|
MORE_THAN_NUMBER_OF_PLAYER(Field.NUMBER_OF_PLAYER.fieldName, SubType.MORE), |
|
|
|
|
LESS_THAN_NUMBER_OF_PLAYER(Field.NUMBER_OF_PLAYER.fieldName, SubType.LESS), |
|
|
|
|
BETWEEN_NUMBER_OF_PLAYER(Field.NUMBER_OF_PLAYER.fieldName, SubType.BETWEEN), |
|
|
|
|
MORE_THAN_TOURNAMENT_FEE(Field.NET_RESULT.fieldName, SubType.MORE), |
|
|
|
|
LESS_THAN_TOURNAMENT_FEE(Field.NET_RESULT.fieldName, SubType.LESS), |
|
|
|
|
BETWEEN_TOURNAMENT_FEE(Field.TOURNAMENT_FEE.fieldName, SubType.BETWEEN), |
|
|
|
|
; |
|
|
|
|
|
|
|
|
|
enum class SubType { |
|
|
|
|
BETWEEN, |
|
|
|
|
MORE, |
|
|
|
|
LESS; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private enum class Field(var fieldName:String) { |
|
|
|
|
LIVE("bankroll.live"), |
|
|
|
|
CASH("type"), |
|
|
|
|
@ -35,12 +55,13 @@ enum class SessionFilterable(private var fieldName:String? = null): Filterable { |
|
|
|
|
SMALL_BLIND("cgSmallBlind"), |
|
|
|
|
COMMENT("comment"), |
|
|
|
|
TOURNAMENT_FEATURES("tournamentFeatures.id"), |
|
|
|
|
TOURNAMENT_NUMBER_OF_PLAYER("tournamentNumberOfPlayers"), |
|
|
|
|
TOURNAMENT_ENTRY_FEE("tournamentEntryFee"), |
|
|
|
|
RESULT_BUY_IN("result.buyin"), |
|
|
|
|
RESULT_CASHED_OUT("result.cashout"), |
|
|
|
|
RESULT_NET("result.ratedNet"), |
|
|
|
|
RESULT_TIPS("result.tips"), |
|
|
|
|
NET_RESULT("result.ratedNet"), |
|
|
|
|
BUY_IN("result.buyin"), |
|
|
|
|
CASH_OUT("result.cashout"), |
|
|
|
|
TIPS("result.tips"), |
|
|
|
|
NUMBER_OF_TABLE("numberOfTable"), |
|
|
|
|
NUMBER_OF_PLAYER("tournamentNumberOfPlayers"), |
|
|
|
|
TOURNAMENT_FEE("tournamentEntryFee"), |
|
|
|
|
; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -48,21 +69,46 @@ enum class SessionFilterable(private var fieldName:String? = null): Filterable { |
|
|
|
|
|
|
|
|
|
override val filterValuesExceptedKeys : Array<String>? |
|
|
|
|
get() { |
|
|
|
|
this.subType?.let { |
|
|
|
|
return when (it) { |
|
|
|
|
SubType.BETWEEN -> arrayOf("leftValue", "rightValue") |
|
|
|
|
else -> arrayOf("value") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return when (this) { |
|
|
|
|
BANKROLL, GAME, LOCATION, ANY_TOURNAMENT_FEATURES, ALL_TOURNAMENT_FEATURES -> arrayOf("ids") |
|
|
|
|
LIMIT, TOURNAMENT_TYPE, TABLE_SIZE, NUMBER_OF_TABLE -> arrayOf("values") |
|
|
|
|
LIMIT, TOURNAMENT_TYPE, TABLE_SIZE -> arrayOf("values") |
|
|
|
|
BLINDS -> arrayOf("map") |
|
|
|
|
MORE_THAN_NET_RESULT, LESS_THAN_NET_RESULT -> arrayOf("net") |
|
|
|
|
else -> null |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var between: Boolean = false |
|
|
|
|
var moreThan: Boolean = false |
|
|
|
|
var lessThan: Boolean = false |
|
|
|
|
var strict: Boolean = false |
|
|
|
|
|
|
|
|
|
override fun filter(realmQuery: RealmQuery<out RealmObject>): RealmQuery<out RealmObject> { |
|
|
|
|
|
|
|
|
|
this.subType?.let {subType -> |
|
|
|
|
this.fieldName?.let { |
|
|
|
|
return when (subType) { |
|
|
|
|
SubType.LESS -> { |
|
|
|
|
val value: Double by filterValues |
|
|
|
|
println("filter test less") |
|
|
|
|
realmQuery.lessThanOrEqualTo(it, value) |
|
|
|
|
} |
|
|
|
|
SubType.MORE -> { |
|
|
|
|
println("filter test more") |
|
|
|
|
val value: Double by filterValues |
|
|
|
|
realmQuery.greaterThanOrEqualTo(it, value) |
|
|
|
|
} |
|
|
|
|
SubType.BETWEEN -> { |
|
|
|
|
val leftValue: Double by filterValues |
|
|
|
|
val rightValue: Double by filterValues |
|
|
|
|
realmQuery.between(it, leftValue, rightValue) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} ?: run { |
|
|
|
|
throw FilterValueMapException("fieldName is missing") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return when (this) { |
|
|
|
|
LIVE -> realmQuery.equalTo(Field.LIVE.fieldName, true) |
|
|
|
|
CASH -> realmQuery.equalTo(Field.CASH.fieldName, Session.Type.CASH_GAME.ordinal) |
|
|
|
|
@ -87,7 +133,7 @@ enum class SessionFilterable(private var fieldName:String? = null): Filterable { |
|
|
|
|
throw FilterValueMapException("fieldName is missing") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
LIMIT, TOURNAMENT_TYPE, TABLE_SIZE, NUMBER_OF_TABLE -> { |
|
|
|
|
LIMIT, TOURNAMENT_TYPE, TABLE_SIZE -> { |
|
|
|
|
val values : Array<Int?>? by filterValues |
|
|
|
|
this.fieldName?.let { |
|
|
|
|
realmQuery.`in`(it, values) |
|
|
|
|
@ -95,13 +141,6 @@ enum class SessionFilterable(private var fieldName:String? = null): Filterable { |
|
|
|
|
throw FilterValueMapException("fieldName is missing") |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
MORE_THAN_NET_RESULT, LESS_THAN_NET_RESULT -> { |
|
|
|
|
val net : Double by filterValues |
|
|
|
|
if (this == LESS_THAN_NET_RESULT) { |
|
|
|
|
realmQuery.not() |
|
|
|
|
} |
|
|
|
|
realmQuery.greaterThanOrEqualTo(Field.RESULT_NET.fieldName, net) |
|
|
|
|
} |
|
|
|
|
BLINDS -> { |
|
|
|
|
val map : Array<Map<String,Any?>> by filterValues |
|
|
|
|
val expectedSubKeys = arrayOf("sb", "bb", "code") |
|
|
|
|
@ -142,6 +181,9 @@ enum class SessionFilterable(private var fieldName:String? = null): Filterable { |
|
|
|
|
} |
|
|
|
|
realmQuery |
|
|
|
|
} |
|
|
|
|
else -> { |
|
|
|
|
realmQuery |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |