|
|
|
@ -81,52 +81,38 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
interface Valuable <T : ArrayList<T>> { |
|
|
|
interface ListOfValues <T> { |
|
|
|
var values: ArrayList<T>? |
|
|
|
var listOfValues: ArrayList<T> |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
interface asListOfDouble { var doubleValues : ArrayList<Double> } |
|
|
|
interface SingleValue <T> { |
|
|
|
interface asListOfString { var stringValues : ArrayList<String> } |
|
|
|
var singleValue : T |
|
|
|
interface asDateValue { |
|
|
|
|
|
|
|
var dateValue: Date |
|
|
|
|
|
|
|
val showTime: Boolean |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
interface asListOfInt : asListOfDouble { |
|
|
|
|
|
|
|
var intValues : ArrayList<Int> |
|
|
|
|
|
|
|
get() { return ArrayList(doubleValues.map { it.toInt() }) } |
|
|
|
|
|
|
|
set(value) { doubleValues = ArrayList(value.map { it.toDouble() })} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
interface asIntValue : asListOfInt { |
|
|
|
|
|
|
|
var intValue: Int |
|
|
|
|
|
|
|
get() { return intValues.firstOrNull() ?: 0 } |
|
|
|
|
|
|
|
set(value) { intValues = arrayListOf(value) } |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
interface asDoubleValue : asListOfDouble { |
|
|
|
interface ListOfDouble: ListOfValues<Double> |
|
|
|
var doubleValue : Double |
|
|
|
interface ListOfInt: ListOfValues<Int> |
|
|
|
get() { return doubleValues.firstOrNull() ?: 0.0 } |
|
|
|
interface ListOfString: ListOfValues<String> |
|
|
|
set(value) { doubleValues = arrayListOf(value) } |
|
|
|
interface SingleDate: SingleValue<Date> |
|
|
|
} |
|
|
|
interface SingleDouble: SingleValue<Double> |
|
|
|
|
|
|
|
interface SingleInt: SingleValue<Int> |
|
|
|
|
|
|
|
|
|
|
|
interface Duration: asDoubleValue { |
|
|
|
interface Duration: SingleInt { |
|
|
|
var minutes: Int |
|
|
|
var minutes: Int |
|
|
|
get() { return doubleValue.toInt() } |
|
|
|
get() { return singleValue } |
|
|
|
set(value) { doubleValue = value.toDouble() } |
|
|
|
set(value) { singleValue = value } |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
interface Amount: asDoubleValue { |
|
|
|
interface Amount: SingleDouble { |
|
|
|
var amount: Double |
|
|
|
var amount: Double |
|
|
|
get() { return doubleValue } |
|
|
|
get() { return singleValue } |
|
|
|
set(value) { doubleValue = value } |
|
|
|
set(value) { singleValue = value } |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
interface More |
|
|
|
interface More |
|
|
|
interface Less |
|
|
|
interface Less |
|
|
|
interface Between : asListOfDouble { |
|
|
|
interface Between { |
|
|
|
val leftValue: Double get() { return doubleValues.first() } |
|
|
|
val leftValue: Double |
|
|
|
val rightValue: Double get() { return doubleValues.last() } |
|
|
|
val rightValue: Double |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
interface BetweenLeftExclusive : Between |
|
|
|
interface BetweenLeftExclusive : Between |
|
|
|
@ -136,8 +122,8 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
|
|
|
|
|
|
|
|
val id: List<String> get() { |
|
|
|
val id: List<String> get() { |
|
|
|
return when (this) { |
|
|
|
return when (this) { |
|
|
|
is QueryDataCondition<*> -> this.stringValues.map { "$baseId+$it" } |
|
|
|
is QueryDataCondition<*> -> this.listOfValues.map { "$baseId+$it" } |
|
|
|
is StaticDataQueryCondition -> this.intValues.map { "$baseId+$it" } |
|
|
|
is StaticDataQueryCondition -> this.listOfValues.map { "$baseId+$it" } |
|
|
|
else -> listOf(baseId) |
|
|
|
else -> listOf(baseId) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -153,25 +139,26 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
|
|
|
|
|
|
|
|
override var filterSectionRow: FilterSectionRow = FilterSectionRow.CASH_TOURNAMENT |
|
|
|
override var filterSectionRow: FilterSectionRow = FilterSectionRow.CASH_TOURNAMENT |
|
|
|
|
|
|
|
|
|
|
|
abstract class QueryDataCondition < T: NameManageable > : QueryCondition(), asListOfString { |
|
|
|
abstract class QueryDataCondition < T: NameManageable > : QueryCondition(), ListOfString { |
|
|
|
fun setObject(dataObject: T) { |
|
|
|
fun setObject(dataObject: T) { |
|
|
|
this.dataObject = dataObject |
|
|
|
this.dataObject = dataObject |
|
|
|
this.stringValues.add(dataObject.id) |
|
|
|
this.listOfValues.add(dataObject.id) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var dataObject: NameManageable? = null |
|
|
|
var dataObject: NameManageable? = null |
|
|
|
override var stringValues = ArrayList<String>() |
|
|
|
|
|
|
|
|
|
|
|
override var listOfValues = ArrayList<String>() |
|
|
|
|
|
|
|
|
|
|
|
abstract val entity : Class<T> |
|
|
|
abstract val entity : Class<T> |
|
|
|
|
|
|
|
|
|
|
|
fun label(): String { |
|
|
|
fun label(): String { |
|
|
|
val realm = Realm.getDefaultInstance() |
|
|
|
val realm = Realm.getDefaultInstance() |
|
|
|
val completeLabel = when (stringValues.size) { |
|
|
|
val completeLabel = when (listOfValues.size) { |
|
|
|
0 -> return NULL_TEXT |
|
|
|
0 -> return NULL_TEXT |
|
|
|
1,2 -> { |
|
|
|
1,2 -> { |
|
|
|
return stringValues.map { labelForValue(realm, it) }.joinToString(", ") |
|
|
|
return listOfValues.map { labelForValue(realm, it) }.joinToString(", ") |
|
|
|
} |
|
|
|
} |
|
|
|
else -> "${stringValues.size} $baseId" |
|
|
|
else -> "${listOfValues.size} $baseId" |
|
|
|
} |
|
|
|
} |
|
|
|
realm.close() |
|
|
|
realm.close() |
|
|
|
return completeLabel |
|
|
|
return completeLabel |
|
|
|
@ -183,38 +170,51 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
abstract class SingleValueQueryCondition : QueryCondition(), asIntValue { |
|
|
|
open class SingleValueQueryCondition : QueryCondition(), SingleInt { |
|
|
|
override var doubleValues = ArrayList<Double>() |
|
|
|
override var singleValue: Int = 0 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
abstract class StaticDataQueryCondition : QueryCondition(), asListOfInt { |
|
|
|
abstract class StaticDataQueryCondition : QueryCondition(), ListOfInt { |
|
|
|
var data : RowRepresentable? = null |
|
|
|
var data : RowRepresentable? = null |
|
|
|
override var doubleValues = ArrayList<Double>() |
|
|
|
override var listOfValues = ArrayList<Int>() |
|
|
|
abstract fun labelForValue(value:Int): String |
|
|
|
abstract fun labelForValue(value:Int): String |
|
|
|
|
|
|
|
|
|
|
|
fun label(): String { |
|
|
|
fun label(): String { |
|
|
|
return when (intValues.size) { |
|
|
|
return when (listOfValues.size) { |
|
|
|
0 -> return NULL_TEXT |
|
|
|
0 -> return NULL_TEXT |
|
|
|
1,2 -> intValues.map { labelForValue(it) }.joinToString(", ") |
|
|
|
1,2 -> listOfValues.map { labelForValue(it) }.joinToString(", ") |
|
|
|
else -> "${intValues.size} $baseId" |
|
|
|
else -> "${listOfValues.size} $baseId" |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
open class OperationQueryCondition : QueryCondition(), asDoubleValue { |
|
|
|
open class OperationQueryCondition : QueryCondition() |
|
|
|
override var doubleValues = ArrayList<Double>() |
|
|
|
|
|
|
|
|
|
|
|
open class DurationOperationQueryCondition : OperationQueryCondition(), Duration { |
|
|
|
|
|
|
|
override var singleValue: Int = 0 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
open class BetweenQueryCondition : QueryCondition(), asListOfDouble { |
|
|
|
open class AmountOperationQueryCondition : OperationQueryCondition(), Amount { |
|
|
|
override var doubleValues = ArrayList<Double>() |
|
|
|
override var singleValue: Double = 0.0 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
open class DateQuery: QueryCondition(), asDateValue { |
|
|
|
open class BetweenQueryCondition : QueryCondition(), ListOfDouble { |
|
|
|
override var dateValue: Date = Date() |
|
|
|
override var listOfValues = ArrayList<Double>() |
|
|
|
|
|
|
|
val leftValue: Double get() { return listOfValues.first() } |
|
|
|
|
|
|
|
val rightValue: Double get() { return listOfValues.last() } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
interface DateTime { |
|
|
|
|
|
|
|
val showTime: Boolean |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
open class DateQuery: QueryCondition(), DateTime, SingleDate { |
|
|
|
|
|
|
|
override var singleValue: Date = Date() |
|
|
|
override val showTime: Boolean = false |
|
|
|
override val showTime: Boolean = false |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
open class TimeQuery: DateQuery() { |
|
|
|
open class TimeQuery: DateQuery(), DateTime, SingleDate { |
|
|
|
override val showTime: Boolean = true |
|
|
|
override val showTime: Boolean = true |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -247,16 +247,16 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
class BLIND: QueryCondition(), asListOfString { |
|
|
|
class BLIND: QueryCondition(), ListOfString { |
|
|
|
override var stringValues = ArrayList<String>() |
|
|
|
override var listOfValues = ArrayList<String>() |
|
|
|
|
|
|
|
|
|
|
|
fun label(): String { |
|
|
|
fun label(): String { |
|
|
|
val completeLabel = when (stringValues.size) { |
|
|
|
val completeLabel = when (listOfValues.size) { |
|
|
|
0 -> return NULL_TEXT |
|
|
|
0 -> return NULL_TEXT |
|
|
|
1,2 -> { |
|
|
|
1,2 -> { |
|
|
|
return stringValues.map { it }.joinToString(", ") |
|
|
|
return listOfValues.map { it }.joinToString(", ") |
|
|
|
} |
|
|
|
} |
|
|
|
else -> "${stringValues.size} $baseId" |
|
|
|
else -> "${listOfValues.size} $baseId" |
|
|
|
} |
|
|
|
} |
|
|
|
return completeLabel |
|
|
|
return completeLabel |
|
|
|
} |
|
|
|
} |
|
|
|
@ -269,17 +269,17 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
class LESS_NUMBER_OF_TABLE: OperationQueryCondition(), Less |
|
|
|
class LESS_NUMBER_OF_TABLE: OperationQueryCondition(), Less |
|
|
|
class BETWEEN_NUMBER_OF_TABLE: BetweenQueryCondition(), Between |
|
|
|
class BETWEEN_NUMBER_OF_TABLE: BetweenQueryCondition(), Between |
|
|
|
|
|
|
|
|
|
|
|
class MORE_THAN_NET_RESULT: OperationQueryCondition(), More, Amount |
|
|
|
class MORE_THAN_NET_RESULT: AmountOperationQueryCondition(), More |
|
|
|
class LESS_THAN_NET_RESULT: OperationQueryCondition(), Less, Amount |
|
|
|
class LESS_THAN_NET_RESULT: AmountOperationQueryCondition(), Less |
|
|
|
|
|
|
|
|
|
|
|
class MORE_THAN_BUY_IN: OperationQueryCondition(), More, Amount |
|
|
|
class MORE_THAN_BUY_IN: AmountOperationQueryCondition(), More |
|
|
|
class LESS_THAN_BUY_IN: OperationQueryCondition(), Less, Amount |
|
|
|
class LESS_THAN_BUY_IN: AmountOperationQueryCondition(), Less |
|
|
|
|
|
|
|
|
|
|
|
class MORE_THAN_CASH_OUT: OperationQueryCondition(), More, Amount |
|
|
|
class MORE_THAN_CASH_OUT: AmountOperationQueryCondition(), More |
|
|
|
class LESS_THAN_CASH_OUT: OperationQueryCondition(), Less, Amount |
|
|
|
class LESS_THAN_CASH_OUT: AmountOperationQueryCondition(), Less |
|
|
|
|
|
|
|
|
|
|
|
class MORE_THAN_TIPS: OperationQueryCondition(), More, Amount |
|
|
|
class MORE_THAN_TIPS: AmountOperationQueryCondition(), More |
|
|
|
class LESS_THAN_TIPS: OperationQueryCondition(), Less, Amount |
|
|
|
class LESS_THAN_TIPS: AmountOperationQueryCondition(), Less |
|
|
|
|
|
|
|
|
|
|
|
class MORE_THAN_NUMBER_OF_PLAYER: OperationQueryCondition(), More |
|
|
|
class MORE_THAN_NUMBER_OF_PLAYER: OperationQueryCondition(), More |
|
|
|
class LESS_THAN_NUMBER_OF_PLAYER: OperationQueryCondition(), Less |
|
|
|
class LESS_THAN_NUMBER_OF_PLAYER: OperationQueryCondition(), Less |
|
|
|
@ -289,12 +289,12 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
class LESS_THAN_TOURNAMENT_FEE: OperationQueryCondition(), Less |
|
|
|
class LESS_THAN_TOURNAMENT_FEE: OperationQueryCondition(), Less |
|
|
|
class BETWEEN_TOURNAMENT_FEE: BetweenQueryCondition(), BetweenRightExclusive { |
|
|
|
class BETWEEN_TOURNAMENT_FEE: BetweenQueryCondition(), BetweenRightExclusive { |
|
|
|
fun between(leftValue:Double, rightValue:Double) { |
|
|
|
fun between(leftValue:Double, rightValue:Double) { |
|
|
|
doubleValues.add(leftValue) |
|
|
|
listOfValues = arrayListOf(leftValue, rightValue) |
|
|
|
doubleValues.add(rightValue) |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
class MIN_RE_BUY: OperationQueryCondition(), More, Amount |
|
|
|
|
|
|
|
class MAX_RE_BUY: OperationQueryCondition(), Less, Amount |
|
|
|
class MIN_RE_BUY: AmountOperationQueryCondition(), More |
|
|
|
|
|
|
|
class MAX_RE_BUY: AmountOperationQueryCondition(), Less |
|
|
|
|
|
|
|
|
|
|
|
class STARTED_FROM_DATE: DateQuery() |
|
|
|
class STARTED_FROM_DATE: DateQuery() |
|
|
|
class STARTED_TO_DATE: DateQuery(), Less |
|
|
|
class STARTED_TO_DATE: DateQuery(), Less |
|
|
|
@ -328,8 +328,8 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
object THIS_MONTH: QueryCondition() |
|
|
|
object THIS_MONTH: QueryCondition() |
|
|
|
object THIS_YEAR: QueryCondition() |
|
|
|
object THIS_YEAR: QueryCondition() |
|
|
|
class PAST_DAYS: SingleValueQueryCondition() |
|
|
|
class PAST_DAYS: SingleValueQueryCondition() |
|
|
|
class MORE_THAN_DURATION: OperationQueryCondition(), More, Duration |
|
|
|
class MORE_THAN_DURATION: DurationOperationQueryCondition(), More |
|
|
|
class LESS_THAN_DURATION: OperationQueryCondition(), Less, Duration |
|
|
|
class LESS_THAN_DURATION: DurationOperationQueryCondition(), Less |
|
|
|
class STARTED_FROM_TIME: TimeQuery() |
|
|
|
class STARTED_FROM_TIME: TimeQuery() |
|
|
|
class ENDED_TO_TIME: TimeQuery(), Less |
|
|
|
class ENDED_TO_TIME: TimeQuery(), Less |
|
|
|
|
|
|
|
|
|
|
|
@ -357,22 +357,22 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
CASH -> realmQuery.equalTo(fieldName, Session.Type.CASH_GAME.ordinal) |
|
|
|
CASH -> realmQuery.equalTo(fieldName, Session.Type.CASH_GAME.ordinal) |
|
|
|
TOURNAMENT -> realmQuery.equalTo(fieldName, Session.Type.TOURNAMENT.ordinal) |
|
|
|
TOURNAMENT -> realmQuery.equalTo(fieldName, Session.Type.TOURNAMENT.ordinal) |
|
|
|
is ALL_TOURNAMENT_FEATURES -> { |
|
|
|
is ALL_TOURNAMENT_FEATURES -> { |
|
|
|
stringValues.forEach { |
|
|
|
listOfValues.forEach { |
|
|
|
realmQuery.equalTo(fieldName, it) |
|
|
|
realmQuery.equalTo(fieldName, it) |
|
|
|
} |
|
|
|
} |
|
|
|
realmQuery |
|
|
|
realmQuery |
|
|
|
} |
|
|
|
} |
|
|
|
is BLIND -> realmQuery.`in`(fieldName, stringValues.toTypedArray()) |
|
|
|
is BLIND -> realmQuery.`in`(fieldName, listOfValues.toTypedArray()) |
|
|
|
is QueryDataCondition<*> -> realmQuery.`in`(fieldName, stringValues.toTypedArray()) |
|
|
|
is QueryDataCondition<*> -> realmQuery.`in`(fieldName, listOfValues.toTypedArray()) |
|
|
|
is StaticDataQueryCondition -> realmQuery.`in`(fieldName, intValues.toTypedArray()) |
|
|
|
is StaticDataQueryCondition -> realmQuery.`in`(fieldName, listOfValues.toTypedArray()) |
|
|
|
is DateQuery -> { |
|
|
|
is DateQuery -> { |
|
|
|
if (this is Less) { |
|
|
|
if (this is Less) { |
|
|
|
realmQuery.lessThanOrEqualTo(fieldName, dateValue) |
|
|
|
realmQuery.lessThanOrEqualTo(fieldName, singleValue) |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
realmQuery.greaterThanOrEqualTo(fieldName, dateValue) |
|
|
|
realmQuery.greaterThanOrEqualTo(fieldName, singleValue) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
is SingleValueQueryCondition -> realmQuery.equalTo(fieldName, intValue) |
|
|
|
is SingleValueQueryCondition -> realmQuery.equalTo(fieldName, singleValue) |
|
|
|
WEEK_END, WEEK_DAY -> { |
|
|
|
WEEK_END, WEEK_DAY -> { |
|
|
|
var query = realmQuery |
|
|
|
var query = realmQuery |
|
|
|
if (this == WEEK_DAY) { |
|
|
|
if (this == WEEK_DAY) { |
|
|
|
@ -426,10 +426,12 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
|
|
|
|
|
|
|
|
fun updateValueMap(filterCondition: FilterCondition) { |
|
|
|
fun updateValueMap(filterCondition: FilterCondition) { |
|
|
|
when (this) { |
|
|
|
when (this) { |
|
|
|
is asListOfDouble -> filterCondition.doubleValues.map { doubleValues.add(it) } |
|
|
|
is ListOfDouble -> listOfValues = filterCondition.getValues() |
|
|
|
is QueryDataCondition<*> -> filterCondition.ids.map { stringValues.add(it) } |
|
|
|
is ListOfString -> listOfValues = filterCondition.getValues() |
|
|
|
is DateQuery -> dateValue = filterCondition.date |
|
|
|
is ListOfInt -> listOfValues = filterCondition.getValues() |
|
|
|
is BLIND -> filterCondition.blinds.map { stringValues.add(it) } |
|
|
|
is SingleDate -> singleValue = filterCondition.getValue() |
|
|
|
|
|
|
|
is SingleInt -> singleValue = filterCondition.getValue() |
|
|
|
|
|
|
|
is SingleDouble -> singleValue = filterCondition.getValue() |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|