filterable update

feature/top10
Razmig Sarkissian 7 years ago
parent fd10622a9f
commit 2bfc176553
  1. 17
      app/src/main/java/net/pokeranalytics/android/model/filter/FilterComponent.kt
  2. 11
      app/src/main/java/net/pokeranalytics/android/model/filter/Filterable.kt
  3. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt

@ -3,6 +3,7 @@ package net.pokeranalytics.android.model.filter
import io.realm.Realm import io.realm.Realm
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.RealmQuery import io.realm.RealmQuery
import io.realm.RealmResults
import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.Session
enum class FilterComponent { enum class FilterComponent {
@ -16,18 +17,12 @@ enum class SessionFilterable(var fieldName:String? = null) : Filterable {
TOURNAMENT TOURNAMENT
; ;
override fun filter(realm: Realm): RealmQuery<*> { override fun filter(realmQuery: RealmQuery<*>): RealmQuery<out RealmObject> {
return when (this) { return when (this) {
LIVE -> realm.where(this.relatedEntity).equalTo(this.fieldName, true) LIVE -> realmQuery.equalTo(this.fieldName, true) as RealmQuery<out RealmObject>
CASH -> realm.where(this.relatedEntity).equalTo(this.fieldName, Session.Type.CASH_GAME.ordinal) CASH -> realmQuery.equalTo(this.fieldName, Session.Type.CASH_GAME.ordinal) as RealmQuery<out RealmObject>
ONLINE -> LIVE.filter(realm).not() ONLINE -> LIVE.filter(realmQuery.not())
TOURNAMENT -> CASH.filter(realm).not() TOURNAMENT -> CASH.filter(realmQuery.not())
} }
} }
override val relatedEntity: Class<out RealmObject>
get() {
return Session::class.java
}
} }

@ -34,8 +34,7 @@ import net.pokeranalytics.android.model.realm.*
*/ */
interface Filterable { interface Filterable {
fun filter(realm: Realm): RealmQuery<*> fun filter(realmQuery: RealmQuery<*>): RealmQuery<out RealmObject>
val relatedEntity: Class<out RealmObject>
} }
class FilterManager { class FilterManager {
@ -44,8 +43,12 @@ class FilterManager {
realmResults.where().greaterThan("test", 5).findAll() realmResults.where().greaterThan("test", 5).findAll()
} }
fun test2() { fun filter(realm:Realm, relatedEntity: Class<out RealmObject>, queries:List<Filterable>): RealmResults<*> {
SessionFilterable.LIVE.filter(Realm.getDefaultInstance()) var realmQuery = realm.where(relatedEntity)
queries.forEach {
realmQuery = it.filter(realmQuery).and()
}
return realmQuery.findAll()
} }
} }
// //

@ -13,6 +13,9 @@ import kotlinx.android.synthetic.main.fragment_history.*
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import net.pokeranalytics.android.R 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.interfaces.Manageable
import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.activity.SessionActivity import net.pokeranalytics.android.ui.activity.SessionActivity
@ -92,6 +95,7 @@ class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource
* Init data * Init data
*/ */
private fun initData() { private fun initData() {
//realmSessions = FilterManager().filter(getRealm(), Session::class.java, arrayListOf<Filterable>(SessionFilterable.ONLINE, SessionFilterable.CASH)).sort("creationDate", Sort.DESCENDING) as RealmResults<Session>
realmSessions = getRealm().where<Session>().findAll().sort("creationDate", Sort.DESCENDING) realmSessions = getRealm().where<Session>().findAll().sort("creationDate", Sort.DESCENDING)
val viewManager = SmoothScrollLinearLayoutManager(requireContext()) val viewManager = SmoothScrollLinearLayoutManager(requireContext())

Loading…
Cancel
Save