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