
com.tinkerpop.gremlin.process.util.DefaultTraversal Maven / Gradle / Ivy
package com.tinkerpop.gremlin.process.util;
import com.tinkerpop.gremlin.process.Step;
import com.tinkerpop.gremlin.process.Traversal;
import com.tinkerpop.gremlin.process.Traverser;
import com.tinkerpop.gremlin.process.graph.strategy.AsStrategy;
import com.tinkerpop.gremlin.process.graph.strategy.TraverserSourceStrategy;
import com.tinkerpop.gremlin.structure.Graph;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
*/
public class DefaultTraversal implements Traversal {
protected final List steps = new ArrayList<>();
protected final Strategies strategies = new DefaultStrategies(this);
protected final Memory memory = new DefaultMemory();
public DefaultTraversal() {
this.strategies.register(TraverserSourceStrategy.instance());
this.strategies.register(AsStrategy.instance());
}
public DefaultTraversal(final Graph graph) {
this();
this.memory().set(Graph.Key.hide("g"), graph);
}
public List getSteps() {
return this.steps;
}
public Memory memory() {
return this.memory;
}
public Strategies strategies() {
return this.strategies;
}
public void addStarts(final Iterator> starts) {
((Step) this.steps.get(0)).addStarts(starts);
}
public > T addStep(final Step, E> step) {
TraversalHelper.insertStep(step, this.getSteps().size(), this);
return (T) this;
}
public boolean hasNext() {
this.applyStrategies();
return this.steps.get(this.steps.size() - 1).hasNext();
}
public E next() {
this.applyStrategies();
return ((Traverser) this.steps.get(this.steps.size() - 1).next()).get();
}
public String toString() {
return this.getSteps().toString();
}
public boolean equals(final Object object) {
return object instanceof Iterator && TraversalHelper.areEqual(this, (Iterator) object);
}
private void applyStrategies() {
if (!this.strategies.complete()) this.strategies.apply();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy