From ceaff5b02cbdd6a01ea46dbbf6f072e2a7114efd Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Thu, 14 Mar 2019 18:10:22 +0100 Subject: [PATCH] filterable --- .../android/model/filter/FilterComponent.kt | 28 +++++++++++++++++++ .../android/model/filter/Filterable.kt | 11 +++++++- 2 files changed, 38 insertions(+), 1 deletion(-) 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 094521d0..e972e81b 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 @@ -1,5 +1,33 @@ package net.pokeranalytics.android.model.filter +import io.realm.Realm +import io.realm.RealmObject +import io.realm.RealmQuery +import net.pokeranalytics.android.model.realm.Session + enum class FilterComponent { +} + +enum class SessionFilterable(var fieldName:String? = null) : Filterable { + LIVE("bankroll.live"), + CASH("type"), + ONLINE, + TOURNAMENT + ; + + override fun filter(realm: Realm): 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() + } + } + + 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 edd10a97..2fb2e17c 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 @@ -1,7 +1,11 @@ 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.LiveData +import net.pokeranalytics.android.model.realm.* /** * We want to be able to store filters in the database: @@ -30,7 +34,8 @@ import io.realm.RealmResults */ interface Filterable { - + fun filter(realm: Realm): RealmQuery<*> + val relatedEntity: Class } class FilterManager { @@ -38,6 +43,10 @@ class FilterManager { fun test(realmResults: RealmResults) { realmResults.where().greaterThan("test", 5).findAll() } + + fun test2() { + SessionFilterable.LIVE.filter(Realm.getDefaultInstance()) + } } // //fun MutableList.filter(filter: FilterComponent) : List {