|
|
|
|
@ -5,6 +5,9 @@ import io.realm.RealmObject |
|
|
|
|
import io.realm.RealmQuery |
|
|
|
|
import io.realm.RealmResults |
|
|
|
|
import net.pokeranalytics.android.model.realm.Session |
|
|
|
|
import com.google.android.libraries.places.internal.`in` |
|
|
|
|
import java.util.* |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
enum class FilterComponent { |
|
|
|
|
|
|
|
|
|
@ -14,15 +17,91 @@ enum class SessionFilterable(var fieldName:String? = null) : Filterable { |
|
|
|
|
LIVE("bankroll.live"), |
|
|
|
|
CASH("type"), |
|
|
|
|
ONLINE, |
|
|
|
|
TOURNAMENT |
|
|
|
|
TOURNAMENT, |
|
|
|
|
BANKROLL("bankroll.id"), |
|
|
|
|
GAME("game.id"), |
|
|
|
|
LIMIT("limit"), |
|
|
|
|
TABLE_SIZE("tableSize"), |
|
|
|
|
LOCATION("location.id"), |
|
|
|
|
NUMBEROFTABLE("numberOfTable"), |
|
|
|
|
COMMENT("comment"), |
|
|
|
|
TOURNAMENT_TYPE("tournamentType"), |
|
|
|
|
TOURNAMENT_NAME("tournamentName.id"), |
|
|
|
|
TOURNAMENT_FEATURES("tournamentFeature.id"), |
|
|
|
|
TOURNAMENT_NUMBER_OF_PLAYER("tournamentNumberOfPlayers"), |
|
|
|
|
TOURNAMENT_ENTRY_FEE("tournamentEntryFee"), |
|
|
|
|
RESULT_BUYIN("result.buyin"), |
|
|
|
|
RESULT_CASHED_OUT("result.cashout"), |
|
|
|
|
RESULT_NET("result.ratedNet"), |
|
|
|
|
RESULT_TIPS("result.tips"), |
|
|
|
|
STARTED_FROM_DATE, |
|
|
|
|
STARTED_TO_DATE, |
|
|
|
|
ENDED_FROM_DATE, |
|
|
|
|
ENDED_TO_DATE, |
|
|
|
|
BLINDS, |
|
|
|
|
; |
|
|
|
|
|
|
|
|
|
private enum class Field(var fieldName:String? = null) { |
|
|
|
|
START_DATE("startDate"), |
|
|
|
|
END_DATE("endDate"), |
|
|
|
|
CURRENCY("bankroll.currency.code"), |
|
|
|
|
BIG_BLIND("cgBigBlind"), |
|
|
|
|
SMALL_BLIND("cgSmallBlind"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
var valueMap : Map<String, Any?>? = null |
|
|
|
|
|
|
|
|
|
override fun filter(realmQuery: RealmQuery<*>): RealmQuery<out RealmObject> { |
|
|
|
|
return when (this) { |
|
|
|
|
LIVE -> realmQuery.equalTo(this.fieldName, true) as RealmQuery<out RealmObject> |
|
|
|
|
CASH -> realmQuery.equalTo(this.fieldName, Session.Type.CASH_GAME.ordinal) as RealmQuery<out RealmObject> |
|
|
|
|
LIVE -> realmQuery.equalTo(this.fieldName, true) |
|
|
|
|
CASH -> realmQuery.equalTo(this.fieldName, Session.Type.CASH_GAME.ordinal) |
|
|
|
|
ONLINE -> LIVE.filter(realmQuery.not()) |
|
|
|
|
TOURNAMENT -> CASH.filter(realmQuery.not()) |
|
|
|
|
BANKROLL -> { |
|
|
|
|
val ids : Array<String> by valueMap |
|
|
|
|
realmQuery.`in`(this.fieldName, ids) |
|
|
|
|
} |
|
|
|
|
STARTED_FROM_DATE -> { |
|
|
|
|
val date : Date by valueMap |
|
|
|
|
this.filter(realmQuery.greaterThanOrEqualTo(Field.START_DATE.fieldName, date)) |
|
|
|
|
} |
|
|
|
|
STARTED_TO_DATE -> { |
|
|
|
|
val date : Date by valueMap |
|
|
|
|
this.filter(realmQuery.lessThanOrEqualTo(Field.START_DATE.fieldName, date)) |
|
|
|
|
} |
|
|
|
|
ENDED_FROM_DATE -> { |
|
|
|
|
val date : Date by valueMap |
|
|
|
|
this.filter(realmQuery.greaterThanOrEqualTo(Field.END_DATE.fieldName, date)) |
|
|
|
|
} |
|
|
|
|
ENDED_TO_DATE -> { |
|
|
|
|
val date : Date by valueMap |
|
|
|
|
this.filter(realmQuery.lessThanOrEqualTo(Field.END_DATE.fieldName, date)) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
BLINDS -> { |
|
|
|
|
val map : Array<Map<String,Any?>> by valueMap |
|
|
|
|
var finalQuery = realmQuery |
|
|
|
|
map.forEach { |
|
|
|
|
val sb : Double by it |
|
|
|
|
val bb : Double by it |
|
|
|
|
val code : String by it |
|
|
|
|
|
|
|
|
|
finalQuery = finalQuery |
|
|
|
|
.beginGroup() |
|
|
|
|
.equalTo(Field.SMALL_BLIND.fieldName, sb) |
|
|
|
|
.and() |
|
|
|
|
.equalTo(Field.BIG_BLIND.fieldName, bb) |
|
|
|
|
.and() |
|
|
|
|
.equalTo(Field.CURRENCY.fieldName, code) |
|
|
|
|
.endGroup() |
|
|
|
|
|
|
|
|
|
if (map.last() != it) { |
|
|
|
|
finalQuery = finalQuery.or() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
finalQuery |
|
|
|
|
} |
|
|
|
|
else -> realmQuery |
|
|
|
|
} as RealmQuery<out RealmObject> |
|
|
|
|
} |
|
|
|
|
} |