package com.revolsys.visitor;
import java.util.Comparator;
import java.util.function.Consumer;
import java.util.function.Predicate;
import com.revolsys.comparator.ComparatorProxy;
import com.revolsys.predicate.PredicateProxy;
import com.revolsys.predicate.Predicates;
public abstract class AbstractVisitor<T>
implements Consumer<T>, PredicateProxy<T>, ComparatorProxy<T> {
private Comparator<T> comparator;
private Predicate<T> predicate = Predicates.all();
public AbstractVisitor() {
}
public AbstractVisitor(final Comparator<T> comparator) {
this.comparator = comparator;
}
public AbstractVisitor(final Predicate<T> predicate) {
setPredicate(predicate);
}
public AbstractVisitor(final Predicate<T> predicate, final Comparator<T> comparator) {
this.comparator = comparator;
setPredicate(predicate);
}
@Override
public Comparator<T> getComparator() {
return this.comparator;
}
@Override
public Predicate<T> getPredicate() {
return this.predicate;
}
public void setComparator(final Comparator<T> comparator) {
this.comparator = comparator;
}
public void setPredicate(final Predicate<T> predicate) {
if (predicate == null) {
this.predicate = Predicates.all();
} else {
this.predicate = predicate;
}
}
}