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.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<out RealmObject> {
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<out RealmObject>
CASH -> realmQuery.equalTo(this.fieldName, Session.Type.CASH_GAME.ordinal) as RealmQuery<out RealmObject>
ONLINE -> LIVE.filter(realmQuery.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 {
fun filter(realm: Realm): RealmQuery<*>
val relatedEntity: Class<out RealmObject>
fun filter(realmQuery: RealmQuery<*>): RealmQuery<out RealmObject>
}
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<out RealmObject>, queries:List<Filterable>): RealmResults<*> {
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.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<Filterable>(SessionFilterable.ONLINE, SessionFilterable.CASH)).sort("creationDate", Sort.DESCENDING) as RealmResults<Session>
realmSessions = getRealm().where<Session>().findAll().sort("creationDate", Sort.DESCENDING)
val viewManager = SmoothScrollLinearLayoutManager(requireContext())

Loading…
Cancel
Save