package com.revolsys.visitor; import java.util.Comparator; import java.util.function.Consumer; import java.util.function.Predicate; public class DelegatingVisitor<T> extends AbstractVisitor<T> { private Consumer<T> action; public DelegatingVisitor() { } public DelegatingVisitor(final Comparator<T> comparator) { super(comparator); } public DelegatingVisitor(final Comparator<T> comparator, final Consumer<T> action) { super(comparator); this.action = action; } public DelegatingVisitor(final Consumer<T> action) { this.action = action; } public DelegatingVisitor(final Predicate<T> filter) { super(filter); } public DelegatingVisitor(final Predicate<T> filter, final Comparator<T> comparator) { super(filter, comparator); } public DelegatingVisitor(final Predicate<T> filter, final Comparator<T> comparator, final Consumer<T> action) { super(filter, comparator); this.action = action; } public DelegatingVisitor(final Predicate<T> filter, final Consumer<T> action) { super(filter); this.action = action; } @Override public void accept(final T item) { final Predicate<T> predicate = getPredicate(); if (predicate.test(item)) { this.action.accept(item); } } public Consumer<T> getAction() { return this.action; } public void setAction(final Consumer<T> action) { this.action = action; } @Override public String toString() { return this.action.toString(); } }