From 2bfc1765530d35f4ec9a2856b82c541a16c1e437 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Thu, 14 Mar 2019 22:29:46 +0100 Subject: [PATCH] filterable update --- .../android/model/filter/FilterComponent.kt | 17 ++++++----------- .../android/model/filter/Filterable.kt | 11 +++++++---- .../android/ui/fragment/HistoryFragment.kt | 4 ++++ 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/filter/FilterComponent.kt b/app/src/main/java/net/pokeranalytics/android/model/filter/FilterComponent.kt index e972e81b..4f5a6b69 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/filter/FilterComponent.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/filter/FilterComponent.kt @@ -3,6 +3,7 @@ package net.pokeranalytics.android.model.filter import io.realm.Realm import io.realm.RealmObject import io.realm.RealmQuery +import io.realm.RealmResults import net.pokeranalytics.android.model.realm.Session enum class FilterComponent { @@ -16,18 +17,12 @@ enum class SessionFilterable(var fieldName:String? = null) : Filterable { TOURNAMENT ; - override fun filter(realm: Realm): RealmQuery<*> { + override fun filter(realmQuery: RealmQuery<*>): RealmQuery { return when (this) { - LIVE -> realm.where(this.relatedEntity).equalTo(this.fieldName, true) - CASH -> realm.where(this.relatedEntity).equalTo(this.fieldName, Session.Type.CASH_GAME.ordinal) - ONLINE -> LIVE.filter(realm).not() - TOURNAMENT -> CASH.filter(realm).not() + LIVE -> realmQuery.equalTo(this.fieldName, true) as RealmQuery + CASH -> realmQuery.equalTo(this.fieldName, Session.Type.CASH_GAME.ordinal) as RealmQuery + ONLINE -> LIVE.filter(realmQuery.not()) + TOURNAMENT -> CASH.filter(realmQuery.not()) } } - - override val relatedEntity: Class - get() { - return Session::class.java - } - } \ No newline at end of file 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 2fb2e17c..05ab4baf 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 @@ -34,8 +34,7 @@ import net.pokeranalytics.android.model.realm.* */ interface Filterable { - fun filter(realm: Realm): RealmQuery<*> - val relatedEntity: Class + fun filter(realmQuery: RealmQuery<*>): RealmQuery } class FilterManager { @@ -44,8 +43,12 @@ class FilterManager { realmResults.where().greaterThan("test", 5).findAll() } - fun test2() { - SessionFilterable.LIVE.filter(Realm.getDefaultInstance()) + fun filter(realm:Realm, relatedEntity: Class, queries:List): RealmResults<*> { + var realmQuery = realm.where(relatedEntity) + queries.forEach { + realmQuery = it.filter(realmQuery).and() + } + return realmQuery.findAll() } } // diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt index 175adfc9..5ea620d6 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt @@ -13,6 +13,9 @@ import kotlinx.android.synthetic.main.fragment_history.* import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import net.pokeranalytics.android.R +import net.pokeranalytics.android.model.filter.FilterManager +import net.pokeranalytics.android.model.filter.Filterable +import net.pokeranalytics.android.model.filter.SessionFilterable import net.pokeranalytics.android.model.interfaces.Manageable import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.ui.activity.SessionActivity @@ -92,6 +95,7 @@ class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource * Init data */ private fun initData() { + //realmSessions = FilterManager().filter(getRealm(), Session::class.java, arrayListOf(SessionFilterable.ONLINE, SessionFilterable.CASH)).sort("creationDate", Sort.DESCENDING) as RealmResults realmSessions = getRealm().where().findAll().sort("creationDate", Sort.DESCENDING) val viewManager = SmoothScrollLinearLayoutManager(requireContext())