Fix Criteria sorting

feature/top10
Laurent 7 years ago
parent 64eac7b8cc
commit 6f12ae70de
  1. 22
      app/src/main/java/net/pokeranalytics/android/model/Criteria.kt
  2. 6
      app/src/main/java/net/pokeranalytics/android/model/filter/Query.kt

@ -88,7 +88,6 @@ sealed class Criteria {
abstract class RealmCriteria : Criteria() { abstract class RealmCriteria : Criteria() {
inline fun <reified T: NameManageable> comparison(): List<Query> { inline fun <reified T: NameManageable> comparison(): List<Query> {
return compare<QueryCondition.QueryDataCondition<NameManageable>, T>() return compare<QueryCondition.QueryDataCondition<NameManageable>, T>()
// .sorted()
} }
} }
@ -111,7 +110,7 @@ sealed class Criteria {
else -> null else -> null
} }
}.distinct() }.distinct()
return compareList<T, S>(values = values)//.sorted() return compareList<T, S>(values = values)
} }
return listOf() return listOf()
} }
@ -200,13 +199,13 @@ sealed class Criteria {
realm.where<Session>().sort("year", Sort.ASCENDING).findFirst()?.year?.let { realm.where<Session>().sort("year", Sort.ASCENDING).findFirst()?.year?.let {
for (index in 0..(yearNow - it)) { for (index in 0..(yearNow - it)) {
val yearCondition = QueryCondition.AnyYear().apply { val yearCondition = QueryCondition.AnyYear().apply {
listOfValues = arrayListOf(yearNow - index) listOfValues = arrayListOf(it + index)
} }
years.add(Query(yearCondition)) years.add(Query(yearCondition))
} }
} }
realm.close() realm.close()
years//.sorted() years
} }
is Blinds -> comparison<QueryCondition.AnyBlind, String >() is Blinds -> comparison<QueryCondition.AnyBlind, String >()
else -> throw PokerAnalyticsException.QueryTypeUnhandled else -> throw PokerAnalyticsException.QueryTypeUnhandled
@ -215,28 +214,29 @@ sealed class Criteria {
companion object { companion object {
inline fun <reified S : QueryCondition.QueryDataCondition<NameManageable >, reified T : NameManageable> compare(): List<Query> { inline fun <reified S : QueryCondition.QueryDataCondition<NameManageable >, reified T : NameManageable> compare(): List<Query> {
val objects = mutableListOf<Query>() val objects = mutableListOf<S>()
val realm = Realm.getDefaultInstance() val realm = Realm.getDefaultInstance()
realm.where<T>().findAll().forEach { realm.where<T>().findAll().forEach {
val condition = (QueryCondition.getInstance<T>() as S).apply { val condition = (QueryCondition.getInstance<T>() as S).apply {
setObject(it) setObject(it)
} }
val query = Query(condition) objects.add(condition)
objects.add(query)
} }
objects.sorted()
realm.close() realm.close()
return objects return objects.map { Query(it) }
} }
inline fun < reified S : QueryCondition.ListOfValues<T>, T:Any > compareList(values:List<T>): List<Query> { inline fun < reified S : QueryCondition.ListOfValues<T>, T:Any > compareList(values:List<T>): List<Query> {
val objects = mutableListOf<Query>() val objects = mutableListOf<S>()
values.forEach { values.forEach {
val condition =(S::class.java.newInstance()).apply { val condition =(S::class.java.newInstance()).apply {
listOfValues = arrayListOf(it) listOfValues = arrayListOf(it)
} }
objects.add(Query(condition)) objects.add(condition)
} }
return objects objects.sorted()
return objects.map { Query(it) }
} }
} }
} }

@ -6,11 +6,7 @@ fun List<Query>.mapFirstCondition() : List<QueryCondition> {
return this.map { it.conditions.first() } return this.map { it.conditions.first() }
} }
class Query : Comparable<QueryCondition> { class Query {
override fun compareTo(other: QueryCondition): Int {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
constructor(vararg elements: QueryCondition) { constructor(vararg elements: QueryCondition) {
if (elements.size > 0) { if (elements.size > 0) {

Loading…
Cancel
Save