Merge branch 'dev' of gitlab.com:stax-river/poker-analytics into dev

feature/top10
Laurent 7 years ago
commit fa4681ed9f
  1. 3
      .gitlab-ci.yml
  2. 2
      app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/RealmFilterInstrumentedUnitTest.kt
  3. 28
      app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt

@ -42,6 +42,9 @@ assembleDebug:
instrumentedTests:
stage: test
only:
refs:
- master
script:
- wget --quiet --output-document=android-wait-for-emulator https://raw.githubusercontent.com/travis-ci/travis-cookbooks/0f497eb71291b52a703143c5cd63a217c8766dc9/community-cookbooks/android-sdk/files/default/android-wait-for-emulator
- chmod +x android-wait-for-emulator

@ -50,7 +50,7 @@ class RealmFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() {
val newRealm = this.mockRealm
newRealm.where(Filter::class.java).equalTo("name", "testSaveLoadCashFilter").findFirst()?.let { foundFilter ->
val sessions = foundFilter.queryOn(Session)
val sessions = foundFilter.results()
Assert.assertEquals(1, sessions.size)
sessions[0]?.run {

@ -17,13 +17,11 @@ 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() : RealmObject() {
open class Filter(entity:Filterable) : RealmObject() {
constructor(entity:Filterable) : this() {
this.entityType = FilterableClass.filterableClass(entity = entity).ordinal
}
constructor() : this(entity = Session)
private var entityType : Int? = null
private var entityType : Int? = FilterableClass.filterableClass(entity = entity).ordinal
private val filterableClass : FilterableClass?
get() {
entityType?.let {
@ -49,17 +47,26 @@ open class Filter() : RealmObject() {
get() {
return when (this) {
SESSION -> Session::class.java
else -> throw FilterUnhandledEntityException("this entity is not filterable")
// else -> throw FilterUnhandledEntityException("this entity is not filterable")
}
}
val filterable : Filterable
get() {
return when (this) {
SESSION -> Session.Companion
// else -> throw FilterUnhandledEntityException("this entity is not filterable")
}
}
}
companion object {
@TestOnly
fun queryOn(realm: Realm, entity: Filterable, queries:List<QueryType>): RealmResults<*> {
var realmQuery : RealmQuery<out RealmObject> = realm.where(FilterableClass.filterableClass(entity).relatedEntity)
val realmEntity : Class < out RealmObject > = FilterableClass.filterableClass(entity).relatedEntity
var realmQuery : RealmQuery<out RealmObject> = realm.where(realmEntity)
queries.forEach {
realmQuery = (it.filter(realmQuery, entity))
}
@ -123,13 +130,14 @@ open class Filter() : RealmObject() {
return filterElementRow.contains(filtered)
}
fun queryOn(entity: Filterable) : RealmResults<*> {
val realmEntity : Class < out RealmObject > = filterableClass?.relatedEntity ?: throw FilterMissingEntityException("this filter has no entity initialized")
fun results(): RealmResults<*> {
val filterableClass : FilterableClass = this.filterableClass ?: throw FilterMissingEntityException("this filter has no entity initialized")
val realmEntity : Class < out RealmObject > = filterableClass.relatedEntity
var realmQuery : RealmQuery<out RealmObject> = realm.where(realmEntity)
this.filterElements.map {
it.queryType
}.forEach {
realmQuery = (it.filter(realmQuery, entity))
realmQuery = (it.filter(realmQuery, filterableClass.filterable))
}
return realmQuery.findAll()

Loading…
Cancel
Save