package org.jboss.windup.exec.rulefilters;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import org.jboss.forge.furnace.util.Predicate;
import org.jboss.windup.config.RuleProvider;
/**
* AND predicate which needs all of the given predicates to accept.
*
* @author <a href="mailto:ozizka@redhat.com">Ondrej Zizka</a>
*/
public class AndPredicate implements Predicate<RuleProvider>
{
protected final Set<Predicate<RuleProvider>> predicates;
/**
* Creates the {@link AndPredicate} that returns true only if all of the given conditions are met.
*/
@SafeVarargs
public AndPredicate(Predicate<RuleProvider>... predicates)
{
this.predicates = new HashSet<>(Arrays.asList(predicates));
}
@Override
public boolean accept(RuleProvider provider)
{
boolean result = true;
if (this.predicates.isEmpty())
return false;
for (Predicate<RuleProvider> predicate : this.predicates)
{
if (!predicate.accept(provider))
return false;
}
return result;
}
@Override
public String toString()
{
StringBuilder sb = new StringBuilder("AndPredicate{");
for (Predicate<RuleProvider> predicate : predicates)
{
sb.append("\t").append(predicate).append("\n");
}
return sb.append("}").toString();
}
}