package er.neo4jadaptor.query.all_of_type; import org.neo4j.graphdb.GraphDatabaseService; import org.neo4j.graphdb.PropertyContainer; import org.neo4j.graphdb.index.Index; import com.webobjects.eoaccess.EOEntity; import com.webobjects.eocontrol.EOQualifier; import er.neo4jadaptor.query.Filter; import er.neo4jadaptor.query.Results; import er.neo4jadaptor.query.all_of_type.results.ObjectsOfType; import er.neo4jadaptor.storage.IndexProvider; /** * Filter that returns all the records that belong to some entity. It uses Lucene index for filtering. * * @author Jedrzej Sobanski * * @param <Type> */ public class AllOfTypeFilter <Type extends PropertyContainer> extends Filter <Type> { @SuppressWarnings("unchecked") private Results<Type> allOfType(GraphDatabaseService db, EOEntity entity) { Index<Type> index = (Index<Type>) IndexProvider.instance.getIndexForEntity(db, entity); return new ObjectsOfType(index, entity); } @Override public Results<Type> doFilter(GraphDatabaseService db, EOEntity entity, EOQualifier qualifier) { if (qualifier == null) { return allOfType(db, entity); } else { return successor.doFilter(db, entity, qualifier); } } }