package org.gbif.checklistbank.neo.traverse; import java.util.List; import com.google.common.collect.Lists; import org.neo4j.graphdb.Node; 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 MultiRootNodeIterator extends MultiRooIterator<Node> { private final TraversalDescription td; private MultiRootNodeIterator(List<Node> roots, TraversalDescription td) { super(roots); this.td = td; prefetch(); } public static ResourceIterable<Node> create(final Node root, final TraversalDescription td) { return create(Lists.newArrayList(root), td); } public static ResourceIterable<Node> create(final List<Node> roots, final TraversalDescription td) { return new ResourceIterable<Node>() { @Override public ResourceIterator<Node> iterator() { return new MultiRootNodeIterator(roots, td); } }; } @Override ResourceIterator<Node> iterateRoot(Node root) { return td.traverse(root).nodes().iterator(); } }