|
|
|
@ -12,7 +12,6 @@ import net.pokeranalytics.android.model.TournamentType |
|
|
|
import net.pokeranalytics.android.model.interfaces.Identifiable |
|
|
|
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.view.RowRepresentable |
|
|
|
|
|
|
|
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterElementRow |
|
|
|
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterElementRow |
|
|
|
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterSectionRow |
|
|
|
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterSectionRow |
|
|
|
import net.pokeranalytics.android.util.NULL_TEXT |
|
|
|
import net.pokeranalytics.android.util.NULL_TEXT |
|
|
|
@ -41,8 +40,6 @@ inline fun <reified T : Filterable> List<QueryCondition>.queryWith(query: RealmQ |
|
|
|
/** |
|
|
|
/** |
|
|
|
* 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 |
|
|
|
* To handle that, the enum has a public [valueMap] variable |
|
|
|
|
|
|
|
* A new type should also set the expected numericValues required in the [filterValuesExpectedKeys] |
|
|
|
|
|
|
|
*/ |
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
sealed class QueryCondition : FilterElementRow { |
|
|
|
sealed class QueryCondition : FilterElementRow { |
|
|
|
@ -56,11 +53,11 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
|
|
|
|
|
|
|
|
inline fun <reified T:Identifiable>getInstance(): QueryCondition { |
|
|
|
inline fun <reified T:Identifiable>getInstance(): QueryCondition { |
|
|
|
return when (T::class.java) { |
|
|
|
return when (T::class.java) { |
|
|
|
Bankroll::class.java -> BANKROLL() |
|
|
|
AnyBankroll::class.java -> AnyBankroll() |
|
|
|
Game::class.java -> GAME() |
|
|
|
Game::class.java -> AnyGame() |
|
|
|
Location::class.java -> LOCATION() |
|
|
|
Location::class.java -> AnyLocation() |
|
|
|
TournamentName::class.java -> TOURNAMENT_NAME() |
|
|
|
TournamentName::class.java -> AnyTournamentName() |
|
|
|
TournamentFeature::class.java -> ANY_TOURNAMENT_FEATURES() |
|
|
|
TournamentFeature::class.java -> AnyTournamentFeature() |
|
|
|
else -> throw PokerAnalyticsException.QueryTypeUnhandled |
|
|
|
else -> throw PokerAnalyticsException.QueryTypeUnhandled |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -129,7 +126,7 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
return when (this) { |
|
|
|
return when (this) { |
|
|
|
is StaticDataQueryCondition -> label() |
|
|
|
is StaticDataQueryCondition -> label() |
|
|
|
is QueryDataCondition<*> -> label() |
|
|
|
is QueryDataCondition<*> -> label() |
|
|
|
is BLIND -> label() |
|
|
|
is AnyBlind -> label() |
|
|
|
else -> baseId |
|
|
|
else -> baseId |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
@ -138,12 +135,9 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
|
|
|
|
|
|
|
|
abstract class QueryDataCondition < T: NameManageable > : QueryCondition(), ListOfString { |
|
|
|
abstract class QueryDataCondition < T: NameManageable > : QueryCondition(), ListOfString { |
|
|
|
fun setObject(dataObject: T) { |
|
|
|
fun setObject(dataObject: T) { |
|
|
|
this.dataObject = dataObject |
|
|
|
|
|
|
|
this.listOfValues.add(dataObject.id) |
|
|
|
this.listOfValues.add(dataObject.id) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
var dataObject: NameManageable? = null |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override var listOfValues = ArrayList<String>() |
|
|
|
override var listOfValues = ArrayList<String>() |
|
|
|
|
|
|
|
|
|
|
|
abstract val entity : Class<T> |
|
|
|
abstract val entity : Class<T> |
|
|
|
@ -161,7 +155,7 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
return completeLabel |
|
|
|
return completeLabel |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
fun labelForValue(realm:Realm, value:String): String { |
|
|
|
private fun labelForValue(realm:Realm, value:String): String { |
|
|
|
val query = realm.where(entity) |
|
|
|
val query = realm.where(entity) |
|
|
|
return query.equalTo("id", value).findFirst()?.name ?: NULL_TEXT |
|
|
|
return query.equalTo("id", value).findFirst()?.name ?: NULL_TEXT |
|
|
|
} |
|
|
|
} |
|
|
|
@ -171,10 +165,9 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
override var singleValue: Int = 0 |
|
|
|
override var singleValue: Int = 0 |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
abstract class StaticDataQueryCondition : QueryCondition(), ListOfInt { |
|
|
|
abstract class ListOfValueQueryCondition < T: Any > : QueryCondition(), ListOfValues<T> { |
|
|
|
var data : RowRepresentable? = null |
|
|
|
override var listOfValues = ArrayList<T>() |
|
|
|
override var listOfValues = ArrayList<Int>() |
|
|
|
abstract fun labelForValue(value:T): String |
|
|
|
abstract fun labelForValue(value:Int): String |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun label(): String { |
|
|
|
fun label(): String { |
|
|
|
return when (listOfValues.size) { |
|
|
|
return when (listOfValues.size) { |
|
|
|
@ -185,6 +178,10 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
abstract class StaticDataQueryCondition : ListOfValueQueryCondition<Int>() { |
|
|
|
|
|
|
|
override var listOfValues = ArrayList<Int>() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
open class OperationQueryCondition : QueryCondition() |
|
|
|
open class OperationQueryCondition : QueryCondition() |
|
|
|
|
|
|
|
|
|
|
|
open class DurationOperationQueryCondition : OperationQueryCondition(), Duration { |
|
|
|
open class DurationOperationQueryCondition : OperationQueryCondition(), Duration { |
|
|
|
@ -215,122 +212,120 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
override val showTime: Boolean = true |
|
|
|
override val showTime: Boolean = true |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
object LIVE : QueryCondition() |
|
|
|
object IsLive : QueryCondition() |
|
|
|
object CASH : QueryCondition() |
|
|
|
object IsCash : QueryCondition() |
|
|
|
object ONLINE : QueryCondition() |
|
|
|
object IsOnline : QueryCondition() |
|
|
|
object TOURNAMENT: QueryCondition() |
|
|
|
object IsTournament : QueryCondition() |
|
|
|
class BANKROLL: QueryDataCondition<Bankroll>() { override val entity: Class<Bankroll> = Bankroll::class.java } |
|
|
|
class AnyBankroll: QueryDataCondition<Bankroll>() { override val entity: Class<Bankroll> = Bankroll::class.java } |
|
|
|
class GAME: QueryDataCondition<Game>() { override val entity: Class<Game> = Game::class.java } |
|
|
|
class AnyGame: QueryDataCondition<Game>() { override val entity: Class<Game> = Game::class.java } |
|
|
|
class TOURNAMENT_NAME: QueryDataCondition<TournamentName>() { override val entity: Class<TournamentName> = TournamentName::class.java } |
|
|
|
class AnyTournamentName: QueryDataCondition<TournamentName>() { override val entity: Class<TournamentName> = TournamentName::class.java } |
|
|
|
class ANY_TOURNAMENT_FEATURES: QueryDataCondition<TournamentFeature>() { override val entity: Class<TournamentFeature> = TournamentFeature::class.java } |
|
|
|
class AnyTournamentFeature: QueryDataCondition<TournamentFeature>() { override val entity: Class<TournamentFeature> = TournamentFeature::class.java } |
|
|
|
class ALL_TOURNAMENT_FEATURES: QueryDataCondition<TournamentFeature>() { override val entity: Class<TournamentFeature> = TournamentFeature::class.java } |
|
|
|
class AllTournamentFeature: QueryDataCondition<TournamentFeature>() { override val entity: Class<TournamentFeature> = TournamentFeature::class.java } |
|
|
|
class LOCATION: QueryDataCondition<Location>() { override val entity: Class<Location> = Location::class.java } |
|
|
|
class AnyLocation: QueryDataCondition<Location>() { override val entity: Class<Location> = Location::class.java } |
|
|
|
|
|
|
|
|
|
|
|
class LIMIT: StaticDataQueryCondition() { |
|
|
|
class AnyLimit: StaticDataQueryCondition() { |
|
|
|
override fun labelForValue(value: Int): String { |
|
|
|
override fun labelForValue(value: Int): String { |
|
|
|
return Limit.values()[value].getDisplayName() |
|
|
|
return Limit.values()[value].getDisplayName() |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
class TABLE_SIZE: StaticDataQueryCondition() { |
|
|
|
class AnyTableSize: StaticDataQueryCondition() { |
|
|
|
override fun labelForValue(value: Int): String { |
|
|
|
override fun labelForValue(value: Int): String { |
|
|
|
return TableSize(value).getDisplayName() |
|
|
|
return TableSize(value).getDisplayName() |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
class TOURNAMENT_TYPE: StaticDataQueryCondition() { |
|
|
|
class AnyTournamentType: StaticDataQueryCondition() { |
|
|
|
override fun labelForValue(value: Int): String { |
|
|
|
override fun labelForValue(value: Int): String { |
|
|
|
return TournamentType.values()[value].getDisplayName() |
|
|
|
return TournamentType.values()[value].getDisplayName() |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
class BLIND: QueryCondition(), ListOfString { |
|
|
|
class AnyBlind: ListOfValueQueryCondition<String>() { |
|
|
|
override var listOfValues = ArrayList<String>() |
|
|
|
override var listOfValues = ArrayList<String>() |
|
|
|
|
|
|
|
override fun labelForValue(value:String): String { return value } |
|
|
|
fun label(): String { |
|
|
|
|
|
|
|
val completeLabel = when (listOfValues.size) { |
|
|
|
|
|
|
|
0 -> return NULL_TEXT |
|
|
|
|
|
|
|
1,2 -> { |
|
|
|
|
|
|
|
return listOfValues.map { it }.joinToString(", ") |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else -> "${listOfValues.size} $baseId" |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return completeLabel |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
class LAST_GAMES: SingleValueQueryCondition() |
|
|
|
class LastGame: SingleValueQueryCondition() |
|
|
|
class LAST_SESSIONS: SingleValueQueryCondition() |
|
|
|
class LastSession: SingleValueQueryCondition() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MORE_NUMBER_OF_TABLE: OperationQueryCondition(), More |
|
|
|
class MoreNumberOfTable: OperationQueryCondition(), More |
|
|
|
class LESS_NUMBER_OF_TABLE: OperationQueryCondition(), Less |
|
|
|
class LessNumberOfTable: OperationQueryCondition(), Less |
|
|
|
class BETWEEN_NUMBER_OF_TABLE: BetweenQueryCondition(), Between |
|
|
|
class BetweenNumberOfTable: BetweenQueryCondition(), Between |
|
|
|
|
|
|
|
|
|
|
|
class MORE_THAN_NET_RESULT: AmountOperationQueryCondition(), More |
|
|
|
class MoreNetResult: AmountOperationQueryCondition(), More |
|
|
|
class LESS_THAN_NET_RESULT: AmountOperationQueryCondition(), Less |
|
|
|
class LessNetResult: AmountOperationQueryCondition(), Less |
|
|
|
|
|
|
|
|
|
|
|
class MORE_THAN_BUY_IN: AmountOperationQueryCondition(), More |
|
|
|
class MoreBuyIn: AmountOperationQueryCondition(), More |
|
|
|
class LESS_THAN_BUY_IN: AmountOperationQueryCondition(), Less |
|
|
|
class LessBuyIn: AmountOperationQueryCondition(), Less |
|
|
|
|
|
|
|
|
|
|
|
class MORE_THAN_CASH_OUT: AmountOperationQueryCondition(), More |
|
|
|
class MoreCashOut: AmountOperationQueryCondition(), More |
|
|
|
class LESS_THAN_CASH_OUT: AmountOperationQueryCondition(), Less |
|
|
|
class LessCashOut: AmountOperationQueryCondition(), Less |
|
|
|
|
|
|
|
|
|
|
|
class MORE_THAN_TIPS: AmountOperationQueryCondition(), More |
|
|
|
class MoreTips: AmountOperationQueryCondition(), More |
|
|
|
class LESS_THAN_TIPS: AmountOperationQueryCondition(), Less |
|
|
|
class LessTips: AmountOperationQueryCondition(), Less |
|
|
|
|
|
|
|
|
|
|
|
class MORE_THAN_NUMBER_OF_PLAYER: OperationQueryCondition(), More |
|
|
|
class MoreNumberOfPlayer: OperationQueryCondition(), More |
|
|
|
class LESS_THAN_NUMBER_OF_PLAYER: OperationQueryCondition(), Less |
|
|
|
class LessNumberOfPlayer: OperationQueryCondition(), Less |
|
|
|
class BETWEEN_NUMBER_OF_PLAYER: BetweenQueryCondition(), Between |
|
|
|
class BetweenNumberOfPlayer: BetweenQueryCondition(), Between |
|
|
|
|
|
|
|
|
|
|
|
class MORE_THAN_TOURNAMENT_FEE: OperationQueryCondition(), More |
|
|
|
class MoreTournamentFee: OperationQueryCondition(), More |
|
|
|
class LESS_THAN_TOURNAMENT_FEE: OperationQueryCondition(), Less |
|
|
|
class LessTournamentFee: OperationQueryCondition(), Less |
|
|
|
class BETWEEN_TOURNAMENT_FEE: BetweenQueryCondition(), BetweenRightExclusive { |
|
|
|
class BetweenTournamentFee: BetweenQueryCondition(), BetweenRightExclusive { |
|
|
|
fun between(leftValue:Double, rightValue:Double) { |
|
|
|
fun between(leftValue:Double, rightValue:Double) { |
|
|
|
listOfValues = arrayListOf(leftValue, rightValue) |
|
|
|
listOfValues = arrayListOf(leftValue, rightValue) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
class MIN_RE_BUY: AmountOperationQueryCondition(), More |
|
|
|
class MoreRebuy: AmountOperationQueryCondition(), More |
|
|
|
class MAX_RE_BUY: AmountOperationQueryCondition(), Less |
|
|
|
class LessRebuy: AmountOperationQueryCondition(), Less |
|
|
|
|
|
|
|
|
|
|
|
class STARTED_FROM_DATE: DateQuery() |
|
|
|
class StartedFromDate: DateQuery() |
|
|
|
class STARTED_TO_DATE: DateQuery(), Less |
|
|
|
class StartedToDate: DateQuery(), Less |
|
|
|
class ENDED_FROM_DATE: DateQuery() |
|
|
|
class EndedFromDate: DateQuery() |
|
|
|
class ENDED_TO_DATE: DateQuery(), Less |
|
|
|
class EndedToDate: DateQuery(), Less |
|
|
|
|
|
|
|
|
|
|
|
class DAY_OF_WEEK: StaticDataQueryCondition() { |
|
|
|
class AnyDayOfWeek: StaticDataQueryCondition() { |
|
|
|
override fun labelForValue(value: Int): String { |
|
|
|
override fun labelForValue(value: Int): String { |
|
|
|
return DateFormatSymbols.getInstance(Locale.getDefault()).weekdays[value] |
|
|
|
return DateFormatSymbols.getInstance(Locale.getDefault()).weekdays[value] |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
class MONTH: StaticDataQueryCondition() { |
|
|
|
class AnyMonthOfYear: StaticDataQueryCondition() { |
|
|
|
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] |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
class YEAR: StaticDataQueryCondition() { |
|
|
|
class AnyYear: StaticDataQueryCondition() { |
|
|
|
override fun labelForValue(value: Int): String { |
|
|
|
override fun labelForValue(value: Int): String { |
|
|
|
return "$value" |
|
|
|
return "$value" |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
object WEEK_DAY: QueryCondition() |
|
|
|
object IsWeekDay: QueryCondition() |
|
|
|
object WEEK_END: QueryCondition() |
|
|
|
object IsWeekEnd: QueryCondition() |
|
|
|
object TODAY: QueryCondition() |
|
|
|
object IsToday: QueryCondition() |
|
|
|
object YESTERDAY: QueryCondition() |
|
|
|
object WasYesterday: QueryCondition() |
|
|
|
object TODAY_AND_YESTERDAY: QueryCondition() |
|
|
|
object WasTodayAndYesterday: QueryCondition() |
|
|
|
object THIS_WEEK: QueryCondition() |
|
|
|
object DuringThisWeek: QueryCondition() |
|
|
|
object THIS_MONTH: QueryCondition() |
|
|
|
object DuringThisMonth: QueryCondition() |
|
|
|
object THIS_YEAR: QueryCondition() |
|
|
|
object DuringThisYear: QueryCondition() |
|
|
|
class PAST_DAYS: SingleValueQueryCondition() |
|
|
|
|
|
|
|
class MORE_THAN_DURATION: DurationOperationQueryCondition(), More |
|
|
|
object TournamentFee: ListOfValueQueryCondition<Double>() { |
|
|
|
class LESS_THAN_DURATION: DurationOperationQueryCondition(), Less |
|
|
|
override fun labelForValue(value: Double): String { |
|
|
|
class STARTED_FROM_TIME: TimeQuery() |
|
|
|
return "$value" |
|
|
|
class ENDED_TO_TIME: TimeQuery(), Less |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
class COMMENT: QueryCondition() |
|
|
|
|
|
|
|
|
|
|
|
class PastDay: SingleValueQueryCondition() |
|
|
|
|
|
|
|
class MoreDuration: DurationOperationQueryCondition(), More |
|
|
|
|
|
|
|
class LessDuration: DurationOperationQueryCondition(), Less |
|
|
|
|
|
|
|
class StartedFromTime: TimeQuery() |
|
|
|
|
|
|
|
class EndedToTime: TimeQuery(), Less |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class HasComment: QueryCondition() |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* main method of the enum |
|
|
|
* main method of the enum |
|
|
|
@ -350,16 +345,17 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
is Between -> realmQuery.between(fieldName, leftValue, rightValue) |
|
|
|
is Between -> realmQuery.between(fieldName, leftValue, rightValue) |
|
|
|
is BetweenLeftExclusive -> realmQuery.greaterThan(fieldName, leftValue).and().lessThanOrEqualTo(fieldName, rightValue) |
|
|
|
is BetweenLeftExclusive -> realmQuery.greaterThan(fieldName, leftValue).and().lessThanOrEqualTo(fieldName, rightValue) |
|
|
|
is BetweenRightExclusive -> realmQuery.greaterThanOrEqualTo(fieldName, leftValue).and().lessThan(fieldName, rightValue) |
|
|
|
is BetweenRightExclusive -> realmQuery.greaterThanOrEqualTo(fieldName, leftValue).and().lessThan(fieldName, rightValue) |
|
|
|
LIVE, ONLINE -> realmQuery.equalTo(fieldName, this == LIVE) |
|
|
|
IsLive, IsOnline -> realmQuery.equalTo(fieldName, this == IsLive) |
|
|
|
CASH -> realmQuery.equalTo(fieldName, Session.Type.CASH_GAME.ordinal) |
|
|
|
IsCash -> realmQuery.equalTo(fieldName, Session.Type.CASH_GAME.ordinal) |
|
|
|
TOURNAMENT -> realmQuery.equalTo(fieldName, Session.Type.TOURNAMENT.ordinal) |
|
|
|
IsTournament -> realmQuery.equalTo(fieldName, Session.Type.TOURNAMENT.ordinal) |
|
|
|
is ALL_TOURNAMENT_FEATURES -> { |
|
|
|
is AllTournamentFeature -> { |
|
|
|
listOfValues.forEach { |
|
|
|
listOfValues.forEach { |
|
|
|
realmQuery.equalTo(fieldName, it) |
|
|
|
realmQuery.equalTo(fieldName, it) |
|
|
|
} |
|
|
|
} |
|
|
|
realmQuery |
|
|
|
realmQuery |
|
|
|
} |
|
|
|
} |
|
|
|
is BLIND -> realmQuery.`in`(fieldName, listOfValues.toTypedArray()) |
|
|
|
is AnyBlind -> realmQuery.`in`(fieldName, listOfValues.toTypedArray()) |
|
|
|
|
|
|
|
is TournamentFee -> realmQuery.`in`(fieldName, listOfValues.toTypedArray()) |
|
|
|
is QueryDataCondition<*> -> realmQuery.`in`(fieldName, listOfValues.toTypedArray()) |
|
|
|
is QueryDataCondition<*> -> realmQuery.`in`(fieldName, listOfValues.toTypedArray()) |
|
|
|
is StaticDataQueryCondition -> realmQuery.`in`(fieldName, listOfValues.toTypedArray()) |
|
|
|
is StaticDataQueryCondition -> realmQuery.`in`(fieldName, listOfValues.toTypedArray()) |
|
|
|
is DateQuery -> { |
|
|
|
is DateQuery -> { |
|
|
|
@ -370,45 +366,45 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
is SingleValueQueryCondition -> realmQuery.equalTo(fieldName, singleValue) |
|
|
|
is SingleValueQueryCondition -> realmQuery.equalTo(fieldName, singleValue) |
|
|
|
WEEK_END, WEEK_DAY -> { |
|
|
|
IsWeekEnd, IsWeekDay -> { |
|
|
|
var query = realmQuery |
|
|
|
var query = realmQuery |
|
|
|
if (this == WEEK_DAY) { |
|
|
|
if (this == IsWeekDay) { |
|
|
|
query = realmQuery.not() |
|
|
|
query = realmQuery.not() |
|
|
|
} |
|
|
|
} |
|
|
|
query.`in`(fieldName, arrayOf(Calendar.SATURDAY, Calendar.SUNDAY)) |
|
|
|
query.`in`(fieldName, arrayOf(Calendar.SATURDAY, Calendar.SUNDAY)) |
|
|
|
} |
|
|
|
} |
|
|
|
TODAY -> { |
|
|
|
IsToday -> { |
|
|
|
val startDate = Date() |
|
|
|
val startDate = Date() |
|
|
|
realmQuery.between(fieldName, startDate.startOfDay(), startDate.endOfDay()) |
|
|
|
realmQuery.between(fieldName, startDate.startOfDay(), startDate.endOfDay()) |
|
|
|
} |
|
|
|
} |
|
|
|
TODAY_AND_YESTERDAY-> { |
|
|
|
WasTodayAndYesterday-> { |
|
|
|
val startDate = Date() |
|
|
|
val startDate = Date() |
|
|
|
val calendar = Calendar.getInstance() |
|
|
|
val calendar = Calendar.getInstance() |
|
|
|
calendar.time = startDate |
|
|
|
calendar.time = startDate |
|
|
|
calendar.add(Calendar.HOUR_OF_DAY, -24) |
|
|
|
calendar.add(Calendar.HOUR_OF_DAY, -24) |
|
|
|
realmQuery.between(fieldName, calendar.time.startOfDay(), startDate.endOfDay()) |
|
|
|
realmQuery.between(fieldName, calendar.time.startOfDay(), startDate.endOfDay()) |
|
|
|
} |
|
|
|
} |
|
|
|
YESTERDAY -> { |
|
|
|
WasYesterday -> { |
|
|
|
val calendar = Calendar.getInstance() |
|
|
|
val calendar = Calendar.getInstance() |
|
|
|
calendar.time = Date() |
|
|
|
calendar.time = Date() |
|
|
|
calendar.add(Calendar.HOUR_OF_DAY, -24) |
|
|
|
calendar.add(Calendar.HOUR_OF_DAY, -24) |
|
|
|
realmQuery.between(fieldName, calendar.time.startOfDay(), calendar.time.endOfDay()) |
|
|
|
realmQuery.between(fieldName, calendar.time.startOfDay(), calendar.time.endOfDay()) |
|
|
|
} |
|
|
|
} |
|
|
|
THIS_WEEK -> { |
|
|
|
DuringThisWeek -> { |
|
|
|
val startDate = Date() |
|
|
|
val startDate = Date() |
|
|
|
val calendar = Calendar.getInstance() |
|
|
|
val calendar = Calendar.getInstance() |
|
|
|
calendar.time = startDate |
|
|
|
calendar.time = startDate |
|
|
|
calendar.set(Calendar.DAY_OF_WEEK_IN_MONTH, Calendar.SUNDAY) |
|
|
|
calendar.set(Calendar.DAY_OF_WEEK_IN_MONTH, Calendar.SUNDAY) |
|
|
|
realmQuery.between(fieldName, calendar.time.startOfDay(), startDate.endOfDay()) |
|
|
|
realmQuery.between(fieldName, calendar.time.startOfDay(), startDate.endOfDay()) |
|
|
|
} |
|
|
|
} |
|
|
|
THIS_MONTH -> { |
|
|
|
DuringThisMonth -> { |
|
|
|
val startDate = Date() |
|
|
|
val startDate = Date() |
|
|
|
val calendar = Calendar.getInstance() |
|
|
|
val calendar = Calendar.getInstance() |
|
|
|
calendar.time = startDate |
|
|
|
calendar.time = startDate |
|
|
|
calendar.set(Calendar.DAY_OF_MONTH, 1) |
|
|
|
calendar.set(Calendar.DAY_OF_MONTH, 1) |
|
|
|
realmQuery.between(fieldName, calendar.time.startOfDay(), startDate.endOfDay()) |
|
|
|
realmQuery.between(fieldName, calendar.time.startOfDay(), startDate.endOfDay()) |
|
|
|
} |
|
|
|
} |
|
|
|
THIS_YEAR -> { |
|
|
|
DuringThisYear -> { |
|
|
|
val startDate = Date() |
|
|
|
val startDate = Date() |
|
|
|
val calendar = Calendar.getInstance() |
|
|
|
val calendar = Calendar.getInstance() |
|
|
|
calendar.time = startDate |
|
|
|
calendar.time = startDate |
|
|
|
@ -429,6 +425,9 @@ sealed class QueryCondition : FilterElementRow { |
|
|
|
is SingleDate -> singleValue = filterCondition.getValue() |
|
|
|
is SingleDate -> singleValue = filterCondition.getValue() |
|
|
|
is SingleInt -> singleValue = filterCondition.getValue() |
|
|
|
is SingleInt -> singleValue = filterCondition.getValue() |
|
|
|
is SingleDouble -> singleValue = filterCondition.getValue() |
|
|
|
is SingleDouble -> singleValue = filterCondition.getValue() |
|
|
|
|
|
|
|
//TODO POURQUOI ? |
|
|
|
|
|
|
|
is AnyBlind -> listOfValues = filterCondition.getValues() |
|
|
|
|
|
|
|
is StaticDataQueryCondition -> listOfValues = filterCondition.getValues() |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|