From 37e6c980085fd14ed10a50fda937744a0224c500 Mon Sep 17 00:00:00 2001 From: Laurent Date: Mon, 8 Apr 2019 17:27:20 +0200 Subject: [PATCH] cleanup --- .../android/model/filter/Filterable.kt | 3 +- .../android/model/filter/QueryType.kt | 2 - .../android/model/realm/Filter.kt | 49 ++++++------------- .../android/model/realm/SessionSet.kt | 15 ++++-- 4 files changed, 26 insertions(+), 43 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/filter/Filterable.kt b/app/src/main/java/net/pokeranalytics/android/model/filter/Filterable.kt index addc9e66..5714cb00 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/filter/Filterable.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/filter/Filterable.kt @@ -3,6 +3,7 @@ package net.pokeranalytics.android.model.filter import io.realm.RealmModel import net.pokeranalytics.android.model.realm.ComputableResult import net.pokeranalytics.android.model.realm.Session +import net.pokeranalytics.android.model.realm.SessionSet /** * We want to be able to store filters in the database: @@ -58,7 +59,7 @@ class FilterHelper { Session.fieldNameForQueryType(queryType) } ComputableResult::class.java -> ComputableResult.fieldNameForQueryType(queryType) -// is SessionSet -> SessionSet.fieldNameForQueryType(queryType) + SessionSet::class.java -> SessionSet.fieldNameForQueryType(queryType) else -> { throw UnmanagedFilterField("Filterable type fields are not defined for class ${T::class}") } diff --git a/app/src/main/java/net/pokeranalytics/android/model/filter/QueryType.kt b/app/src/main/java/net/pokeranalytics/android/model/filter/QueryType.kt index 1f22c794..8ecfa3d4 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/filter/QueryType.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/filter/QueryType.kt @@ -6,7 +6,6 @@ import net.pokeranalytics.android.exceptions.PokerAnalyticsException import net.pokeranalytics.android.model.realm.FilterElement import net.pokeranalytics.android.model.realm.FilterElementBlind import net.pokeranalytics.android.model.realm.Session -import timber.log.Timber import java.util.* @@ -142,7 +141,6 @@ enum class QueryType(var subType:SubType? = null) { val fieldName = FilterHelper.fieldNameForQueryType(this) fieldName ?: throw PokerAnalyticsException.QueryValueMapUnknown - Timber.d(">>>> fi = ${fieldName}") this.subType?.let { subType -> return when (subType) { 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 28085548..64e21021 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 @@ -10,7 +10,6 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.FilterCategoryRow import net.pokeranalytics.android.ui.view.rowrepresentable.FilterElementRow import net.pokeranalytics.android.ui.view.rowrepresentable.FilterSectionRow import org.jetbrains.annotations.TestOnly -import timber.log.Timber import java.util.* /** @@ -18,44 +17,13 @@ import java.util.* * 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(entity: Filterable) : RealmObject() { +open class Filter : RealmObject() { - constructor() : this(entity = Session) + private var entityType : Int? = Entity.SESSION.ordinal - private var entityType : Int? = FilterableClass.filterableClass(entity = entity).ordinal - private val filterableClass : FilterableClass? - get() { - entityType?.let { - return FilterableClass.values()[it] - } - return null - } - - private enum class FilterableClass { + private enum class Entity { SESSION, ; - - companion object { - fun filterableClass(entity: Filterable): FilterableClass { - return when (entity) { - is Session.Companion -> SESSION - else -> throw PokerAnalyticsException.FilterUnhandledEntity - } - } - } - - } - - companion object { - @TestOnly - inline fun queryOn(realm: Realm, queries: List): RealmResults { - var realmQuery = realm.where() - queries.forEach { - realmQuery = it.filter(realmQuery) - } - Timber.d(">>>>> query = ${realmQuery.description}") - return realmQuery.findAll() - } } @PrimaryKey @@ -71,6 +39,17 @@ open class Filter(entity: Filterable) : RealmObject() { var filterElements: RealmList = RealmList() private set + companion object { + @TestOnly + inline fun queryOn(realm: Realm, queries: List): RealmResults { + var realmQuery = realm.where() + queries.forEach { + realmQuery = it.filter(realmQuery) + } + return realmQuery.findAll() + } + } + fun createOrUpdateFilterElements(filterElementRows: ArrayList) { filterElements.clear() filterElementRows diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt index ea29f835..416d7e01 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt @@ -6,6 +6,7 @@ import io.realm.RealmResults import io.realm.annotations.Ignore import io.realm.annotations.LinkingObjects import net.pokeranalytics.android.model.filter.Filterable +import net.pokeranalytics.android.model.filter.QueryType import net.pokeranalytics.android.model.interfaces.Timed import java.util.* @@ -48,12 +49,16 @@ open class SessionSet : RealmObject(), Timed, Filterable { */ override var netDuration: Long = 0L - companion object { + companion object : Filterable { - fun newInstance(realm: Realm) : SessionSet { - val sessionSet: SessionSet = realm.createObject(SessionSet::class.java) - return realm.copyToRealm(sessionSet) - } + fun newInstance(realm: Realm) : SessionSet { + val sessionSet: SessionSet = realm.createObject(SessionSet::class.java) + return realm.copyToRealm(sessionSet) + } + + fun fieldNameForQueryType(queryType: QueryType): String? { + return "sessions." + Session.fieldNameForQueryType(queryType) + } }