commit
aa2b3056ac
@ -0,0 +1,5 @@ |
||||
package net.pokeranalytics.android.model.filter |
||||
|
||||
enum class FilterComponent { |
||||
|
||||
} |
||||
@ -0,0 +1,55 @@ |
||||
package net.pokeranalytics.android.model.filter |
||||
|
||||
import io.realm.RealmObject |
||||
import io.realm.RealmResults |
||||
|
||||
/** |
||||
* We want to be able to store filters in the database: |
||||
* - filters can be a combination of sub filters |
||||
* - filters can be applied to different type of objects: Sessions, Hands, Transactions... |
||||
* - filters can be applied to a list of different type of objects (feed) |
||||
* |
||||
* A filter is described by the following: |
||||
* - a data type: Session, Hands... |
||||
* - a field: table size of a Session |
||||
* - an operator: equal, >=, <... |
||||
* - a value: an id, a number, a date... |
||||
* |
||||
* We can decide to have a collection of [operator, value] for a field |
||||
* |
||||
* Combination: |
||||
* - multiple datatype filters should be handled as 'OR' |
||||
* - multiple field filters should be handled as 'AND' |
||||
* - multiple '=' filters as 'OR' |
||||
* - multiple 'Greater than', 'less than' as 'AND' |
||||
* - multiple values as 'OR' |
||||
* |
||||
* Also: |
||||
* A filter should be able to be converted into a Realm query |
||||
* |
||||
*/ |
||||
|
||||
interface Filterable { |
||||
|
||||
} |
||||
|
||||
class FilterManager { |
||||
|
||||
fun test(realmResults: RealmResults<RealmObject>) { |
||||
realmResults.where().greaterThan("test", 5).findAll() |
||||
} |
||||
} |
||||
|
||||
fun MutableList<Filterable>.filter(filter: FilterComponent) : List<Filterable> { |
||||
|
||||
return this.filter { f -> |
||||
return@filter true |
||||
} |
||||
} |
||||
|
||||
|
||||
// doesnt compile: Class "FilterableRealmObject" must contain at least 1 persistable field. |
||||
|
||||
//class FilterableRealmObject : RealmObject(), Filterable { |
||||
// |
||||
//} |
||||
Loading…
Reference in new issue