@ -16,23 +16,25 @@ import net.pokeranalytics.android.model.interfaces.Identifiable
import net.pokeranalytics.android.model.interfaces.NameManageable
import net.pokeranalytics.android.model.interfaces.NameManageable
import net.pokeranalytics.android.model.realm.*
import net.pokeranalytics.android.model.realm.*
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterElementRow
import net.pokeranalytics.android.ui.view.rowrepresentable.*
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterSectionRow
import net.pokeranalytics.android.util.NULL_TEXT
import net.pokeranalytics.android.util.NULL_TEXT
import net.pokeranalytics.android.util.UserDefaults
import net.pokeranalytics.android.util.UserDefaults
import net.pokeranalytics.android.util.extensions.*
import net.pokeranalytics.android.util.extensions.*
import java.lang.Exception
import java.text.DateFormatSymbols
import java.text.DateFormatSymbols
import java.text.NumberFormat
import java.text.NumberFormat
import java.util.*
import java.util.*
import kotlin.collections.ArrayList
import kotlin.collections.ArrayList
import kotlin.reflect.full.primaryConstructor
/ * *
/ * *
* Enum describing the way a query should be handled
* Enum describing the way a query should be handled
* Some queries requires a value to be checked upon through equals , in , more , less , between
* Some queries requires a value to be checked upon through equals , in , more , less , between
* /
* /
sealed class QueryCondition : FilterElementRow {
sealed class QueryCondition : RowRepresentable {
companion object {
companion object {
inline fun < reified T : QueryCondition > more ( ) : T {
inline fun < reified T : QueryCondition > more ( ) : T {
@ -49,7 +51,15 @@ sealed class QueryCondition : FilterElementRow {
fun < T : QueryCondition > valueOf ( name : String ) : T {
fun < T : QueryCondition > valueOf ( name : String ) : T {
val kClass = Class . forName ( " ${QueryCondition::class.qualifiedName} $ $name " ) . kotlin
val kClass = Class . forName ( " ${QueryCondition::class.qualifiedName} $ $name " ) . kotlin
val instance = kClass . objectInstance ?: kClass . java . newInstance ( )
val instance = try {
kClass . objectInstance ?: kClass . java . newInstance ( )
} catch ( e : Exception ) {
// some object instance can fail due to: java.lang.Class has no zero argument constructor
// We should have just one constructor with a single parameter
val primaryConstructor = kClass . java . declaredConstructors . first ( )
val param = primaryConstructor . parameterTypes . first ( )
primaryConstructor . newInstance ( param . newInstance ( ) )
}
return instance as T
return instance as T
}
}
@ -125,25 +135,29 @@ sealed class QueryCondition : FilterElementRow {
abstract class ListOfValues < T > : QueryCondition ( ) , Comparable < ListOfValues < T > > where T : Comparable < T > {
abstract class ListOfValues < T > : QueryCondition ( ) , Comparable < ListOfValues < T > > where T : Comparable < T > {
abstract var listOfValues : Array List< T >
abstract var listOfValues : Mutable List< T >
abstract fun labelForValue ( value : T , context : Context ) : String
abstract fun labelForValue ( value : T , context : Context ) : String
open fun entityName ( context : Context ) : String {
open fun entityName ( context : Context ) : String {
return getDisplayName ( context )
return getDisplayName ( context )
}
}
override fun getDisplayName ( context : Context ) : String {
fun getDisplayName ( context : Context , values : List < T > ) : String {
val prefix = this . resId ?. let {
val prefix = this . resId ?. let {
context . getString ( it ) + " "
context . getString ( it ) + " "
} ?: " "
} ?: " "
return when ( listOfV alues. size ) {
return when ( v alues. size ) {
0 -> return NULL _TEXT
0 -> return NULL _TEXT
1 , 2 -> prefix + listOfValues . map { labelForValue ( it , context ) } . joinToString ( " , " )
1 , 2 -> prefix + values . joinToString ( " , " ) { labelForValue ( it , context ) }
else -> " ${listOfV alues.size} $prefix ${entityName(context)} "
else -> " ${v alues.size} $prefix ${entityName(context)} "
}
}
}
}
override fun getDisplayName ( context : Context ) : String {
return getDisplayName ( context , this . listOfValues )
}
override fun compareTo ( other : ListOfValues < T > ) : Int {
override fun compareTo ( other : ListOfValues < T > ) : Int {
return listOfValues . sorted ( ) . first ( ) . compareTo ( other . listOfValues . sorted ( ) . first ( ) )
return listOfValues . sorted ( ) . first ( ) . compareTo ( other . listOfValues . sorted ( ) . first ( ) )
}
}
@ -151,17 +165,18 @@ sealed class QueryCondition : FilterElementRow {
fun firstValue ( context : Context ) : String ? {
fun firstValue ( context : Context ) : String ? {
return this . listOfValues . firstOrNull ( ) ?. let { this . labelForValue ( it , context ) }
return this . listOfValues . firstOrNull ( ) ?. let { this . labelForValue ( it , context ) }
}
}
}
}
abstract class SingleValue < T > : ListOfValues < T > ( ) where T : Comparable < T > {
abstract class SingleValue < T > ( value : T ) : ListOfValues < T > ( ) where T : Comparable < T > {
override var listOfValues = ArrayList < T > ( )
override var listOfValues = mutableListOf < T > ( )
abstract var singleValue : T ?
var singleValue : T = value
}
}
abstract class ListOfDouble : ListOfValues < Double > ( ) {
abstract class ListOfDouble : ListOfValues < Double > ( ) {
open var sign : Int = 1
open var sign : Int = 1
override var operator : Operator = Operator . ANY
override var operator : Operator = Operator . ANY
override var listOfValues : ArrayList < Double > = arrayListOf ( )
override var listOfValues = mutableListOf < Double > ( )
override fun updateValueBy ( filterCondition : FilterCondition ) {
override fun updateValueBy ( filterCondition : FilterCondition ) {
super . updateValueBy ( filterCondition )
super . updateValueBy ( filterCondition )
listOfValues = filterCondition . getValues ( )
listOfValues = filterCondition . getValues ( )
@ -170,11 +185,15 @@ sealed class QueryCondition : FilterElementRow {
override fun labelForValue ( value : Double , context : Context ) : String {
override fun labelForValue ( value : Double , context : Context ) : String {
return value . toCurrency ( UserDefaults . currency )
return value . toCurrency ( UserDefaults . currency )
}
}
override fun toRowWrapper ( filterSectionRow : FilterSectionRow ) : FilterItemRow {
return DoubleValueListFilterItemRow ( this , filterSectionRow )
}
}
}
abstract class ListOfInt : ListOfValues < Int > ( ) {
abstract class ListOfInt : ListOfValues < Int > ( ) {
override var operator : Operator = Operator . ANY
override var operator : Operator = Operator . ANY
override var listOfValues : ArrayList < Int > = arrayListOf ( )
override var listOfValues = mutableListOf < Int > ( )
override fun updateValueBy ( filterCondition : FilterCondition ) {
override fun updateValueBy ( filterCondition : FilterCondition ) {
super . updateValueBy ( filterCondition )
super . updateValueBy ( filterCondition )
listOfValues = filterCondition . getValues ( )
listOfValues = filterCondition . getValues ( )
@ -183,11 +202,15 @@ sealed class QueryCondition : FilterElementRow {
override fun labelForValue ( value : Int , context : Context ) : String {
override fun labelForValue ( value : Int , context : Context ) : String {
return value . toString ( )
return value . toString ( )
}
}
override fun toRowWrapper ( filterSectionRow : FilterSectionRow ) : FilterItemRow {
return IntValueListFilterItemRow ( this , filterSectionRow )
}
}
}
abstract class ListOfString : ListOfValues < String > ( ) {
abstract class ListOfString : ListOfValues < String > ( ) {
override var operator : Operator = Operator . ANY
override var operator : Operator = Operator . ANY
override var listOfValues = ArrayList < String > ( )
override var listOfValues = mutableListOf < String > ( )
override fun labelForValue ( value : String , context : Context ) : String {
override fun labelForValue ( value : String , context : Context ) : String {
return value
return value
}
}
@ -196,48 +219,42 @@ sealed class QueryCondition : FilterElementRow {
super . updateValueBy ( filterCondition )
super . updateValueBy ( filterCondition )
listOfValues = filterCondition . getValues ( )
listOfValues = filterCondition . getValues ( )
}
}
override fun toRowWrapper ( filterSectionRow : FilterSectionRow ) : FilterItemRow {
return StringValueListFilterItemRow ( this , filterSectionRow )
}
}
}
abstract class SingleDate : SingleValue < Date > ( ) {
abstract class SingleDate ( date : Date ) : SingleValue < Date > ( date ) {
override fun labelForValue ( value : Date , context : Context ) : String {
override fun labelForValue ( value : Date , context : Context ) : String {
return value . shortDate ( )
return value . shortDate ( )
}
}
override var listOfValues = ArrayList < Date > ( )
override var listOfValues = mutableListOf < Date > ( )
override var singleValue : Date ?
get ( ) {
return listOfValues . firstOrNull ( )
}
set ( value ) {
listOfValues . removeAll ( this . listOfValues )
value ?. let { listOfValues . add ( it ) }
}
override fun updateValueBy ( filterCondition : FilterCondition ) {
override fun updateValueBy ( filterCondition : FilterCondition ) {
super . updateValueBy ( filterCondition )
super . updateValueBy ( filterCondition )
singleValue = filterCondition . getValue ( )
singleValue = filterCondition . getValue ( )
}
}
override fun toRowWrapper ( filterSectionRow : FilterSectionRow ) : FilterItemRow {
return DateFilterItemRow ( this , filterSectionRow )
}
}
}
abstract class SingleInt : SingleValue < Int > ( ) {
abstract class SingleInt ( value : Int ) : SingleValue < Int > ( value ) {
override fun labelForValue ( value : Int , context : Context ) : String {
override fun labelForValue ( value : Int , context : Context ) : String {
return value . toString ( )
return value . toString ( )
}
}
override var singleValue : Int ?
get ( ) {
return listOfValues . firstOrNull ( )
}
set ( value ) {
listOfValues . removeAll ( this . listOfValues )
value ?. let { listOfValues . add ( it ) }
}
override fun updateValueBy ( filterCondition : FilterCondition ) {
override fun updateValueBy ( filterCondition : FilterCondition ) {
super . updateValueBy ( filterCondition )
super . updateValueBy ( filterCondition )
singleValue = filterCondition . getValue ( )
singleValue = filterCondition . getValue ( )
}
}
override fun toRowWrapper ( filterSectionRow : FilterSectionRow ) : FilterItemRow {
return IntFilterItemRow ( this , filterSectionRow )
}
}
}
override fun getDisplayName ( context : Context ) : String {
override fun getDisplayName ( context : Context ) : String {
@ -247,7 +264,7 @@ sealed class QueryCondition : FilterElementRow {
return baseId
return baseId
}
}
override var filterSectionRow : FilterSectionRow = FilterSectionRow . CashOrTournament
// override var filterSectionRow: FilterSectionRow = FilterSectionRow. CashOrTournament
abstract class QueryDataCondition < T : NameManageable > : ListOfString ( ) {
abstract class QueryDataCondition < T : NameManageable > : ListOfString ( ) {
fun setObject ( dataObject : T ) {
fun setObject ( dataObject : T ) {
@ -263,7 +280,7 @@ sealed class QueryCondition : FilterElementRow {
val completeLabel = when ( listOfValues . size ) {
val completeLabel = when ( listOfValues . size ) {
0 -> NULL _TEXT
0 -> NULL _TEXT
1 , 2 -> {
1 , 2 -> {
listOfValues . map { labelForValue ( realm , it ) } . joinToString ( " , " )
listOfValues . joinToString ( " , " ) { labelForValue ( realm , it ) }
}
}
else -> " ${listOfValues.size} $entityName "
else -> " ${listOfValues.size} $entityName "
}
}
@ -286,21 +303,19 @@ sealed class QueryCondition : FilterElementRow {
val showTime : Boolean
val showTime : Boolean
}
}
abstract class DateQuery : SingleDate ( ) , DateTime {
abstract class DateQuery ( date : Date ) : SingleDate ( date ) , DateTime {
override val showTime : Boolean = false
override val showTime : Boolean = false
override fun labelForValue ( value : Date , context : Context ) : String {
override fun labelForValue ( value : Date , context : Context ) : String {
return singleValue ?. let {
return if ( showTime ) {
if ( showTime ) {
singleValue . shortTime ( )
it . shortTime ( )
} else {
} else {
singleValue . shortDate ( )
it . shortDate ( )
}
}
} ?: NULL _TEXT
}
}
}
}
abstract class TimeQuery : DateQuery ( ) {
abstract class TimeQuery ( date : Date ) : DateQuery ( date ) {
override val showTime : Boolean = true
override val showTime : Boolean = true
}
}
@ -343,50 +358,34 @@ sealed class QueryCondition : FilterElementRow {
}
}
}
}
class AnyTournamentName ( ) : QueryDataCondition < TournamentName > ( ) {
class AnyTournamentName : QueryDataCondition < TournamentName > ( ) {
override val entity : Class < TournamentName > = TournamentName :: class . java
override val entity : Class < TournamentName > = TournamentName :: class . java
constructor ( tournamentName : TournamentName ) : this ( ) {
this . setObject ( tournamentName )
}
override fun entityName ( context : Context ) : String {
override fun entityName ( context : Context ) : String {
return context . getString ( R . string . tournament _names )
return context . getString ( R . string . tournament _names )
}
}
}
}
class AnyTournamentFeature ( ) : QueryDataCondition < TournamentFeature > ( ) {
class AnyTournamentFeature : QueryDataCondition < TournamentFeature > ( ) {
override val entity : Class < TournamentFeature > = TournamentFeature :: class . java
override val entity : Class < TournamentFeature > = TournamentFeature :: class . java
constructor ( tournamentFeature : TournamentFeature ) : this ( ) {
this . setObject ( tournamentFeature )
}
override fun entityName ( context : Context ) : String {
override fun entityName ( context : Context ) : String {
return context . getString ( R . string . tournament _features )
return context . getString ( R . string . tournament _features )
}
}
}
}
class AllTournamentFeature ( ) : QueryDataCondition < TournamentFeature > ( ) {
class AllTournamentFeature : QueryDataCondition < TournamentFeature > ( ) {
override var operator = Operator . ALL
override var operator = Operator . ALL
override val entity : Class < TournamentFeature > = TournamentFeature :: class . java
override val entity : Class < TournamentFeature > = TournamentFeature :: class . java
constructor ( tournamentFeature : TournamentFeature ) : this ( ) {
this . setObject ( tournamentFeature )
}
override fun entityName ( context : Context ) : String {
override fun entityName ( context : Context ) : String {
return context . getString ( R . string . tournament _features )
return context . getString ( R . string . tournament _features )
}
}
}
}
class AnyLocation ( ) : QueryDataCondition < Location > ( ) {
class AnyLocation : QueryDataCondition < Location > ( ) {
override val entity : Class < Location > = Location :: class . java
override val entity : Class < Location > = Location :: class . java
constructor ( location : Location ) : this ( ) {
this . setObject ( location )
}
override fun entityName ( context : Context ) : String {
override fun entityName ( context : Context ) : String {
return context . getString ( R . string . locations )
return context . getString ( R . string . locations )
}
}
@ -440,13 +439,13 @@ sealed class QueryCondition : FilterElementRow {
}
}
}
}
object Last : SingleInt ( ) {
// object Last : SingleInt() {
override var operator = Operator . EQUALS
// override var operator = Operator. EQUALS
override fun getDisplayName ( context : Context ) : String {
// override fun getDisplayName(context: Context): String {
//TODO update string "last %i"
// //TODO update string "last %i"
return " ${context.getString(R.string.last_i_records)} $singleValue "
// return "${context.getString(R.string.last_i_records)} $singleValue "
}
// }
}
// }
class NumberOfTable : ListOfInt ( ) {
class NumberOfTable : ListOfInt ( ) {
override fun labelForValue ( value : Int , context : Context ) : String {
override fun labelForValue ( value : Int , context : Context ) : String {
@ -507,19 +506,19 @@ sealed class QueryCondition : FilterElementRow {
}
}
}
}
class StartedFromDate : DateQuery ( ) {
class StartedFromDate ( date : Date ) : DateQuery ( date ) {
override var operator = Operator . MORE
override var operator = Operator . MORE
}
}
class StartedToDate : DateQuery ( ) {
class StartedToDate ( date : Date ) : DateQuery ( date ) {
override var operator = Operator . LESS
override var operator = Operator . LESS
}
}
class EndedFromDate : DateQuery ( ) {
class EndedFromDate ( date : Date ) : DateQuery ( date ) {
override var operator = Operator . MORE
override var operator = Operator . MORE
}
}
class EndedToDate : DateQuery ( ) {
class EndedToDate ( date : Date ) : DateQuery ( date ) {
override var operator = Operator . LESS
override var operator = Operator . LESS
}
}
@ -564,7 +563,7 @@ sealed class QueryCondition : FilterElementRow {
}
}
}
}
class PastDay : SingleInt ( ) {
class PastDay ( value : Int ) : SingleInt ( value ) {
override var operator = Operator . EQUALS
override var operator = Operator . EQUALS
override val viewType : Int = RowViewType . TITLE _VALUE _CHECK . ordinal
override val viewType : Int = RowViewType . TITLE _VALUE _CHECK . ordinal
@ -579,9 +578,10 @@ sealed class QueryCondition : FilterElementRow {
}
}
}
}
class Duration : SingleInt ( ) {
class Duration ( value : Int ) : SingleInt ( value ) {
override var operator = Operator . EQUALS
override var operator = Operator . EQUALS
var minutes : Int ?
var minutes : Int
get ( ) {
get ( ) {
return singleValue
return singleValue
}
}
@ -589,12 +589,9 @@ sealed class QueryCondition : FilterElementRow {
singleValue = value
singleValue = value
}
}
val netDuration : Long ?
val netDuration : Long
get ( ) {
get ( ) {
minutes ?. let {
return ( singleValue * 60 * 1000 ) . toLong ( )
return ( it * 60 * 1000 ) . toLong ( )
}
return null
}
}
override val viewType : Int = RowViewType . TITLE _VALUE _CHECK . ordinal
override val viewType : Int = RowViewType . TITLE _VALUE _CHECK . ordinal
@ -609,21 +606,21 @@ sealed class QueryCondition : FilterElementRow {
object EndDateNotNull : NotNullQueryCondition ( )
object EndDateNotNull : NotNullQueryCondition ( )
object BigBlindNotNull : NotNullQueryCondition ( )
object BigBlindNotNull : NotNullQueryCondition ( )
class StartedFromTime ( ) : TimeQuery ( ) {
class StartedFromTime ( date : Date ) : TimeQuery ( date ) {
override var operator = Operator . MORE
override var operator = Operator . MORE
constructor ( date : Date ) : this ( ) {
// constructor(date: Date) : this() {
singleValue = date
// singleValue = date
}
// }
}
}
class EndedToTime ( ) : TimeQuery ( ) {
class EndedToTime ( date : Date ) : TimeQuery ( date ) {
override var operator = Operator . LESS
override var operator = Operator . LESS
constructor ( date : Date ) : this ( ) {
// constructor(date: Date) : this() {
singleValue = date
// singleValue = date
}
// }
}
}
@ -641,10 +638,6 @@ sealed class QueryCondition : FilterElementRow {
class CustomFieldQuery ( ) : QueryDataCondition < CustomField > ( ) {
class CustomFieldQuery ( ) : QueryDataCondition < CustomField > ( ) {
override var entity : Class < CustomField > = CustomField :: class . java
override var entity : Class < CustomField > = CustomField :: class . java
constructor ( customField : CustomField ) : this ( ) {
this . setObject ( customField )
}
}
}
open class CustomFieldNumberQuery ( ) : ListOfDouble ( ) , CustomFieldRelated {
open class CustomFieldNumberQuery ( ) : ListOfDouble ( ) , CustomFieldRelated {
@ -712,6 +705,10 @@ sealed class QueryCondition : FilterElementRow {
}
}
}
}
open fun toRowWrapper ( filterSectionRow : FilterSectionRow ) : FilterItemRow {
return BaseFilterItemRow ( this , filterSectionRow )
}
/ * *
/ * *
* main method of the enum
* main method of the enum
* providing a base RealmQuery [ realmQuery ] , the method is able to attached the corresponding query and returns the newly formed [ RealmQuery ]
* providing a base RealmQuery [ realmQuery ] , the method is able to attached the corresponding query and returns the newly formed [ RealmQuery ]
@ -762,15 +759,12 @@ sealed class QueryCondition : FilterElementRow {
. lessThanOrEqualTo ( fieldName , calendar . time . endOfDay ( ) )
. lessThanOrEqualTo ( fieldName , calendar . time . endOfDay ( ) )
}
}
is PastDay -> {
is PastDay -> {
singleValue ?. let {
val startDate = Date ( )
val startDate = Date ( )
val calendar = Calendar . getInstance ( )
val calendar = Calendar . getInstance ( )
calendar . time = startDate
calendar . time = startDate
calendar . add ( Calendar . DAY _OF _YEAR , - singleValue )
calendar . add ( Calendar . DAY _OF _YEAR , - it )
return realmQuery . greaterThanOrEqualTo ( fieldName , calendar . time . startOfDay ( ) ) . and ( )
return realmQuery . greaterThanOrEqualTo ( fieldName , calendar . time . startOfDay ( ) ) . and ( )
. lessThanOrEqualTo ( fieldName , startDate . endOfDay ( ) )
. lessThanOrEqualTo ( fieldName , startDate . endOfDay ( ) )
}
return realmQuery
}
}
is DuringThisWeek -> {
is DuringThisWeek -> {
val calendar = Calendar . getInstance ( )
val calendar = Calendar . getInstance ( )
@ -800,29 +794,21 @@ sealed class QueryCondition : FilterElementRow {
}
}
is StartedFromTime -> {
is StartedFromTime -> {
val calendar = Calendar . getInstance ( )
val calendar = Calendar . getInstance ( )
singleValue ?. let {
calendar . time = singleValue
calendar . time = it
realmQuery . greaterThanOrEqualTo ( fieldName , calendar . hourMinute ( ) )
realmQuery . greaterThanOrEqualTo ( fieldName , calendar . hourMinute ( ) )
if ( otherQueryCondition is EndedToTime ) {
if ( otherQueryCondition is EndedToTime ) {
calendar . time = otherQueryCondition . singleValue
otherQueryCondition . singleValue ?. let { endTime ->
realmQuery . lessThanOrEqualTo ( fieldName , calendar . hourMinute ( ) )
calendar . time = endTime
realmQuery . lessThanOrEqualTo ( fieldName , calendar . hourMinute ( ) )
}
}
}
}
return realmQuery
return realmQuery
}
}
is EndedToTime -> {
is EndedToTime -> {
val calendar = Calendar . getInstance ( )
val calendar = Calendar . getInstance ( )
singleValue ?. let { date ->
calendar . time = singleValue
calendar . time = date
realmQuery . lessThanOrEqualTo ( fieldName , calendar . hourMinute ( ) )
realmQuery . lessThanOrEqualTo ( fieldName , calendar . hourMinute ( ) )
if ( otherQueryCondition is StartedFromTime ) {
if ( otherQueryCondition is StartedFromTime ) {
calendar . time = otherQueryCondition . singleValue
otherQueryCondition . singleValue ?. let { startTime ->
realmQuery . greaterThanOrEqualTo ( fieldName , calendar . hourMinute ( ) )
calendar . time = startTime
realmQuery . greaterThanOrEqualTo ( fieldName , calendar . hourMinute ( ) )
}
}
}
}
return realmQuery
return realmQuery
}
}
@ -846,14 +832,8 @@ sealed class QueryCondition : FilterElementRow {
return when ( operator ) {
return when ( operator ) {
Operator . EQUALS -> {
Operator . EQUALS -> {
when ( this ) {
when ( this ) {
is SingleDate -> realmQuery . equalTo (
is SingleDate -> realmQuery . equalTo ( fieldName , singleValue )
fieldName ,
is SingleInt -> realmQuery . equalTo ( fieldName , singleValue )
singleValue ?: throw PokerAnalyticsException . FilterElementExpectedValueMissing
)
is SingleInt -> realmQuery . equalTo (
fieldName ,
singleValue ?: throw PokerAnalyticsException . FilterElementExpectedValueMissing
)
is ListOfInt -> realmQuery . equalTo ( fieldName , listOfValues . first ( ) )
is ListOfInt -> realmQuery . equalTo ( fieldName , listOfValues . first ( ) )
is ListOfDouble -> realmQuery . equalTo ( fieldName , listOfValues . first ( ) * sign )
is ListOfDouble -> realmQuery . equalTo ( fieldName , listOfValues . first ( ) * sign )
is ListOfString -> realmQuery . equalTo ( fieldName , listOfValues . first ( ) )
is ListOfString -> realmQuery . equalTo ( fieldName , listOfValues . first ( ) )
@ -862,20 +842,11 @@ sealed class QueryCondition : FilterElementRow {
}
}
Operator . MORE -> {
Operator . MORE -> {
when ( this ) {
when ( this ) {
is SingleDate -> realmQuery . greaterThanOrEqualTo (
is SingleDate -> realmQuery . greaterThanOrEqualTo ( fieldName , singleValue . startOfDay ( ) )
fieldName ,
is Duration -> realmQuery . greaterThan ( fieldName , netDuration )
singleValue ?. startOfDay ( ) ?: throw PokerAnalyticsException . FilterElementExpectedValueMissing
)
is Duration -> realmQuery . greaterThan (
fieldName ,
netDuration ?: throw PokerAnalyticsException . FilterElementExpectedValueMissing
)
is TournamentFinalPosition -> realmQuery . greaterThanOrEqualTo ( fieldName , listOfValues . first ( ) )
is TournamentFinalPosition -> realmQuery . greaterThanOrEqualTo ( fieldName , listOfValues . first ( ) )
is TournamentNumberOfPlayer -> realmQuery . greaterThanOrEqualTo ( fieldName , listOfValues . first ( ) )
is TournamentNumberOfPlayer -> realmQuery . greaterThanOrEqualTo ( fieldName , listOfValues . first ( ) )
is SingleInt -> realmQuery . greaterThan (
is SingleInt -> realmQuery . greaterThan ( fieldName , singleValue )
fieldName ,
singleValue ?: throw PokerAnalyticsException . FilterElementExpectedValueMissing
)
is ListOfInt -> realmQuery . greaterThan ( fieldName , listOfValues . first ( ) )
is ListOfInt -> realmQuery . greaterThan ( fieldName , listOfValues . first ( ) )
is NetAmountLost -> realmQuery . lessThan ( fieldName , listOfValues . first ( ) * - 1 )
is NetAmountLost -> realmQuery . lessThan ( fieldName , listOfValues . first ( ) * - 1 )
is ListOfDouble -> realmQuery . greaterThan ( fieldName , listOfValues . first ( ) * sign )
is ListOfDouble -> realmQuery . greaterThan ( fieldName , listOfValues . first ( ) * sign )
@ -884,20 +855,11 @@ sealed class QueryCondition : FilterElementRow {
}
}
Operator . LESS -> {
Operator . LESS -> {
when ( this ) {
when ( this ) {
is SingleDate -> realmQuery . lessThanOrEqualTo (
is SingleDate -> realmQuery . lessThanOrEqualTo ( fieldName , singleValue . endOfDay ( ) )
fieldName ,
is Duration -> realmQuery . lessThan ( fieldName , netDuration )
singleValue ?. endOfDay ( ) ?: throw PokerAnalyticsException . FilterElementExpectedValueMissing
)
is Duration -> realmQuery . lessThan (
fieldName ,
netDuration ?: throw PokerAnalyticsException . FilterElementExpectedValueMissing
)
is TournamentFinalPosition -> realmQuery . lessThanOrEqualTo ( fieldName , listOfValues . first ( ) )
is TournamentFinalPosition -> realmQuery . lessThanOrEqualTo ( fieldName , listOfValues . first ( ) )
is TournamentNumberOfPlayer -> realmQuery . lessThanOrEqualTo ( fieldName , listOfValues . first ( ) )
is TournamentNumberOfPlayer -> realmQuery . lessThanOrEqualTo ( fieldName , listOfValues . first ( ) )
is SingleInt -> realmQuery . lessThan (
is SingleInt -> realmQuery . lessThan ( fieldName , singleValue )
fieldName ,
singleValue ?: throw PokerAnalyticsException . FilterElementExpectedValueMissing
)
is ListOfInt -> realmQuery . lessThan ( fieldName , listOfValues . first ( ) )
is ListOfInt -> realmQuery . lessThan ( fieldName , listOfValues . first ( ) )
is NetAmountLost -> {
is NetAmountLost -> {
realmQuery . greaterThan ( fieldName , listOfValues . first ( ) * - 1 )
realmQuery . greaterThan ( fieldName , listOfValues . first ( ) * - 1 )
@ -947,6 +909,7 @@ sealed class QueryCondition : FilterElementRow {
}
}
}
}
override val viewType : Int
override val viewType : Int
get ( ) {
get ( ) {
return when ( this ) {
return when ( this ) {