From 0c3cc898da70211c4f91e3fb7ccece55c848f6d4 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Mon, 8 Apr 2019 10:54:26 +0200 Subject: [PATCH] fix issue with filterableClass enum --- .../android/model/realm/Filter.kt | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt index 15ad066e..d4fbc6d8 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt @@ -11,19 +11,18 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.FilterElementRow import net.pokeranalytics.android.ui.view.rowrepresentable.FilterSectionRow import org.jetbrains.annotations.TestOnly import java.util.* +import kotlin.reflect.KClass /** * A [Filter] is the top level representation of the filtering system * It contains a list of [FilterElement] describing the complete query to launch * The [Filter] is working closely with a [Filterable] interface providing the entity we want the query being launched on */ -open class Filter() : RealmObject() { +open class Filter(entity:Filterable) : RealmObject() { - constructor(entity:Filterable) : this() { - this.entityType = FilterableClass.filterableClass(entity = entity).ordinal - } + constructor() : this(entity = Session) - private var entityType : Int? = null + private var entityType : Int? = FilterableClass.filterableClass(entity = entity).ordinal private val filterableClass : FilterableClass? get() { entityType?.let { @@ -49,17 +48,26 @@ open class Filter() : RealmObject() { get() { return when (this) { SESSION -> Session::class.java - else -> throw FilterUnhandledEntityException("this entity is not filterable") +// else -> throw FilterUnhandledEntityException("this entity is not filterable") } } + val filterable : Filterable + get() { + return when (this) { + SESSION -> Session.Companion +// else -> throw FilterUnhandledEntityException("this entity is not filterable") + } + } + } companion object { @TestOnly fun queryOn(realm: Realm, entity: Filterable, queries:List): RealmResults<*> { - var realmQuery : RealmQuery = realm.where(FilterableClass.filterableClass(entity).relatedEntity) + val realmEntity : Class < out RealmObject > = FilterableClass.filterableClass(entity).relatedEntity + var realmQuery : RealmQuery = realm.where(realmEntity) queries.forEach { realmQuery = (it.filter(realmQuery, entity)) } @@ -124,12 +132,13 @@ open class Filter() : RealmObject() { } fun queryOn(entity: Filterable) : RealmResults<*> { - val realmEntity : Class < out RealmObject > = filterableClass?.relatedEntity ?: throw FilterMissingEntityException("this filter has no entity initialized") + val filterableClass : FilterableClass = this.filterableClass ?: throw FilterMissingEntityException("this filter has no entity initialized") + val realmEntity : Class < out RealmObject > = filterableClass.relatedEntity var realmQuery : RealmQuery = realm.where(realmEntity) this.filterElements.map { it.queryType }.forEach { - realmQuery = (it.filter(realmQuery, entity)) + realmQuery = (it.filter(realmQuery, filterableClass.filterable)) } return realmQuery.findAll()