Laurent 7 years ago
commit cd90ccdacd
  1. 29
      app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/CustomFieldFilterInstrumentedUnitTest.kt
  2. 8
      app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/DateFilterInstrumentedUnitTest.kt
  3. 4
      app/src/androidTest/java/net/pokeranalytics/android/unitTests/filter/SessionFilterInstrumentedUnitTest.kt
  4. 36
      app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt
  5. 13
      app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt
  6. 3
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  7. 2
      app/src/main/java/net/pokeranalytics/android/model/realm/Transaction.kt
  8. 5
      app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt
  9. 7
      app/src/main/res/values-fr/strings.xml
  10. 4
      app/src/main/res/values/strings.xml

@ -23,23 +23,28 @@ class CustomFieldFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() {
realm.beginTransaction()
val cf1 = CustomField()
cf1.id = "1"
cf1.type = CustomField.Type.LIST.ordinal
cf1.addEntry()
cf1.addEntry()
cf1.entries.first()?.value = "super"
cf1.entries.last()?.value = "nul"
val cfe1 = CustomFieldEntry()
val cfe2 = CustomFieldEntry()
cfe1.value = "super"
cfe2.value = "nul"
cf1.entries.add(cfe1)
cf1.entries.add(cfe2)
val s1 = Session.testInstance(100.0, false, Date(), 1)
s1.customFieldEntries.add(cf1.entries.first())
s1.customFieldEntries.add(cfe1)
val s2 = Session.testInstance(100.0, true, Date(), 1)
s2.customFieldEntries.add(cf1.entries.last())
s2.customFieldEntries.add(cfe2)
realm.commitTransaction()
val sessions = Filter.queryOn<Session>(realm, Query(QueryCondition.CustomFieldListQuery(cf1.entries.first()!!)))
val sessions = Filter.queryOn<Session>(realm, Query(QueryCondition.CustomFieldListQuery(cfe2)))
Assert.assertEquals(1, sessions.size)
sessions[0]?.run {
Assert.assertEquals(s1.id, (this).id)
Assert.assertEquals(s2.id, (this).id)
}
}
@ -50,15 +55,19 @@ class CustomFieldFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() {
realm.beginTransaction()
val cf1 = CustomField()
cf1.id = "1234"
cf1.type = CustomField.Type.AMOUNT.ordinal
val cfe1 = CustomFieldEntry()
cfe1.id = "999"
cf1.entries.add(cfe1)
cfe1.value = "30.0"
cfe1.numericValue = 30.0
val cfe2 = CustomFieldEntry()
cfe2.id = "888"
cf1.entries.add(cfe2)
cfe2.value = "100.0"
cfe2.numericValue = 100.0
val s1 = Session.testInstance(100.0, false, Date(), 1)
s1.customFieldEntries.add(cfe1)

@ -380,7 +380,7 @@ class DateFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() {
Session.testInstance(100.0, false, cal.time, 1)
cal.add(Calendar.HOUR_OF_DAY, 2) // adds one hour
cal.add(Calendar.DAY_OF_YEAR, 2) // adds one hour
val s2 = Session.testInstance(100.0, true, cal.time, 1)
realm.commitTransaction()
@ -407,7 +407,7 @@ class DateFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() {
cal.time = Date() // sets calendar time/date
val s1 = Session.testInstance(100.0, false, cal.time, 1)
cal.add(Calendar.HOUR_OF_DAY, 2) // adds one hour
cal.add(Calendar.DAY_OF_YEAR, 2) // adds one hour
Session.testInstance(100.0, true, cal.time, 1)
realm.commitTransaction()
@ -436,7 +436,7 @@ class DateFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() {
Session.testInstance(100.0, false, cal.time, 1)
cal.add(Calendar.HOUR_OF_DAY, 2) // adds one hour
cal.add(Calendar.DAY_OF_YEAR, 2) // adds one hour
val s2 = Session.testInstance(100.0, true, cal.time, 1)
realm.commitTransaction()
@ -464,7 +464,7 @@ class DateFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() {
cal.time = Date() // sets calendar time/date
val s1 = Session.testInstance(100.0, false, cal.time, 1)
cal.add(Calendar.HOUR_OF_DAY, 2) // adds one hour
cal.add(Calendar.DAY_OF_YEAR, 2) // adds one hour
Session.testInstance(100.0, true, cal.time, 1)
realm.commitTransaction()

@ -524,7 +524,7 @@ class SessionFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() {
realm.commitTransaction()
val filterMore = QueryCondition.NetAmountWon()
val filterElementRow = QueryCondition.more<QueryCondition.NetAmountWon>().apply { listOfValues = arrayListOf(200.0) }
val filterElementRow = QueryCondition.more<QueryCondition.NetAmountWon>().apply { listOfValues = arrayListOf(199.0) }
filterElementRow.filterSectionRow = FilterSectionRow.Value
filterMore.updateValueBy(FilterCondition(arrayListOf(filterElementRow)))
@ -564,7 +564,7 @@ class SessionFilterInstrumentedUnitTest : BaseFilterInstrumentedUnitTest() {
s4.result!!.buyin = 200.0
realm.commitTransaction()
val filterMore = QueryCondition.NumberOfRebuy(QueryCondition.Operator.MORE, 5.0)
val filterMore = QueryCondition.NumberOfRebuy(QueryCondition.Operator.MORE, 4.0)
val sessions = Filter.queryOn<Session>(realm, Query(filterMore))
Assert.assertEquals(2, sessions.size)

@ -1,6 +1,7 @@
package net.pokeranalytics.android.model.filter
import android.content.Context
import com.google.android.libraries.places.internal.it
import com.ibm.icu.text.RuleBasedNumberFormat
import io.realm.Realm
import io.realm.RealmQuery
@ -592,7 +593,6 @@ sealed class QueryCondition : FilterElementRow {
}
open class CustomFieldNumberQuery() : ListOfDouble(), CustomFieldRelated {
override var customFieldId: String = ""
override var operator: Operator = Operator.EQUALS
@ -642,8 +642,8 @@ sealed class QueryCondition : FilterElementRow {
constructor(customFieldEntry: CustomFieldEntry) : this() {
this.setObject(customFieldEntry)
this.customFieldId =
customFieldEntry.customField?.id ?: throw PokerAnalyticsException.QueryValueMapUnexpectedValue
this.customFieldId = customFieldEntry.customFields?.firstOrNull()?.id
?: throw PokerAnalyticsException.QueryValueMapUnexpectedValue
}
override fun entityName(realm: Realm): String {
@ -808,17 +808,19 @@ sealed class QueryCondition : FilterElementRow {
fieldName,
singleValue?.startOfDay() ?: throw PokerAnalyticsException.FilterElementExpectedValueMissing
)
is Duration -> realmQuery.greaterThanOrEqualTo(
is Duration -> realmQuery.greaterThan(
fieldName,
netDuration ?: throw PokerAnalyticsException.FilterElementExpectedValueMissing
)
is SingleInt -> realmQuery.greaterThanOrEqualTo(
is TournamentFinalPosition -> realmQuery.greaterThanOrEqualTo(fieldName, listOfValues.first())
is TournamentNumberOfPlayer -> realmQuery.greaterThanOrEqualTo(fieldName, listOfValues.first())
is SingleInt -> realmQuery.greaterThan(
fieldName,
singleValue ?: throw PokerAnalyticsException.FilterElementExpectedValueMissing
)
is ListOfInt -> realmQuery.greaterThanOrEqualTo(fieldName, listOfValues.first())
is NetAmountLost -> realmQuery.lessThanOrEqualTo(fieldName, listOfValues.first() * -1)
is ListOfDouble -> realmQuery.greaterThanOrEqualTo(fieldName, listOfValues.first() * sign)
is ListOfInt -> realmQuery.greaterThan(fieldName, listOfValues.first())
is NetAmountLost -> realmQuery.lessThan(fieldName, listOfValues.first() * -1)
is ListOfDouble -> realmQuery.greaterThan(fieldName, listOfValues.first() * sign)
else -> realmQuery
}
}
@ -828,24 +830,26 @@ sealed class QueryCondition : FilterElementRow {
fieldName,
singleValue?.endOfDay() ?: throw PokerAnalyticsException.FilterElementExpectedValueMissing
)
is Duration -> realmQuery.lessThanOrEqualTo(
is Duration -> realmQuery.lessThan(
fieldName,
netDuration ?: throw PokerAnalyticsException.FilterElementExpectedValueMissing
)
is SingleInt -> realmQuery.lessThanOrEqualTo(
is TournamentFinalPosition -> realmQuery.lessThanOrEqualTo(fieldName, listOfValues.first())
is TournamentNumberOfPlayer -> realmQuery.lessThanOrEqualTo(fieldName, listOfValues.first())
is SingleInt -> realmQuery.lessThan(
fieldName,
singleValue ?: throw PokerAnalyticsException.FilterElementExpectedValueMissing
)
is ListOfInt -> realmQuery.lessThanOrEqualTo(fieldName, listOfValues.first())
is ListOfInt -> realmQuery.lessThan(fieldName, listOfValues.first())
is NetAmountLost -> {
realmQuery.greaterThanOrEqualTo(fieldName, listOfValues.first() * -1)
realmQuery.greaterThan(fieldName, listOfValues.first() * -1)
realmQuery.lessThan(fieldName, 0.0)
}
is NetAmountWon -> {
realmQuery.lessThanOrEqualTo(fieldName, listOfValues.first())
realmQuery.lessThan(fieldName, listOfValues.first())
realmQuery.greaterThan(fieldName, 0.0)
}
is ListOfDouble -> realmQuery.lessThanOrEqualTo(fieldName, listOfValues.first() * sign)
is ListOfDouble -> realmQuery.lessThan(fieldName, listOfValues.first() * sign)
else -> realmQuery
}
}
@ -924,9 +928,9 @@ sealed class QueryCondition : FilterElementRow {
is DuringThisMonth -> R.string.current_month
is DuringThisYear -> R.string.current_year
is StartedFromDate -> R.string.from
is StartedFromTime -> R.string.from_hour_
is StartedFromTime -> R.string.from_time
is EndedToDate -> R.string.to
is EndedToTime -> R.string.to_hour_
is EndedToTime -> R.string.to_time
is IsLive -> R.string.live
is IsOnline -> R.string.online
is IsWeekDay -> R.string.week_days

@ -41,18 +41,13 @@ open class Filter : RealmObject(), RowRepresentable, Identifiable, Deletable, Co
}
inline fun <reified T : Filterable> queryOn(realm: Realm, query: Query, sortField: String? = null): RealmResults<T> {
val realmQuery = realm.where<T>()
sortField?.let {
val realmQuery = realm.where<T>()
sortField?.let {
return query.queryWith(realmQuery).sort(it).findAll()
} ?: run {
} ?: run {
return query.queryWith(realmQuery).findAll()
}
}
fun sortedByUsage(realm: Realm): RealmResults<Filter> {
return realm.where(Filter::class.java).findAll().sort("usageCount")
}
}
}
@PrimaryKey

@ -98,8 +98,7 @@ open class Session : RealmObject(), Savable, Editable, StaticRowRepresentableDat
TournamentNumberOfPlayer::class.java -> "tournamentNumberOfPlayers"
TournamentFinalPosition::class.java -> "result.tournamentFinalPosition"
TournamentFee::class.java -> "tournamentEntryFee"
StartedFromDate::class.java, StartedToDate::class.java -> "startDate"
EndedFromDate::class.java, EndedToDate::class.java -> "startDate"
StartedFromDate::class.java, StartedToDate::class.java, EndedFromDate::class.java, EndedToDate::class.java -> "startDate"
AnyDayOfWeek::class.java, IsWeekEnd::class.java, IsWeekDay::class.java -> "dayOfWeek"
AnyMonthOfYear::class.java -> "month"
AnyYear::class.java -> "year"

@ -42,7 +42,7 @@ open class Transaction : RealmObject(), Manageable, StaticRowRepresentableDataSo
QueryCondition.AnyBankroll::class.java -> "bankroll.id"
QueryCondition.AnyTransactionType::class.java -> "type.id"
QueryCondition.StartedFromDate::class.java, QueryCondition.StartedToDate::class.java -> "date"
QueryCondition.StartedFromDate::class.java, QueryCondition.StartedToDate::class.java, QueryCondition.EndedFromDate::class.java, QueryCondition.EndedToDate::class.java -> "date"
QueryCondition.AnyDayOfWeek::class.java, QueryCondition.IsWeekEnd::class.java, QueryCondition.IsWeekDay::class.java -> "dayOfWeek"
QueryCondition.AnyMonthOfYear::class.java -> "month"
QueryCondition.AnyYear::class.java -> "year"

@ -201,7 +201,10 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource,
private fun updateMostUsedFilters() {
var nbChips = 0
val filters = getRealm().sorted(Filter::class.java)
val filters = getRealm().sorted(Filter::class.java).filter {
it.filterableType == this.filterableType
}
val currentFilterId = Preferences.getActiveFilterId(requireContext())
if (isUpdating || filters.isEmpty() || (filters.size == 1 && filters.first()?.id == currentFilterId)) {

@ -16,6 +16,9 @@
<string name="free_trial">d\'essai gratuit</string>
<string name="bankroll_relationship_error_transactions">Cette bankroll contient au moins une transaction empêchant la suppression.</string>
<string name="from_time">À partir de</string>
<string name="to_time">Jusqu\'à</string>
<!-- Not translated -->
<string name="address">Adresse</string>
<string name="suggestions">Suggestions de noms</string>
@ -296,8 +299,8 @@
<string name="locked_feature">La fonctionnalité est désactivée. Vous pouvez en apprendre plus ou l\'acheter directement.</string>
<string name="looking_for_the_file_on_icloud_">Récupération du fichier sur iCloud&#8230;</string>
<string name="lost">perdu</string>
<string name="lost_amount_less_than">Perte inférieur à</string>
<string name="lost_amount_more_than">Perte supérieur à</string>
<string name="lost_amount_less_than">Perte inférieure à</string>
<string name="lost_amount_more_than">Perte supérieure à</string>
<string name="m">m</string>
<string name="made_break">Pause(s) effectuée(s)</string>
<string name="mail">Mail</string>

@ -56,6 +56,10 @@
<string name="bankroll_relationship_error_transactions">One or more transactions are associated with this bankroll, please delete the linked transaction(s) first.</string>
<string name="operation_type">Transaction type</string>
<string name="from_time">From</string>
<string name="to_time">To</string>
<!-- Translated -->
<string name="_ago">%s ago</string>

Loading…
Cancel
Save