|
|
|
@ -90,22 +90,26 @@ sealed class Criteria(override var uniqueIdentifier: Int) : IntIdentifiable, Row |
|
|
|
|
|
|
|
|
|
|
|
if (this is ValueCustomFields) { |
|
|
|
if (this is ValueCustomFields) { |
|
|
|
val realm = Realm.getDefaultInstance() |
|
|
|
val realm = Realm.getDefaultInstance() |
|
|
|
val distincts = realm.where<CustomFieldEntry>().equalTo("customField.id", this.customField.id).distinct("numericValue").findAll().sort("numericValue", Sort.ASCENDING) |
|
|
|
val distincts = realm.where<CustomFieldEntry>().equalTo("customField.id", this.customFieldId).findAll().sort("numericValue", Sort.ASCENDING) |
|
|
|
realm.close() |
|
|
|
realm.close() |
|
|
|
|
|
|
|
|
|
|
|
val objects = mutableListOf<QueryCondition.CustomFieldNumberQuery>() |
|
|
|
val objects = mutableListOf<QueryCondition.CustomFieldNumberQuery>() |
|
|
|
distincts.distinct().mapNotNull { |
|
|
|
distincts.mapNotNull { |
|
|
|
it.numericValue |
|
|
|
it.numericValue |
|
|
|
}.forEach {value -> |
|
|
|
}.distinct().forEach {value -> |
|
|
|
val condition: QueryCondition.CustomFieldNumberQuery = QueryCondition.CustomFieldNumberQuery().apply { |
|
|
|
val condition: QueryCondition.CustomFieldNumberQuery = when (this.customFieldType) { |
|
|
|
this.customFieldId = this@ListCriteria.customField.id |
|
|
|
CustomField.Type.AMOUNT.uniqueIdentifier -> QueryCondition.CustomFieldNumberQuery() |
|
|
|
|
|
|
|
CustomField.Type.NUMBER.uniqueIdentifier -> QueryCondition.CustomFieldAmountQuery() |
|
|
|
|
|
|
|
else -> throw PokerAnalyticsException.QueryValueMapUnexpectedValue |
|
|
|
|
|
|
|
}.apply { |
|
|
|
|
|
|
|
this.customFieldId = this@ListCriteria.customFieldId |
|
|
|
listOfValues = arrayListOf(value) |
|
|
|
listOfValues = arrayListOf(value) |
|
|
|
} |
|
|
|
} |
|
|
|
objects.add(condition) |
|
|
|
objects.add(condition) |
|
|
|
|
|
|
|
} |
|
|
|
objects.sorted() |
|
|
|
objects.sorted() |
|
|
|
return objects.map { Query(it) } |
|
|
|
return objects.map { Query(it) } |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QueryCondition.distinct<Session, T, S>()?.let { |
|
|
|
QueryCondition.distinct<Session, T, S>()?.let { |
|
|
|
@ -162,12 +166,14 @@ sealed class Criteria(override var uniqueIdentifier: Int) : IntIdentifiable, Row |
|
|
|
object TournamentFees : ListCriteria(18) |
|
|
|
object TournamentFees : ListCriteria(18) |
|
|
|
object Cash : SimpleCriteria(listOf(QueryCondition.IsCash), 19) |
|
|
|
object Cash : SimpleCriteria(listOf(QueryCondition.IsCash), 19) |
|
|
|
object Tournament : SimpleCriteria(listOf(QueryCondition.IsTournament), 20) |
|
|
|
object Tournament : SimpleCriteria(listOf(QueryCondition.IsTournament), 20) |
|
|
|
data class ListCustomFields(override var customField: CustomField) : RealmCriteria(21), CustomFieldCriteria { |
|
|
|
data class ListCustomFields(var customField: CustomField) : RealmCriteria(21), CustomFieldCriteria { |
|
|
|
override var customFieldId: String = customField.id |
|
|
|
override var customFieldId: String = customField.id |
|
|
|
|
|
|
|
override var customFieldType: Int = customField.type |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
data class ValueCustomFields(override var customField: CustomField) : ListCriteria(22), CustomFieldCriteria { |
|
|
|
data class ValueCustomFields(var customField: CustomField) : ListCriteria(22), CustomFieldCriteria { |
|
|
|
override var customFieldId: String = customField.id |
|
|
|
override var customFieldId: String = customField.id |
|
|
|
|
|
|
|
override var customFieldType: Int = customField.type |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
val queries: List<Query> |
|
|
|
val queries: List<Query> |
|
|
|
@ -243,7 +249,13 @@ sealed class Criteria(override var uniqueIdentifier: Int) : IntIdentifiable, Row |
|
|
|
} |
|
|
|
} |
|
|
|
is Blinds -> comparison<QueryCondition.AnyBlind, String>() |
|
|
|
is Blinds -> comparison<QueryCondition.AnyBlind, String>() |
|
|
|
is ListCustomFields -> comparison<CustomFieldEntry>() |
|
|
|
is ListCustomFields -> comparison<CustomFieldEntry>() |
|
|
|
is ValueCustomFields -> comparison<QueryCondition.CustomFieldNumberQuery, Double >() |
|
|
|
is ValueCustomFields -> { |
|
|
|
|
|
|
|
when (customFieldType) { |
|
|
|
|
|
|
|
CustomField.Type.AMOUNT.uniqueIdentifier -> comparison<QueryCondition.CustomFieldAmountQuery, Double >() |
|
|
|
|
|
|
|
CustomField.Type.NUMBER.uniqueIdentifier -> comparison<QueryCondition.CustomFieldNumberQuery, Double >() |
|
|
|
|
|
|
|
else -> throw PokerAnalyticsException.QueryTypeUnhandled |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
else -> throw PokerAnalyticsException.QueryTypeUnhandled |
|
|
|
else -> throw PokerAnalyticsException.QueryTypeUnhandled |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -323,6 +335,6 @@ sealed class Criteria(override var uniqueIdentifier: Int) : IntIdentifiable, Row |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
interface CustomFieldCriteria { |
|
|
|
interface CustomFieldCriteria { |
|
|
|
var customField: CustomField |
|
|
|
|
|
|
|
var customFieldId: String |
|
|
|
var customFieldId: String |
|
|
|
|
|
|
|
var customFieldType: Int |
|
|
|
} |
|
|
|
} |