package com.tinkerpop.pipes.transform; import com.tinkerpop.blueprints.Direction; import com.tinkerpop.blueprints.Edge; import com.tinkerpop.blueprints.Vertex; import com.tinkerpop.pipes.AbstractPipe; import com.tinkerpop.pipes.util.PipeHelper; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ public class EdgesVerticesPipe extends AbstractPipe<Edge, Vertex> implements TransformPipe<Edge, Vertex> { protected Direction direction; protected Vertex nextVertex = null; public EdgesVerticesPipe(final Direction direction) { this.direction = direction; } public void reset() { this.nextVertex = null; super.reset(); } public Vertex processNextStart() { if (null != nextVertex) { final Vertex temp = nextVertex; nextVertex = null; return temp; } else { if (direction.equals(Direction.BOTH)) { final Edge edge = this.starts.next(); this.nextVertex = edge.getVertex(Direction.IN); return edge.getVertex(Direction.OUT); } else { return this.starts.next().getVertex(direction); } } } public Direction getDirection() { return this.direction; } public String toString() { return PipeHelper.makePipeString(this, direction.name().toLowerCase()); } }