From 4bab8f96d1f72320735209f5090969a99bb79685 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Fri, 19 Apr 2019 15:03:41 +0200 Subject: [PATCH 1/3] fix issues with blinds --- .../net/pokeranalytics/android/model/Criteria.kt | 3 ++- .../android/model/comparison/Comparator.kt | 13 +------------ .../ui/view/rowrepresentable/FilterCategoryRow.kt | 7 ++----- .../ui/view/rowrepresentable/FilterSectionRow.kt | 13 +------------ 4 files changed, 6 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/Criteria.kt b/app/src/main/java/net/pokeranalytics/android/model/Criteria.kt index 48c6b3e7..0ac16179 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/Criteria.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/Criteria.kt @@ -89,7 +89,8 @@ sealed class Criteria { is Blinds -> { val blinds = arrayListOf() val realm = Realm.getDefaultInstance() - realm.where().distinct("blinds", "bankroll.currency.code").findAll().sort("cgSmallBlind", Sort.ASCENDING).map { + val query = realm.where().distinct("blinds").findAll().sort("cgSmallBlind", Sort.ASCENDING) + query.map { it.blinds?.let { stake -> blinds.add(QueryCondition.BLIND().apply { blind = stake diff --git a/app/src/main/java/net/pokeranalytics/android/model/comparison/Comparator.kt b/app/src/main/java/net/pokeranalytics/android/model/comparison/Comparator.kt index 0b3d4b17..6a89abe0 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/comparison/Comparator.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/comparison/Comparator.kt @@ -55,18 +55,7 @@ enum class Comparator { TOURNAMENT -> listOf(QueryCondition.TOURNAMENT) LIVE -> listOf(QueryCondition.LIVE) ONLINE -> listOf(QueryCondition.ONLINE) - BLIND -> { - val blinds = arrayListOf() - val realm = Realm.getDefaultInstance() - realm.where().distinct("blinds", "bankroll.currency.code").findAll().sort("cgSmallBlind", Sort.ASCENDING).map { - it.blinds?.let { stake -> - blinds.add(QueryCondition.BLIND().apply { blind = stake - hasDefaultCurrency = it.hasDefaultCurrency }) - } - } - realm.close() - blinds - } + BLIND -> Criteria.Blinds.queryConditions BANKROLL -> Criteria.Bankrolls.queryConditions GAME -> Criteria.Games.queryConditions TOURNAMENT_NAME-> Criteria.TournamentNames.queryConditions diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategoryRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategoryRow.kt index 3a4cf3a0..3bdaf4e4 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategoryRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategoryRow.kt @@ -60,11 +60,8 @@ enum class FilterCategoryRow(override val resId: Int?, override val viewType: In ) TOURNAMENT -> arrayListOf( TOURNAMENT_TYPE, - COMPLETION_PERCENTAGE, - PLACE, - PLAYERS_COUNT, - TOURNAMENT_RE_BUY_COUNT, - BUY_IN + TOURNAMENT_NAME, + TOURNAMENT_FEATURE ) ONLINE -> arrayListOf( MULTI_TABLING diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt index 68faf364..ea802476 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt @@ -104,18 +104,7 @@ enum class FilterSectionRow(override val resId: Int?) : RowRepresentable { SESSIONS -> arrayListOf(QueryCondition.LAST_GAMES(), QueryCondition.LAST_SESSIONS()) // Cash - /* - BLIND -> { - val blinds = arrayListOf() - val realm = Realm.getDefaultInstance() - realm.where().distinct("blind", "bankroll.currency.code").findAll().sort("cgSmallBlind", Sort.ASCENDING).map { - it.blinds?.let { stake -> - blinds.add(Blind(stake, it.hasDefaultCurrency)) - } - } - realm.close() - blinds - }*/ + BLIND -> Criteria.Blinds.queryConditions CASH_RE_BUY_COUNT -> arrayListOf( QueryCondition.MAX_RE_BUY(), QueryCondition.MIN_RE_BUY() From d1a446107375449771e23c8f86b744cfa89ab87b Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Fri, 19 Apr 2019 15:26:46 +0200 Subject: [PATCH 2/3] add day period comparator --- .../net/pokeranalytics/android/model/comparison/Comparator.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/comparison/Comparator.kt b/app/src/main/java/net/pokeranalytics/android/model/comparison/Comparator.kt index 6a89abe0..6e0d8010 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/comparison/Comparator.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/comparison/Comparator.kt @@ -50,7 +50,7 @@ enum class Comparator { MONTH_OF_YEAR -> Criteria.monthOfYear.queryConditions DAY_OF_WEEK -> Criteria.dayOfWeek.queryConditions YEAR -> Criteria.Year.queryConditions - DAY_PERIOD -> listOf(QueryCondition.WEEK_DAY, QueryCondition.WEEK_END) + DAY_PERIOD -> Criteria.dayPeriod.queryConditions CASH -> listOf(QueryCondition.CASH) TOURNAMENT -> listOf(QueryCondition.TOURNAMENT) LIVE -> listOf(QueryCondition.LIVE) From f67429b678374f3c9a24555d461f7cd003c4eba8 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Fri, 19 Apr 2019 15:54:21 +0200 Subject: [PATCH 3/3] some clean up --- .../pokeranalytics/android/model/TableSize.kt | 8 ++ .../android/model/filter/QueryCondition.kt | 121 ++++++++---------- .../view/rowrepresentable/FilterElementRow.kt | 2 +- .../view/rowrepresentable/FilterSectionRow.kt | 2 +- 4 files changed, 65 insertions(+), 68 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/TableSize.kt b/app/src/main/java/net/pokeranalytics/android/model/TableSize.kt index 165ed238..c1bba39f 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/TableSize.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/TableSize.kt @@ -14,6 +14,14 @@ class TableSize(var numberOfPlayer: Int, var rowViewType: Int = RowViewType.TITL } } + override fun getDisplayName(): String { + return if (this.numberOfPlayer == 2) { + return "HU" + } else { + "${this.numberOfPlayer}-max" + } + } + override val resId: Int? get() { return if (this.numberOfPlayer == 2) { diff --git a/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt b/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt index 6191dcda..cc524dff 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt @@ -50,6 +50,37 @@ inline fun List.queryWith(query: RealmQ sealed class QueryCondition : FilterElementRow { + companion object { + fun valueOf(name:String) : QueryCondition { + val kClass = Class.forName("${QueryCondition::class.qualifiedName}$$name").kotlin + val instance = kClass.objectInstance ?: kClass.java.newInstance() + return instance as QueryCondition + } + + inline fun getInstance(): QueryCondition { + return when (T::class.java) { + Bankroll::class.java -> BANKROLL() + Game::class.java -> GAME() + Location::class.java -> LOCATION() + TournamentName::class.java -> TOURNAMENT_NAME() + TournamentFeature::class.java -> ANY_TOURNAMENT_FEATURES() + else -> throw PokerAnalyticsException.QueryTypeUnhandled + } + } + + inline fun < reified T: Filterable, reified S: QueryCondition>distinct(): RealmResults? { + FilterHelper.fieldNameForQueryType(S::class.java)?.let { + val realm = Realm.getDefaultInstance() + val distincts = realm.where().distinct(it).findAll().sort(it, Sort.ASCENDING) + realm.close() + return distincts + } + return null + } + + + } + interface Valuable > { var values: ArrayList? } @@ -123,14 +154,6 @@ sealed class QueryCondition : FilterElementRow { override var filterSectionRow: FilterSectionRow = FilterSectionRow.CASH_TOURNAMENT - open class OperationQueryCondition : QueryCondition(), asDoubleValue { - override var doubleValues = ArrayList() - } - - open class BetweenQueryCondition : QueryCondition(), asListOfDouble { - override var doubleValues = ArrayList() - } - abstract class QueryDataCondition < T: NameManageable > : QueryCondition(), asListOfString { fun setObject(dataObject: T) { this.dataObject = dataObject @@ -161,39 +184,6 @@ sealed class QueryCondition : FilterElementRow { } } - companion object { - fun valueOf(name:String) : QueryCondition { - val kClass = Class.forName("${QueryCondition::class.qualifiedName}$$name").kotlin - val instance = kClass.objectInstance ?: kClass.java.newInstance() - return instance as QueryCondition - } - - inline fun getInstance(): QueryCondition { - return when (T::class.java) { - Bankroll::class.java -> BANKROLL() - Game::class.java -> GAME() - Location::class.java -> LOCATION() - TournamentName::class.java -> TOURNAMENT_NAME() - TournamentFeature::class.java -> ANY_TOURNAMENT_FEATURES() - else -> throw PokerAnalyticsException.QueryTypeUnhandled - } - } - - inline fun < reified T: Filterable, reified S: QueryCondition>distinct(): RealmResults? { - FilterHelper.fieldNameForQueryType(S::class.java)?.let { - val realm = Realm.getDefaultInstance() - val distincts = realm.where().distinct(it).findAll().sort(it, Sort.ASCENDING) - realm.close() - return distincts - } - return null - } - - - } - - //open val name: String = this::class.simpleName ?: throw PokerAnalyticsException.FilterElementUnknownName - abstract class SingleValueQueryCondition : QueryCondition(), asIntValue { override var doubleValues = ArrayList() } @@ -201,7 +191,7 @@ sealed class QueryCondition : FilterElementRow { abstract class StaticDataQueryCondition : QueryCondition(), asListOfInt { var data : RowRepresentable? = null override var doubleValues = ArrayList() - abstract fun labelForValue(value:Int): String? + abstract fun labelForValue(value:Int): String fun label(): String { return when (intValues.size) { @@ -212,6 +202,23 @@ sealed class QueryCondition : FilterElementRow { } } + open class OperationQueryCondition : QueryCondition(), asDoubleValue { + override var doubleValues = ArrayList() + } + + open class BetweenQueryCondition : QueryCondition(), asListOfDouble { + override var doubleValues = ArrayList() + } + + open class DateQuery: QueryCondition(), asDateValue { + override var dateValue: Date = Date() + override val showTime: Boolean = false + } + + open class TimeQuery: DateQuery() { + override val showTime: Boolean = true + } + object LIVE : QueryCondition() object CASH : QueryCondition() object ONLINE : QueryCondition() @@ -224,22 +231,14 @@ sealed class QueryCondition : FilterElementRow { class LOCATION: QueryDataCondition() { override val entity: Class = Location::class.java } class LIMIT: StaticDataQueryCondition() { - override fun labelForValue(value: Int): String? { - return Limit.values()[value].longName + override fun labelForValue(value: Int): String { + return Limit.values()[value].getDisplayName() } } class TABLE_SIZE: StaticDataQueryCondition() { - val tableSize: TableSize get() { return TableSize(intValues.first()) } - //TODO dynamize this - override val resId: Int? = R.string.max - - override fun localizedTitle(context: Context): String { - return this.tableSize.localizedTitle(context) - } - - override fun labelForValue(value: Int): String? { - return null + override fun labelForValue(value: Int): String { + return TableSize(value).getDisplayName() } } @@ -287,18 +286,8 @@ sealed class QueryCondition : FilterElementRow { doubleValues.add(rightValue) } } - class MIN_RE_BUY: OperationQueryCondition(), More - class MAX_RE_BUY: OperationQueryCondition(), Less - - // Dates - open class DateQuery: QueryCondition(), asDateValue { - override var dateValue: Date = Date() - override val showTime: Boolean = false - } - - open class TimeQuery: DateQuery() { - override val showTime: Boolean = true - } + class MIN_RE_BUY: OperationQueryCondition(), More, Amount + class MAX_RE_BUY: OperationQueryCondition(), Less, Amount class STARTED_FROM_DATE: DateQuery() class STARTED_TO_DATE: DateQuery(), Less diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterElementRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterElementRow.kt index 7fefbff4..f0a5f15b 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterElementRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterElementRow.kt @@ -49,7 +49,7 @@ interface FilterElementRow : RowRepresentable { is QueryCondition.MAX_RE_BUY -> R.string.maximum is QueryCondition.More -> R.string.more_than is QueryCondition.Less -> R.string.less_than - else -> super.resId + else -> null } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt index ea802476..2bd511e4 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt @@ -107,7 +107,7 @@ enum class FilterSectionRow(override val resId: Int?) : RowRepresentable { BLIND -> Criteria.Blinds.queryConditions CASH_RE_BUY_COUNT -> arrayListOf( QueryCondition.MAX_RE_BUY(), - QueryCondition.MIN_RE_BUY() + QueryCondition.MIN_RE_BUY() as QueryCondition ) // Tournament