package net.toodarkpark.util.comparison; import java.util.*; import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.collections.Predicate; // is a property equal to at least one of these values? public class InPredicate implements Predicate { protected Collection values; protected Comparator comparator; public InPredicate( Collection aList ) { this( null, aList ); } public InPredicate( Comparator aComparator, Collection aList ) { super(); comparator = aComparator; values = aList; } public boolean evaluate( Object comparison ) throws Exception { if( comparator == null ) { return values.contains( comparison ); } else { Iterator iterator = values.iterator(); boolean isEqual = false; // slower than just checking for comparison in values while( iterator.hasNext() ) { Object currentObj = iterator.next(); if( comparator != null ) { isEqual = (comparator.compare( comparison, currentObj ) == 0); } else { isEqual = comparison.equals( currentObj ); } // first one to succeed wins $10,000! if( isEqual == true ) { return true; } } } return false; } }