parent
36b1dddec4
commit
5cb406dc96
@ -1,77 +0,0 @@ |
|||||||
package net.pokeranalytics.android.model.filter |
|
||||||
|
|
||||||
import io.realm.RealmObject |
|
||||||
import io.realm.RealmQuery |
|
||||||
import net.pokeranalytics.android.model.filter.interfaces.Filterable |
|
||||||
import java.util.* |
|
||||||
|
|
||||||
enum class DateFilterable : Filterable { |
|
||||||
STARTED_FROM_DATE, |
|
||||||
STARTED_TO_DATE, |
|
||||||
ENDED_FROM_DATE, |
|
||||||
ENDED_TO_DATE, |
|
||||||
DAY_OF_WEEK, |
|
||||||
MONTH, |
|
||||||
YEAR, |
|
||||||
WEEK_DAY, |
|
||||||
WEEK_END, |
|
||||||
; |
|
||||||
|
|
||||||
private enum class Field(var fieldName:String) { |
|
||||||
START_DATE("startDate"), |
|
||||||
END_DATE("endDate"), |
|
||||||
DAY("dayOfWeek"), |
|
||||||
MONTH("month"), |
|
||||||
YEAR("year"), |
|
||||||
} |
|
||||||
|
|
||||||
override var valueMap : Map<String, Any?>? = null |
|
||||||
|
|
||||||
override val filterValuesExpectedKeys : Array<String>? |
|
||||||
get() { |
|
||||||
return when (this) { |
|
||||||
STARTED_FROM_DATE, STARTED_TO_DATE, ENDED_FROM_DATE, ENDED_TO_DATE -> arrayOf("date") |
|
||||||
DAY_OF_WEEK -> arrayOf("dayOfWeek") |
|
||||||
MONTH -> arrayOf("month") |
|
||||||
YEAR -> arrayOf("year") |
|
||||||
else -> null |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
override fun filter(realmQuery: RealmQuery<out RealmObject>): RealmQuery<out RealmObject> { |
|
||||||
return when (this) { |
|
||||||
STARTED_FROM_DATE -> { |
|
||||||
val date : Date by filterValues |
|
||||||
realmQuery.greaterThanOrEqualTo(Field.START_DATE.fieldName, date) |
|
||||||
} |
|
||||||
STARTED_TO_DATE -> { |
|
||||||
val date : Date by filterValues |
|
||||||
realmQuery.lessThanOrEqualTo(Field.START_DATE.fieldName, date) |
|
||||||
} |
|
||||||
ENDED_FROM_DATE -> { |
|
||||||
val date : Date by filterValues |
|
||||||
realmQuery.greaterThanOrEqualTo(Field.END_DATE.fieldName, date) |
|
||||||
} |
|
||||||
ENDED_TO_DATE -> { |
|
||||||
val date : Date by filterValues |
|
||||||
realmQuery.lessThanOrEqualTo(Field.END_DATE.fieldName, date) |
|
||||||
} |
|
||||||
DAY_OF_WEEK -> { |
|
||||||
val dayOfWeek : Int by filterValues |
|
||||||
realmQuery.equalTo(Field.DAY.fieldName, dayOfWeek) |
|
||||||
} |
|
||||||
MONTH -> { |
|
||||||
val month: Int by filterValues |
|
||||||
realmQuery.equalTo(Field.MONTH.fieldName, month) |
|
||||||
} |
|
||||||
YEAR -> { |
|
||||||
val year: Int by filterValues |
|
||||||
realmQuery.equalTo(Field.YEAR.fieldName, year) |
|
||||||
} |
|
||||||
WEEK_END -> { |
|
||||||
realmQuery.`in`(Field.DAY.fieldName, arrayOf(Calendar.SATURDAY,Calendar.SUNDAY)) |
|
||||||
} |
|
||||||
WEEK_DAY -> WEEK_END.filter(realmQuery.not()) |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
@ -1,5 +0,0 @@ |
|||||||
package net.pokeranalytics.android.model.filter |
|
||||||
|
|
||||||
enum class FilterComponent { |
|
||||||
|
|
||||||
} |
|
||||||
@ -0,0 +1,83 @@ |
|||||||
|
package net.pokeranalytics.android.model.realm |
||||||
|
|
||||||
|
import io.realm.RealmList |
||||||
|
import io.realm.RealmObject |
||||||
|
import io.realm.annotations.Ignore |
||||||
|
import net.pokeranalytics.android.model.filter.FilterType |
||||||
|
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterElement |
||||||
|
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterElement.* |
||||||
|
import java.util.* |
||||||
|
import kotlin.collections.ArrayList |
||||||
|
|
||||||
|
open class FilterComponent(filterName : String = "") : RealmObject() { |
||||||
|
|
||||||
|
var filterName : String = filterName |
||||||
|
|
||||||
|
constructor(filterElements: ArrayList<FilterElement>) : this(filterElements.first().filterType.name) { |
||||||
|
this.ids = when (FilterType.valueOf(this.filterName)) { |
||||||
|
FilterType.GAME -> { |
||||||
|
RealmList<String>().apply { |
||||||
|
this.addAll(filterElements.map { |
||||||
|
(it as FilterElement.Game).game.id |
||||||
|
}) |
||||||
|
} |
||||||
|
} |
||||||
|
else -> null |
||||||
|
} |
||||||
|
|
||||||
|
this.values = when (FilterType.valueOf(filterName)) { |
||||||
|
FilterType.LIMIT -> { |
||||||
|
RealmList<Int>().apply { |
||||||
|
this.addAll(filterElements.map { |
||||||
|
(it as FilterElement.Limit).limit.ordinal |
||||||
|
}) |
||||||
|
} |
||||||
|
} |
||||||
|
else -> null |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
constructor(filterElement:FilterElement) : this(filterElement.filterType.name) { |
||||||
|
when (filterElement) { |
||||||
|
is From -> date = filterElement.date |
||||||
|
is To -> date = filterElement.date |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
val filterType : FilterType |
||||||
|
get() = FilterType.valueOf(filterName) |
||||||
|
.apply { |
||||||
|
this.setValueFrom(this@FilterComponent) |
||||||
|
} |
||||||
|
|
||||||
|
var date : Date? = null |
||||||
|
var values : RealmList<Int>? = null |
||||||
|
var ids : RealmList<String>? = null |
||||||
|
|
||||||
|
@Ignore |
||||||
|
val value : Double? = null |
||||||
|
|
||||||
|
@Ignore |
||||||
|
val leftValue : Double? = null |
||||||
|
|
||||||
|
@Ignore |
||||||
|
val rightValue : Double? = null |
||||||
|
|
||||||
|
@Ignore |
||||||
|
val blinds : Array<Map<String,Any?>>? = null |
||||||
|
|
||||||
|
@Ignore |
||||||
|
val dayOfWeek : Int? = null |
||||||
|
|
||||||
|
@Ignore |
||||||
|
val month : Int? = null |
||||||
|
|
||||||
|
@Ignore |
||||||
|
val year : Int? = null |
||||||
|
} |
||||||
|
|
||||||
|
open class BlindFilterComponent : RealmObject() { |
||||||
|
var sb : Double? = null |
||||||
|
var bb : Double? = null |
||||||
|
var code : String? = null |
||||||
|
} |
||||||
Loading…
Reference in new issue