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

feature/top10
Aurelien Hubert 7 years ago
commit 5a890c497a
  1. 73
      app/src/main/java/net/pokeranalytics/android/model/comparison/Comparator.kt
  2. 18
      app/src/main/java/net/pokeranalytics/android/model/migrations/PokerAnalyticsMigration.kt

@ -0,0 +1,73 @@
package net.pokeranalytics.android.model.comparison
import io.realm.Realm
import io.realm.RealmQuery
import io.realm.kotlin.where
import net.pokeranalytics.android.exceptions.PokerAnalyticsException
import net.pokeranalytics.android.model.filter.Filterable
import net.pokeranalytics.android.model.filter.QueryCondition
enum class Comparator {
DAY_OF_WEEK,
MONTH,
BLIND,
;
val queryConditions: List<QueryCondition>
get() {
return when (this) {
DAY_OF_WEEK -> listOf()
else -> throw PokerAnalyticsException.QueryTypeUnhandled
}
}
}
fun List<Comparator>.combined(): List<List<QueryCondition>> {
val comparatorList = ArrayList<List<QueryCondition>>()
this.forEach {
comparatorList.add(it.queryConditions)
}
return getCombinations(comparatorList)
}
inline fun <reified T : Filterable> List<QueryCondition>.query(realm: Realm): RealmQuery<T> {
var realmQuery = realm.where<T>()
this.forEach {
realmQuery = it.filter(realmQuery)
}
return realmQuery
}
fun <T> getCombinations(lists: List<List<T>>): List<List<T>> {
var combinations: MutableSet<List<T>> = HashSet()
var newCombinations: MutableSet<List<T>>
var index = 0
// extract each of the integers in the first list
// and add each to ints as a new list
for (i in lists[0]) {
val newList = ArrayList<T>()
newList.add(i)
combinations.add(newList)
}
index++
while (index < lists.size) {
val nextList = lists[index]
newCombinations = HashSet()
for (first in combinations) {
for (second in nextList) {
val newList = ArrayList<T>()
newList.addAll(first)
newList.add(second)
newCombinations.add(newList)
}
}
combinations = newCombinations
index++
}
return combinations.toList()
}

@ -35,9 +35,6 @@ class PokerAnalyticsMigration : RealmMigration {
// Migrate to version 2 // Migrate to version 2
if (currentVersion == 1) { if (currentVersion == 1) {
Timber.d("*** Running migration ${currentVersion + 1}") Timber.d("*** Running migration ${currentVersion + 1}")
schema.get("Session")?.let {
it.addField("blinds", String::class.java).setNullable("blinds", true)
}
schema.rename("FilterElement", "FilterCondition") schema.rename("FilterElement", "FilterCondition")
schema.get("Filter")?.let { schema.get("Filter")?.let {
it.renameField("filterElements", "filterConditions") it.renameField("filterElements", "filterConditions")
@ -52,7 +49,20 @@ class PokerAnalyticsMigration : RealmMigration {
if (currentVersion == 2) { if (currentVersion == 2) {
Timber.d("*** Running migration ${currentVersion + 1}") Timber.d("*** Running migration ${currentVersion + 1}")
schema.rename("Report", "ReportSetup") schema.rename("Report", "ReportSetup")
currentVersion++
schema.get("Session")?.let {
it.addField("blinds", String::class.java).setNullable("blinds", true)
}
schema.get("FilterCondition")?.let {
it.addRealmListField("booleanValues", Boolean::class.java).setNullable("booleanValues", true)
}
schema.get("FilterCondition")?.let {
it.removeField("blindValues")
}
currentVersion++
} }
} }

Loading…
Cancel
Save