package com.revolsys.gis.parallel; import java.util.ArrayList; import java.util.List; import java.util.function.Function; import java.util.function.Predicate; import com.revolsys.predicate.Predicates; import com.revolsys.record.Record; import com.revolsys.record.filter.AttributesEqualFilter; import com.revolsys.record.filter.AttributesEqualOrNullFilter; public class CompareFilterFactory implements Function<Record, Predicate<Record>> { private List<String> equalFieldNames = new ArrayList<>(); private List<String> equalOrNullFieldNames = new ArrayList<>(); @Override public Predicate<Record> apply(final Record object) { Predicate<Record> predicate = Predicates.all(); if (!this.equalFieldNames.isEmpty()) { final Predicate<Record> valuesFilter = new AttributesEqualFilter(object, this.equalFieldNames); predicate = valuesFilter; } if (!this.equalOrNullFieldNames.isEmpty()) { final Predicate<Record> valuesFilter = new AttributesEqualOrNullFilter(object, this.equalOrNullFieldNames); predicate = predicate.and(valuesFilter); } return predicate; } public List<String> getEqualFieldNames() { return this.equalFieldNames; } public List<String> getEqualOrNullFieldNames() { return this.equalOrNullFieldNames; } public void setEqualFieldNames(final List<String> equalFieldNames) { this.equalFieldNames = equalFieldNames; } public void setEqualOrNullFieldNames(final List<String> equalOrNullFieldNames) { this.equalOrNullFieldNames = equalOrNullFieldNames; } }