package org.gbif.checklistbank.neo.traverse;
import java.util.List;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Path;
import org.neo4j.graphdb.ResourceIterable;
import org.neo4j.graphdb.ResourceIterator;
import org.neo4j.graphdb.traversal.TraversalDescription;
/**
* Path iterator that traverses multiple start nodes in a given traversal description.
*/
public class MultiRootPathIterator extends MultiRooIterator<Path> {
private final TraversalDescription td;
private MultiRootPathIterator(List<Node> roots, TraversalDescription td) {
super(roots);
this.td = td;
prefetch();
}
public static ResourceIterable<Path> create(final List<Node> roots, final TraversalDescription td) {
return new ResourceIterable<Path>() {
@Override
public ResourceIterator<Path> iterator() {
return new MultiRootPathIterator(roots, td);
}
};
}
@Override
ResourceIterator<Path> iterateRoot(Node root) {
return td.traverse(root).iterator();
}
}