diff --git a/app/src/main/java/net/pokeranalytics/android/model/filter/Filterable.kt b/app/src/main/java/net/pokeranalytics/android/model/filter/Filterable.kt index addc9e66..5714cb00 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/filter/Filterable.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/filter/Filterable.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}") } diff --git a/app/src/main/java/net/pokeranalytics/android/model/filter/QueryType.kt b/app/src/main/java/net/pokeranalytics/android/model/filter/QueryType.kt index 99193403..40a66fb3 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/filter/QueryType.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/filter/QueryType.kt @@ -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(this) fieldName ?: throw PokerAnalyticsException.QueryValueMapUnknown - Timber.d(">>>> fi = ${fieldName}") when (subType) { SubType.LESS -> { diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt index 28085548..a880712a 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt @@ -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 queryOn(realm: Realm, queries: List): RealmResults { - var realmQuery = realm.where() - queries.forEach { - realmQuery = it.filter(realmQuery) - } - Timber.d(">>>>> query = ${realmQuery.description}") - return realmQuery.findAll() - } } @PrimaryKey @@ -71,6 +39,17 @@ open class Filter(entity: Filterable) : RealmObject() { var filterElements: RealmList = RealmList() private set + companion object { + @TestOnly + inline fun queryOn(realm: Realm, queries: List): RealmResults { + var realmQuery = realm.where() + queries.forEach { + realmQuery = it.filter(realmQuery) + } + return realmQuery.findAll() + } + } + fun createOrUpdateFilterElements(filterElementRows: ArrayList) { filterElements.clear() filterElementRows @@ -115,7 +94,7 @@ open class Filter(entity: Filterable) : RealmObject() { } inline fun results(): RealmResults { - var realmQuery : RealmQuery = realm.where() + var realmQuery = realm.where() this.filterElements.map { it.queryType }.forEach { diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt index ea29f835..416d7e01 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/SessionSet.kt @@ -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,12 +49,16 @@ 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 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) + } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt index 83ba73b6..6379eae1 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt @@ -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 */