fix some bugs

feature/top10
Razmig Sarkissian 7 years ago
parent b615820315
commit 3e556baf13
  1. 10
      app/src/main/java/net/pokeranalytics/android/model/Criteria.kt
  2. 7
      app/src/main/java/net/pokeranalytics/android/model/TournamentType.kt
  3. 23
      app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt
  4. 2
      app/src/main/java/net/pokeranalytics/android/model/realm/FilterCondition.kt

@ -68,8 +68,8 @@ sealed class Criteria {
}
abstract class ListCriteria : Criteria() {
inline fun <reified T:QueryCondition.ListOfValueQueryCondition<S>, reified S:Any> comparison(): List<QueryCondition> {
QueryCondition.distinct<Session, T>()?.let {
inline fun <reified T:QueryCondition.ListOfValueQueryCondition<S>, reified S:Comparable<S>> comparison(): List<QueryCondition> {
QueryCondition.distinct<Session, T, S>()?.let {
val values = it.mapNotNull { session ->
when (this) {
is Limits -> if (session.limit is S) { session.limit as S } else throw PokerAnalyticsException.QueryValueMapUnexpectedValue
@ -79,10 +79,10 @@ sealed class Criteria {
is Blinds -> if (session.blinds is S) { session.blinds as S } else throw PokerAnalyticsException.QueryValueMapUnexpectedValue
else -> null
}
}.distinct()
return compareList<T, S>(values = values).sorted()
}
return compareList<T, S>(values = values)
}
return listOf<T>().sorted()
return listOf<T>()
}
}

@ -23,5 +23,12 @@ enum class TournamentType : RowRepresentable {
}
}
override fun getDisplayName(): String {
return when (this) {
MTT -> "MTT"
SNG -> "SNG"
}
}
override val viewType: Int = RowViewType.TITLE.ordinal
}

@ -15,8 +15,10 @@ import net.pokeranalytics.android.model.realm.*
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterElementRow
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterSectionRow
import net.pokeranalytics.android.util.NULL_TEXT
import net.pokeranalytics.android.util.UserDefaults
import net.pokeranalytics.android.util.extensions.endOfDay
import net.pokeranalytics.android.util.extensions.startOfDay
import net.pokeranalytics.android.util.extensions.toCurrency
import java.text.DateFormatSymbols
import java.util.*
import kotlin.collections.ArrayList
@ -45,10 +47,10 @@ inline fun <reified T : Filterable> List<QueryCondition>.queryWith(query: RealmQ
sealed class QueryCondition : FilterElementRow {
companion object {
fun valueOf(name:String) : QueryCondition {
fun <T:QueryCondition> valueOf(name:String) : T {
val kClass = Class.forName("${QueryCondition::class.qualifiedName}$$name").kotlin
val instance = kClass.objectInstance ?: kClass.java.newInstance()
return instance as QueryCondition
return instance as T
}
inline fun <reified T:Identifiable>getInstance(): QueryCondition {
@ -62,10 +64,15 @@ sealed class QueryCondition : FilterElementRow {
}
}
inline fun < reified T: Filterable, reified S: QueryCondition>distinct(): RealmResults<T>? {
inline fun < reified T: Filterable, reified S: QueryCondition, reified U:Comparable<U>>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)
val distincts = when (T::class) {
String::class, Int::class -> realm.where<T>().distinct(it).findAll().sort(it, Sort.ASCENDING)
else -> realm.where<T>().isNotNull(it).findAll().sort(it, Sort.ASCENDING)
}
realm.close()
return distincts
}
@ -133,7 +140,7 @@ sealed class QueryCondition : FilterElementRow {
return when (this) {
is StaticDataQueryCondition -> label()
is QueryDataCondition<*> -> label()
is AnyBlind -> label()
is ListOfValueQueryCondition<*> -> label()
else -> baseId
}
}
@ -332,9 +339,9 @@ sealed class QueryCondition : FilterElementRow {
object DuringThisMonth: QueryCondition()
object DuringThisYear: QueryCondition()
object TournamentFee: ListOfValueQueryCondition<Double>() {
class TournamentFee: ListOfValueQueryCondition<Double>() {
override fun labelForValue(value: Double): String {
return "$value"
return value.toCurrency(UserDefaults.currency)
}
}
@ -374,7 +381,7 @@ sealed class QueryCondition : FilterElementRow {
realmQuery
}
is AnyBlind -> realmQuery.`in`(fieldName, listOfValues.toTypedArray())
is TournamentFee -> realmQuery.`in`(fieldName, listOfValues.toTypedArray())
is TournamentFee -> realmQuery.equalTo(fieldName, listOfValues.first())
is QueryDataCondition<*> -> realmQuery.`in`(fieldName, listOfValues.toTypedArray())
is StaticDataQueryCondition -> realmQuery.`in`(fieldName, listOfValues.toTypedArray())
is DateQuery -> {

@ -35,7 +35,7 @@ open class FilterCondition() : RealmObject() {
var sectionName: String? = null
val queryCondition : QueryCondition
get() = QueryCondition.valueOf(this.filterName ?: throw PokerAnalyticsException.FilterElementUnknownName)
get() = QueryCondition.valueOf<QueryCondition>(this.filterName ?: throw PokerAnalyticsException.FilterElementUnknownName)
.apply {
this.updateValueMap(this@FilterCondition)
}

Loading…
Cancel
Save