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);
}
|