package com.revolsys.record.filter; import java.util.Collection; import java.util.function.Predicate; import com.revolsys.io.PathName; import com.revolsys.record.Record; public interface RecordFilters { static Predicate<Record> fieldEquals(final CharSequence fieldName, final Object value) { return (record) -> { return record.equalValue(fieldName, value); }; } static Predicate<Record> fieldPathEquals(final String fieldPath, final Object value) { return (record) -> { return record.equalPathValue(fieldPath, value); }; } static Predicate<Record> fieldPathsEquals(final Collection<? extends CharSequence> fieldPaths, final Object value) { return (record) -> { for (final CharSequence fieldPath : fieldPaths) { if (!record.equalPathValue(fieldPath, value)) { return false; } } return true; }; } static Predicate<Record> fieldsEquals(final Collection<? extends CharSequence> fieldNames, final Object value) { return (record) -> { for (final CharSequence fieldName : fieldNames) { if (!record.equalValue(fieldName, value)) { return false; } } return true; }; } static Predicate<Record> isNotNull(final String fieldName) { return (record) -> { return record.hasValue(fieldName); }; } static Predicate<Record> isNull(final String fieldName) { return (record) -> { return !record.hasValue(fieldName); }; } static Predicate<Record> typeName(final PathName pathName) { return (record) -> { final PathName typePathName = record.getPathName(); return pathName.equals(typePathName); }; } static Predicate<Record> typeNames(final Collection<PathName> pathNames) { return (record) -> { final PathName typePathName = record.getPathName(); return pathNames.contains(typePathName); }; } }