|
|
|
@ -50,6 +50,37 @@ inline fun <reified T : Filterable> List<QueryCondition>.queryWith(query: RealmQ |
|
|
|
|
|
|
|
|
|
|
|
sealed class QueryCondition : FilterElementRow { |
|
|
|
sealed class QueryCondition : FilterElementRow { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inline fun <reified T:Identifiable>getInstance(): QueryCondition { |
|
|
|
|
|
|
|
return when (T::class.java) { |
|
|
|
|
|
|
|
Bankroll::class.java -> BANKROLL() |
|
|
|
|
|
|
|
Game::class.java -> GAME() |
|
|
|
|
|
|
|
Location::class.java -> LOCATION() |
|
|
|
|
|
|
|
TournamentName::class.java -> TOURNAMENT_NAME() |
|
|
|
|
|
|
|
TournamentFeature::class.java -> ANY_TOURNAMENT_FEATURES() |
|
|
|
|
|
|
|
else -> throw PokerAnalyticsException.QueryTypeUnhandled |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inline fun < reified T: Filterable, reified S: QueryCondition>distinct(): RealmResults<T>? { |
|
|
|
|
|
|
|
FilterHelper.fieldNameForQueryType<T>(S::class.java)?.let { |
|
|
|
|
|
|
|
val realm = Realm.getDefaultInstance() |
|
|
|
|
|
|
|
val distincts = realm.where<T>().distinct(it).findAll().sort(it, Sort.ASCENDING) |
|
|
|
|
|
|
|
realm.close() |
|
|
|
|
|
|
|
return distincts |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return null |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
interface Valuable <T : ArrayList<T>> { |
|
|
|
interface Valuable <T : ArrayList<T>> { |
|
|
|
var values: ArrayList<T>? |
|
|
|
var values: ArrayList<T>? |
|
|
|
} |
|
|
|
} |
|
|
|
@ -123,14 +154,6 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
|
|
|
|
|
|
|
|
override var filterSectionRow: FilterSectionRow = FilterSectionRow.CASH_TOURNAMENT |
|
|
|
override var filterSectionRow: FilterSectionRow = FilterSectionRow.CASH_TOURNAMENT |
|
|
|
|
|
|
|
|
|
|
|
open class OperationQueryCondition : QueryCondition(), asDoubleValue { |
|
|
|
|
|
|
|
override var doubleValues = ArrayList<Double>() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
open class BetweenQueryCondition : QueryCondition(), asListOfDouble { |
|
|
|
|
|
|
|
override var doubleValues = ArrayList<Double>() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
abstract class QueryDataCondition < T: NameManageable > : QueryCondition(), asListOfString { |
|
|
|
abstract class QueryDataCondition < T: NameManageable > : QueryCondition(), asListOfString { |
|
|
|
fun setObject(dataObject: T) { |
|
|
|
fun setObject(dataObject: T) { |
|
|
|
this.dataObject = dataObject |
|
|
|
this.dataObject = dataObject |
|
|
|
@ -161,39 +184,6 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
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 |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inline fun <reified T:Identifiable>getInstance(): QueryCondition { |
|
|
|
|
|
|
|
return when (T::class.java) { |
|
|
|
|
|
|
|
Bankroll::class.java -> BANKROLL() |
|
|
|
|
|
|
|
Game::class.java -> GAME() |
|
|
|
|
|
|
|
Location::class.java -> LOCATION() |
|
|
|
|
|
|
|
TournamentName::class.java -> TOURNAMENT_NAME() |
|
|
|
|
|
|
|
TournamentFeature::class.java -> ANY_TOURNAMENT_FEATURES() |
|
|
|
|
|
|
|
else -> throw PokerAnalyticsException.QueryTypeUnhandled |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
inline fun < reified T: Filterable, reified S: QueryCondition>distinct(): RealmResults<T>? { |
|
|
|
|
|
|
|
FilterHelper.fieldNameForQueryType<T>(S::class.java)?.let { |
|
|
|
|
|
|
|
val realm = Realm.getDefaultInstance() |
|
|
|
|
|
|
|
val distincts = realm.where<T>().distinct(it).findAll().sort(it, Sort.ASCENDING) |
|
|
|
|
|
|
|
realm.close() |
|
|
|
|
|
|
|
return distincts |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return null |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//open val name: String = this::class.simpleName ?: throw PokerAnalyticsException.FilterElementUnknownName |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
abstract class SingleValueQueryCondition : QueryCondition(), asIntValue { |
|
|
|
abstract class SingleValueQueryCondition : QueryCondition(), asIntValue { |
|
|
|
override var doubleValues = ArrayList<Double>() |
|
|
|
override var doubleValues = ArrayList<Double>() |
|
|
|
} |
|
|
|
} |
|
|
|
@ -201,7 +191,7 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
abstract class StaticDataQueryCondition : QueryCondition(), asListOfInt { |
|
|
|
abstract class StaticDataQueryCondition : QueryCondition(), asListOfInt { |
|
|
|
var data : RowRepresentable? = null |
|
|
|
var data : RowRepresentable? = null |
|
|
|
override var doubleValues = ArrayList<Double>() |
|
|
|
override var doubleValues = ArrayList<Double>() |
|
|
|
abstract fun labelForValue(value:Int): String? |
|
|
|
abstract fun labelForValue(value:Int): String |
|
|
|
|
|
|
|
|
|
|
|
fun label(): String { |
|
|
|
fun label(): String { |
|
|
|
return when (intValues.size) { |
|
|
|
return when (intValues.size) { |
|
|
|
@ -212,6 +202,23 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
open class OperationQueryCondition : QueryCondition(), asDoubleValue { |
|
|
|
|
|
|
|
override var doubleValues = ArrayList<Double>() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
open class BetweenQueryCondition : QueryCondition(), asListOfDouble { |
|
|
|
|
|
|
|
override var doubleValues = ArrayList<Double>() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
open class DateQuery: QueryCondition(), asDateValue { |
|
|
|
|
|
|
|
override var dateValue: Date = Date() |
|
|
|
|
|
|
|
override val showTime: Boolean = false |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
open class TimeQuery: DateQuery() { |
|
|
|
|
|
|
|
override val showTime: Boolean = true |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
object LIVE : QueryCondition() |
|
|
|
object LIVE : QueryCondition() |
|
|
|
object CASH : QueryCondition() |
|
|
|
object CASH : QueryCondition() |
|
|
|
object ONLINE : QueryCondition() |
|
|
|
object ONLINE : QueryCondition() |
|
|
|
@ -224,22 +231,14 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
class LOCATION: QueryDataCondition<Location>() { override val entity: Class<Location> = Location::class.java } |
|
|
|
class LOCATION: QueryDataCondition<Location>() { override val entity: Class<Location> = Location::class.java } |
|
|
|
|
|
|
|
|
|
|
|
class LIMIT: StaticDataQueryCondition() { |
|
|
|
class LIMIT: StaticDataQueryCondition() { |
|
|
|
override fun labelForValue(value: Int): String? { |
|
|
|
override fun labelForValue(value: Int): String { |
|
|
|
return Limit.values()[value].longName |
|
|
|
return Limit.values()[value].getDisplayName() |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
class TABLE_SIZE: StaticDataQueryCondition() { |
|
|
|
class TABLE_SIZE: StaticDataQueryCondition() { |
|
|
|
val tableSize: TableSize get() { return TableSize(intValues.first()) } |
|
|
|
override fun labelForValue(value: Int): String { |
|
|
|
//TODO dynamize this |
|
|
|
return TableSize(value).getDisplayName() |
|
|
|
override val resId: Int? = R.string.max |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun localizedTitle(context: Context): String { |
|
|
|
|
|
|
|
return this.tableSize.localizedTitle(context) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun labelForValue(value: Int): String? { |
|
|
|
|
|
|
|
return null |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@ -287,18 +286,8 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
doubleValues.add(rightValue) |
|
|
|
doubleValues.add(rightValue) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
class MIN_RE_BUY: OperationQueryCondition(), More |
|
|
|
class MIN_RE_BUY: OperationQueryCondition(), More, Amount |
|
|
|
class MAX_RE_BUY: OperationQueryCondition(), Less |
|
|
|
class MAX_RE_BUY: OperationQueryCondition(), Less, Amount |
|
|
|
|
|
|
|
|
|
|
|
// Dates |
|
|
|
|
|
|
|
open class DateQuery: QueryCondition(), asDateValue { |
|
|
|
|
|
|
|
override var dateValue: Date = Date() |
|
|
|
|
|
|
|
override val showTime: Boolean = false |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
open class TimeQuery: DateQuery() { |
|
|
|
|
|
|
|
override val showTime: Boolean = true |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class STARTED_FROM_DATE: DateQuery() |
|
|
|
class STARTED_FROM_DATE: DateQuery() |
|
|
|
class STARTED_TO_DATE: DateQuery(), Less |
|
|
|
class STARTED_TO_DATE: DateQuery(), Less |
|
|
|
|