add a new method called upToNow() available on list of list of queryConditions

feature/top10
Razmig Sarkissian 7 years ago
parent e696716b73
commit ee620baf9a
  1. 43
      app/src/androidTest/java/net/pokeranalytics/android/model/CriteriaTest.kt
  2. 25
      app/src/main/java/net/pokeranalytics/android/model/Criteria.kt

@ -58,4 +58,47 @@ class CriteriaTest : BaseFilterInstrumentedUnitTest() {
}
}
}
@Test
fun upToNow() {
val realm = this.mockRealm
realm.beginTransaction()
val cal = Calendar.getInstance()
cal.time = Date()
val s1 = Session.testInstance(100.0, false, cal.time)
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)
cal.add(Calendar.YEAR, -2)
Session.testInstance(100.0, true, cal.time)
cal.add(Calendar.YEAR, 10)
Session.testInstance(100.0, true, cal.time)
val lastValue = firstValue + 10
realm.commitTransaction()
val critierias = listOf(Criteria.Years, Criteria.MonthsOfYear)
val combined = critierias.combined()
combined.forEach {
it.forEach {qc->
println("<<<<< ${qc.getDisplayName()}")
}
}
println("<<<<< reduced")
val reduced= critierias.combined().upToNow()
reduced.forEach {
it.forEach {qc->
println("<<<<< ${qc.getDisplayName()}")
}
}
}
}

@ -18,6 +18,31 @@ fun List<Criteria>.combined(): List<List<QueryCondition>> {
return getCombinations(comparatorList)
}
fun List<List<QueryCondition>>.upToNow(): List<List<QueryCondition>> {
val calendar = Calendar.getInstance()
calendar.time = Date()
val currentYear = calendar.get(Calendar.YEAR)
val currentMonth = calendar.get(Calendar.MONTH)
val toRemove = this.filter { list ->
list.any { it is QueryCondition.AnyYear && it.listOfValues.first() == currentYear }
}.filter { list ->
list.any {
it is QueryCondition.AnyMonthOfYear && it.listOfValues.first() > currentMonth
}
}
return this.filter{ list ->
var keep = true
toRemove.forEach {
if (list.containsAll(it)) {
keep = false
}
}
keep
}
}
fun <T> getCombinations(lists: List<List<T>>): List<List<T>> {
var combinations: LinkedHashSet<List<T>> = LinkedHashSet()
var newCombinations: LinkedHashSet<List<T>>

Loading…
Cancel
Save