From: <pao...@us...> - 2006-02-27 17:29:55
|
Update of /cvsroot/hibernate/HibernateExt/metadata/src/java/org/hibernate/reflection/java In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv24797/metadata/src/java/org/hibernate/reflection/java Added Files: Comprehension.java Condition.java Log Message: Collection comprehension utilities --- NEW FILE: Comprehension.java --- package org.hibernate.reflection.java; import java.util.Collection; /** * @author Paolo Perrotta */ public class Comprehension { public static <T extends Collection<E>, E> T select(T collection, Condition<E> condition) { T result = getCollectionOfSameTypeAs( collection ); for ( E item : collection ) if ( condition.applyTo( item ) ) result.add( item ); return result; } private static <T> T getCollectionOfSameTypeAs(T collection) { try { return collection.getClass().newInstance(); } catch ( Exception e ) { throw new IllegalArgumentException( "Cannot instance collection " + collection ); } } } --- NEW FILE: Condition.java --- package org.hibernate.reflection.java; /** * @author Paolo Perrotta */ public interface Condition<T> { boolean applyTo(T item); } |