/** * Removes any filter that has been set or added previously. * * @see #setFilter(SerializablePredicate) */ public default void clearFilters() { setFilter(null); }
/** * Sets a filter for an item property. The filter replaces any filter that * has been set or added previously. * * @see #setFilter(SerializablePredicate) * @see #setFilterByValue(ValueProvider, Object) * @see #addFilter(ValueProvider, SerializablePredicate) * * @param valueProvider * value provider that gets the property value, not * <code>null</code> * @param valueFilter * filter for testing the property value, not <code>null</code> */ public default <V> void setFilter(ValueProvider<T, V> valueProvider, SerializablePredicate<V> valueFilter) { setFilter(InMemoryDataProviderHelpers .createValueProviderFilter(valueProvider, valueFilter)); }
/** * Sets a filter that requires an item property to have a specific value. * The property value and the provided value are compared using * {@link Object#equals(Object)}. The filter replaces any filter that has * been set or added previously. * * @see #setFilter(SerializablePredicate) * @see #setFilter(ValueProvider, SerializablePredicate) * @see #addFilterByValue(ValueProvider, Object) * * @param valueProvider * value provider that gets the property value, not * <code>null</code> * @param requiredValue * the value that the property must have for the filter to pass */ public default <V> void setFilterByValue(ValueProvider<T, V> valueProvider, V requiredValue) { setFilter(InMemoryDataProviderHelpers.createEqualsFilter(valueProvider, requiredValue)); }
/** * Adds a filter to be applied to all queries. The filter will be used in * addition to any filter that has been set or added previously. * * @see #addFilter(ValueProvider, SerializablePredicate) * @see #addFilterByValue(ValueProvider, Object) * @see #setFilter(SerializablePredicate) * * @param filter * the filter to add, not <code>null</code> */ public default void addFilter(SerializablePredicate<T> filter) { Objects.requireNonNull(filter, "Filter cannot be null"); if (getFilter() == null) { setFilter(filter); } else { SerializablePredicate<T> oldFilter = getFilter(); setFilter(item -> oldFilter.test(item) && filter.test(item)); } }