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()
cal.time = Date()
val s1 = Session.testInstance(100.0, false, cal.time)
val firstValue = cal.get(Calendar.YEAR)
cal.add(Calendar.YEAR, 1)
Session.testInstance(100.0, true, cal.time)
cal.add(Calendar.YEAR, -11)
val firstValue = cal.get(Calendar.YEAR)
Session.testInstance(100.0, true, cal.time)
cal.add(Calendar.YEAR, 7)
Session.testInstance(100.0, true, cal.time)
@ -35,23 +35,23 @@ class CriteriaTest : BaseFilterInstrumentedUnitTest() {
cal.add(Calendar.YEAR, 10)
Session.testInstance(100.0, true, cal.time)
val lastValue = firstValue + 10
val lastValue = firstValue + 5
realm.commitTransaction()
val years = Criteria.Years.queryConditions as List<QueryCondition.AnyYear>
println("years = ${years.map { it.getDisplayName() }}")
assertEquals(11, years.size)
assertEquals(firstValue, years.first().listOfValues.first())
assertEquals(16, years.size)
assertEquals(firstValue-10, years.first().listOfValues.first())
assertEquals(lastValue, years.last().listOfValues.first())
}
@Test
fun combined() {
val critierias = listOf(Criteria.MonthsOfYear, Criteria.DaysOfWeek)
val combined = critierias.combined()
val criterias = listOf(Criteria.MonthsOfYear, Criteria.DaysOfWeek)
val combined = criterias.combined()
combined.forEach {
it.forEach {qc->
println(qc.getDisplayName())
@ -82,23 +82,12 @@ class CriteriaTest : BaseFilterInstrumentedUnitTest() {
realm.commitTransaction()
val critierias = listOf(Criteria.Years, Criteria.MonthsOfYear)
val combined = critierias.combined()
combined.forEach {
val allMonths = Criteria.AllMonthsUpToNow.predicates
allMonths.forEach {
it.forEach {qc->
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 DayPeriods: SimpleCriteria(listOf(QueryCondition.IsWeekDay, QueryCondition.IsWeekEnd))
object Years: ListCriteria()
object AllMonthsUpToNow: ListCriteria()
object Blinds: ListCriteria()
object TournamentFees: ListCriteria()
object Cash: SimpleCriteria(listOf(QueryCondition.IsCash))
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>
get() {
return when (this) {
@ -168,10 +207,10 @@ sealed class Criteria {
is TournamentFees -> comparison<QueryCondition.TournamentFee, Double >()
is Years -> {
val years = arrayListOf<QueryCondition.AnyYear>()
val calendar = Calendar.getInstance()
calendar.time = Date()
val yearNow = calendar.get(Calendar.YEAR)
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 {
for (index in 0..(yearNow - it)) {
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 {
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 {
return "$value"
}
constructor(year:Int) : this() {
listOfValues = arrayListOf(year)
}
}
object IsWeekDay: QueryCondition()

Loading…
Cancel
Save