package er.neo4jadaptor.query.neo4j_eval.retrievers; import java.util.Iterator; import org.neo4j.graphdb.PropertyContainer; import er.neo4jadaptor.query.neo4j_eval.Cost; /** * For a {@link Retriever} that returns {@link String} values this one returns the same values * but in lowercase. This is intended to be used for case insensitive comparisons. * * @author Jedrzej Sobanski * * @param <T> */ public class LowercaseRetriever <T extends PropertyContainer> implements Retriever<T, String> { private final Retriever<T, String> wrapped; public LowercaseRetriever(Retriever<T, String> wrapped) { this.wrapped = wrapped; } public Iterator<String> retrieve(T node) { final Iterator<String> it = wrapped.retrieve(node); return new Iterator<String>() { public boolean hasNext() { return it.hasNext(); } public String next() { return it.next().toLowerCase(); } public void remove() { throw new UnsupportedOperationException(); } }; } public Cost getCost() { return wrapped.getCost(); } }