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

feature/top10
Razmig Sarkissian 7 years ago
commit 22d18d0afa
  1. 3
      app/src/main/java/net/pokeranalytics/android/model/filter/Filterable.kt
  2. 2
      app/src/main/java/net/pokeranalytics/android/model/filter/QueryType.kt
  3. 51
      app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt
  4. 7
      app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt
  5. 22
      app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt

@ -3,6 +3,7 @@ package net.pokeranalytics.android.model.filter
import io.realm.RealmModel
import net.pokeranalytics.android.model.realm.ComputableResult
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.model.realm.SessionSet
/**
* We want to be able to store filters in the database:
@ -58,7 +59,7 @@ class FilterHelper {
Session.fieldNameForQueryType(queryType)
}
ComputableResult::class.java -> ComputableResult.fieldNameForQueryType(queryType)
// is SessionSet -> SessionSet.fieldNameForQueryType(queryType)
SessionSet::class.java -> SessionSet.fieldNameForQueryType(queryType)
else -> {
throw UnmanagedFilterField("Filterable type fields are not defined for class ${T::class}")
}

@ -6,7 +6,6 @@ import net.pokeranalytics.android.exceptions.PokerAnalyticsException
import net.pokeranalytics.android.model.realm.FilterElement
import net.pokeranalytics.android.model.realm.FilterElementBlind
import net.pokeranalytics.android.model.realm.Session
import timber.log.Timber
import java.util.*
@ -142,7 +141,6 @@ enum class QueryType(var subType:SubType? = null) {
val fieldName = FilterHelper.fieldNameForQueryType<T>(this)
fieldName ?: throw PokerAnalyticsException.QueryValueMapUnknown
Timber.d(">>>> fi = ${fieldName}")
when (subType) {
SubType.LESS -> {

@ -10,7 +10,6 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.FilterCategoryRow
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterElementRow
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterSectionRow
import org.jetbrains.annotations.TestOnly
import timber.log.Timber
import java.util.*
/**
@ -18,44 +17,13 @@ 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(entity: Filterable) : RealmObject() {
open class Filter : RealmObject() {
constructor() : this(entity = Session)
private var entityType : Int? = Entity.SESSION.ordinal
private var entityType : Int? = FilterableClass.filterableClass(entity = entity).ordinal
private val filterableClass : FilterableClass?
get() {
entityType?.let {
return FilterableClass.values()[it]
}
return null
}
private enum class FilterableClass {
private enum class Entity {
SESSION,
;
companion object {
fun filterableClass(entity: Filterable): FilterableClass {
return when (entity) {
is Session.Companion -> SESSION
else -> throw PokerAnalyticsException.FilterUnhandledEntity
}
}
}
}
companion object {
@TestOnly
inline fun <reified T : Filterable> queryOn(realm: Realm, queries: List<QueryType>): RealmResults<T> {
var realmQuery = realm.where<T>()
queries.forEach {
realmQuery = it.filter<T>(realmQuery)
}
Timber.d(">>>>> query = ${realmQuery.description}")
return realmQuery.findAll()
}
}
@PrimaryKey
@ -71,6 +39,17 @@ open class Filter(entity: Filterable) : RealmObject() {
var filterElements: RealmList<FilterElement> = RealmList()
private set
companion object {
@TestOnly
inline fun <reified T : Filterable> queryOn(realm: Realm, queries: List<QueryType>): RealmResults<T> {
var realmQuery = realm.where<T>()
queries.forEach {
realmQuery = it.filter<T>(realmQuery)
}
return realmQuery.findAll()
}
}
fun createOrUpdateFilterElements(filterElementRows: ArrayList<FilterElementRow>) {
filterElements.clear()
filterElementRows
@ -115,7 +94,7 @@ open class Filter(entity: Filterable) : RealmObject() {
}
inline fun <reified T : Filterable> results(): RealmResults<T> {
var realmQuery : RealmQuery<T> = realm.where<T>()
var realmQuery = realm.where<T>()
this.filterElements.map {
it.queryType
}.forEach {

@ -6,6 +6,7 @@ import io.realm.RealmResults
import io.realm.annotations.Ignore
import io.realm.annotations.LinkingObjects
import net.pokeranalytics.android.model.filter.Filterable
import net.pokeranalytics.android.model.filter.QueryType
import net.pokeranalytics.android.model.interfaces.Timed
import java.util.*
@ -48,13 +49,17 @@ open class SessionSet : RealmObject(), Timed, Filterable {
*/
override var netDuration: Long = 0L
companion object {
companion object : Filterable {
fun newInstance(realm: Realm) : SessionSet {
val sessionSet: SessionSet = realm.createObject(SessionSet::class.java)
return realm.copyToRealm(sessionSet)
}
fun fieldNameForQueryType(queryType: QueryType): String? {
return "sessions." + Session.fieldNameForQueryType(queryType)
}
}
fun computeStats() {

@ -4,6 +4,7 @@ import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
import androidx.core.view.isVisible
import io.realm.RealmResults
import io.realm.Sort
@ -20,6 +21,7 @@ import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.SmoothScrollLinearLayoutManager
import net.pokeranalytics.android.util.Preferences
import java.text.SimpleDateFormat
import java.util.*
class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource, RowRepresentableDelegate {
@ -67,12 +69,27 @@ class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource
disclaimerContainer.isVisible = Preferences.shouldShowDisclaimer(requireContext())
val sdf = SimpleDateFormat("dd/M/yyyy hh:mm")
val betaLimitDate = sdf.parse("17/7/2019 10:00")
newCashGame.setOnClickListener {
if (Date().after(betaLimitDate)) {
this.showEndOfBetaMessage()
return@setOnClickListener
}
SessionActivity.newInstance(requireContext(), false)
newSessionCreated = true
}
newTournament.setOnClickListener {
if (Date().after(betaLimitDate)) {
this.showEndOfBetaMessage()
return@setOnClickListener
}
SessionActivity.newInstance(requireContext(), true)
newSessionCreated = true
}
@ -84,6 +101,11 @@ class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource
}
private fun showEndOfBetaMessage() {
Toast.makeText(context, "Beta has ended. Please update with the Google Play version", Toast.LENGTH_LONG).show()
}
/**
* Init data
*/

Loading…
Cancel
Save