feature/top10
Laurent 7 years ago
commit 239ab0652c
  1. 27
      app/src/androidTest/java/net/pokeranalytics/android/model/CriteriaTest.kt
  2. 45
      app/src/main/java/net/pokeranalytics/android/model/Criteria.kt
  3. 12
      app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt

@ -23,10 +23,10 @@ class CriteriaTest : BaseFilterInstrumentedUnitTest() {
val cal = Calendar.getInstance() val cal = Calendar.getInstance()
cal.time = Date() cal.time = Date()
val s1 = Session.testInstance(100.0, false, cal.time) val s1 = Session.testInstance(100.0, false, cal.time)
val firstValue = cal.get(Calendar.YEAR)
cal.add(Calendar.YEAR, 1) cal.add(Calendar.YEAR, 1)
Session.testInstance(100.0, true, cal.time) Session.testInstance(100.0, true, cal.time)
cal.add(Calendar.YEAR, -11) cal.add(Calendar.YEAR, -11)
val firstValue = cal.get(Calendar.YEAR)
Session.testInstance(100.0, true, cal.time) Session.testInstance(100.0, true, cal.time)
cal.add(Calendar.YEAR, 7) cal.add(Calendar.YEAR, 7)
Session.testInstance(100.0, true, cal.time) Session.testInstance(100.0, true, cal.time)
@ -35,23 +35,23 @@ class CriteriaTest : BaseFilterInstrumentedUnitTest() {
cal.add(Calendar.YEAR, 10) cal.add(Calendar.YEAR, 10)
Session.testInstance(100.0, true, cal.time) Session.testInstance(100.0, true, cal.time)
val lastValue = firstValue + 10 val lastValue = firstValue + 5
realm.commitTransaction() realm.commitTransaction()
val years = Criteria.Years.queryConditions as List<QueryCondition.AnyYear> val years = Criteria.Years.queryConditions as List<QueryCondition.AnyYear>
println("years = ${years.map { it.getDisplayName() }}") println("years = ${years.map { it.getDisplayName() }}")
assertEquals(11, years.size) assertEquals(16, years.size)
assertEquals(firstValue, years.first().listOfValues.first()) assertEquals(firstValue-10, years.first().listOfValues.first())
assertEquals(lastValue, years.last().listOfValues.first()) assertEquals(lastValue, years.last().listOfValues.first())
} }
@Test @Test
fun combined() { fun combined() {
val critierias = listOf(Criteria.MonthsOfYear, Criteria.DaysOfWeek) val criterias = listOf(Criteria.MonthsOfYear, Criteria.DaysOfWeek)
val combined = critierias.combined() val combined = criterias.combined()
combined.forEach { combined.forEach {
it.forEach {qc-> it.forEach {qc->
println(qc.getDisplayName()) println(qc.getDisplayName())
@ -82,23 +82,12 @@ class CriteriaTest : BaseFilterInstrumentedUnitTest() {
realm.commitTransaction() realm.commitTransaction()
val critierias = listOf(Criteria.Years, Criteria.MonthsOfYear) val allMonths = Criteria.AllMonthsUpToNow.predicates
val combined = critierias.combined() allMonths.forEach {
combined.forEach {
it.forEach {qc-> it.forEach {qc->
println("<<<<< ${qc.getDisplayName()}") println("<<<<< ${qc.getDisplayName()}")
} }
} }
println("<<<<< reduced")
val reduced= critierias.combined().upToNow()
reduced.forEach {
it.forEach {qc->
println("<<<<< ${qc.getDisplayName()}")
}
}
} }
} }

@ -148,11 +148,50 @@ sealed class Criteria {
object BankrollTypes: SimpleCriteria(listOf(QueryCondition.IsLive, QueryCondition.IsOnline)) object BankrollTypes: SimpleCriteria(listOf(QueryCondition.IsLive, QueryCondition.IsOnline))
object DayPeriods: SimpleCriteria(listOf(QueryCondition.IsWeekDay, QueryCondition.IsWeekEnd)) object DayPeriods: SimpleCriteria(listOf(QueryCondition.IsWeekDay, QueryCondition.IsWeekEnd))
object Years: ListCriteria() object Years: ListCriteria()
object AllMonthsUpToNow: ListCriteria()
object Blinds: ListCriteria() object Blinds: ListCriteria()
object TournamentFees: ListCriteria() object TournamentFees: ListCriteria()
object Cash: SimpleCriteria(listOf(QueryCondition.IsCash)) object Cash: SimpleCriteria(listOf(QueryCondition.IsCash))
object Tournament: SimpleCriteria(listOf(QueryCondition.IsTournament)) object Tournament: SimpleCriteria(listOf(QueryCondition.IsTournament))
val predicates: List<List<QueryCondition>>
get() {
return when (this) {
is AllMonthsUpToNow -> {
val realm = Realm.getDefaultInstance()
val firstSession= realm.where<Session>().sort("startDate", Sort.ASCENDING).findFirst()
val lastSession = realm.where<Session>().sort("startDate", Sort.DESCENDING).findFirst()
realm.close()
val years: ArrayList<List<QueryCondition>> = arrayListOf()
val firstYear = firstSession?.year ?: return years
val firstMonth = firstSession.month ?: return years
val lastYear = lastSession?.year ?: return years
val lastMonth = lastSession.month ?: return years
for (year in firstYear..lastYear) {
val currentYear = QueryCondition.AnyYear(year)
for (month in 0..11) {
if (year == firstYear && month < firstMonth) {
continue
}
if (year == lastYear && month > lastMonth) {
continue
}
val currentMonth = QueryCondition.AnyMonthOfYear(month)
val currentList = listOf<QueryCondition>(currentYear, currentMonth)
years.add(currentList)
}
}
years
}
else -> listOf(listOf())
}
}
val queryConditions: List<QueryCondition> val queryConditions: List<QueryCondition>
get() { get() {
return when (this) { return when (this) {
@ -168,10 +207,10 @@ sealed class Criteria {
is TournamentFees -> comparison<QueryCondition.TournamentFee, Double >() is TournamentFees -> comparison<QueryCondition.TournamentFee, Double >()
is Years -> { is Years -> {
val years = arrayListOf<QueryCondition.AnyYear>() val years = arrayListOf<QueryCondition.AnyYear>()
val calendar = Calendar.getInstance()
calendar.time = Date()
val yearNow = calendar.get(Calendar.YEAR)
val realm = Realm.getDefaultInstance() val realm = Realm.getDefaultInstance()
val lastSession = realm.where<Session>().sort("startDate", Sort.DESCENDING).findFirst()
val yearNow = lastSession?.year ?: return years
realm.where<Session>().sort("year", Sort.ASCENDING).findFirst()?.year?.let { realm.where<Session>().sort("year", Sort.ASCENDING).findFirst()?.year?.let {
for (index in 0..(yearNow - it)) { for (index in 0..(yearNow - it)) {
years.add(QueryCondition.AnyYear().apply { years.add(QueryCondition.AnyYear().apply {

@ -346,16 +346,24 @@ sealed class QueryCondition : FilterElementRow {
} }
} }
class AnyMonthOfYear: ListOfInt() { class AnyMonthOfYear(): ListOfInt() {
override fun labelForValue(value: Int): String { override fun labelForValue(value: Int): String {
return DateFormatSymbols.getInstance(Locale.getDefault()).months[value] return DateFormatSymbols.getInstance(Locale.getDefault()).months[value]
} }
constructor(month:Int) : this() {
listOfValues = arrayListOf(month)
}
} }
class AnyYear: ListOfInt() { class AnyYear(): ListOfInt() {
override fun labelForValue(value: Int): String { override fun labelForValue(value: Int): String {
return "$value" return "$value"
} }
constructor(year:Int) : this() {
listOfValues = arrayListOf(year)
}
} }
object IsWeekDay: QueryCondition() object IsWeekDay: QueryCondition()

Loading…
Cancel
Save