diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt index e3843a17..5b2857f9 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt @@ -4,6 +4,7 @@ import io.realm.MutableRealmInteger import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey +import net.pokeranalytics.android.ui.view.rowrepresentable.FilterElement import java.util.* //import net.pokeranalytics.android.FilterComponent @@ -21,6 +22,34 @@ open class Filter : RealmObject() { // for MutableRealmInteger, see https://realm.io/docs/java/latest/#counters val usageCount: MutableRealmInteger = MutableRealmInteger.valueOf(0) - var components: RealmList? = null - + var components: RealmList = RealmList() + + fun componentsFrom(filterElements: ArrayList) { + + components.clear() + + var sections = filterElements.mapNotNull { + it.filterSection + }.distinct() + + sections.forEach { section -> + var _filterElements = filterElements.filter { + it.filterSection?.let { _section -> + _section == section + } ?: run { + false + } + } + + if (_filterElements.size == 1) { + var component : FilterComponent = FilterComponent(_filterElements.first()) + components.add(component) + } else { + var casted = arrayListOf() + casted.addAll(_filterElements) + var component : FilterComponent = FilterComponent(casted) + components.add(component) + } + } + } }