Search in sources :

Example 1 with GraphQueryPipe

use of com.tinkerpop.pipes.transform.GraphQueryPipe in project gremlin by tinkerpop.

the class GremlinFluentUtility method optimizePipelineForGraphQuery.

private static boolean optimizePipelineForGraphQuery(final GremlinPipeline pipeline, final Pipe pipe) {
    GraphQueryPipe queryPipe = null;
    for (int i = pipeline.size() - 1; i > 0; i--) {
        final Pipe temp = pipeline.get(i);
        if (temp instanceof GraphQueryPipe) {
            queryPipe = (GraphQueryPipe) temp;
            break;
        } else if (!(temp instanceof IdentityPipe))
            break;
    }
    if (null != queryPipe) {
        if (pipe instanceof PropertyFilterPipe) {
            final PropertyFilterPipe temp = (PropertyFilterPipe) pipe;
            queryPipe.addHasContainer(new QueryPipe.HasContainer(temp.getKey(), temp.getPredicate(), temp.getValue()));
        } else if (pipe instanceof IntervalFilterPipe) {
            final IntervalFilterPipe temp = (IntervalFilterPipe) pipe;
            queryPipe.addIntervalContainer(new QueryPipe.IntervalContainer(temp.getKey(), temp.getStartValue(), temp.getEndValue()));
        } else if (pipe instanceof RangeFilterPipe) {
            queryPipe.setLowRange(((RangeFilterPipe) pipe).getLowRange());
            queryPipe.setHighRange(((RangeFilterPipe) pipe).getHighRange());
        }
        pipeline.addPipe(new IdentityPipe());
        return true;
    } else {
        return false;
    }
}
Also used : PropertyFilterPipe(com.tinkerpop.pipes.filter.PropertyFilterPipe) RangeFilterPipe(com.tinkerpop.pipes.filter.RangeFilterPipe) GraphQueryPipe(com.tinkerpop.pipes.transform.GraphQueryPipe) IntervalFilterPipe(com.tinkerpop.pipes.filter.IntervalFilterPipe) RangeFilterPipe(com.tinkerpop.pipes.filter.RangeFilterPipe) IdentityPipe(com.tinkerpop.pipes.IdentityPipe) VerticesVerticesPipe(com.tinkerpop.pipes.transform.VerticesVerticesPipe) VertexQueryPipe(com.tinkerpop.pipes.transform.VertexQueryPipe) Pipe(com.tinkerpop.pipes.Pipe) PropertyFilterPipe(com.tinkerpop.pipes.filter.PropertyFilterPipe) GraphQueryPipe(com.tinkerpop.pipes.transform.GraphQueryPipe) IntervalFilterPipe(com.tinkerpop.pipes.filter.IntervalFilterPipe) EdgesVerticesPipe(com.tinkerpop.pipes.transform.EdgesVerticesPipe) QueryPipe(com.tinkerpop.pipes.transform.QueryPipe) VerticesEdgesPipe(com.tinkerpop.pipes.transform.VerticesEdgesPipe) IdentityPipe(com.tinkerpop.pipes.IdentityPipe) VertexQueryPipe(com.tinkerpop.pipes.transform.VertexQueryPipe) GraphQueryPipe(com.tinkerpop.pipes.transform.GraphQueryPipe) QueryPipe(com.tinkerpop.pipes.transform.QueryPipe)

Aggregations

IdentityPipe (com.tinkerpop.pipes.IdentityPipe)1 Pipe (com.tinkerpop.pipes.Pipe)1 IntervalFilterPipe (com.tinkerpop.pipes.filter.IntervalFilterPipe)1 PropertyFilterPipe (com.tinkerpop.pipes.filter.PropertyFilterPipe)1 RangeFilterPipe (com.tinkerpop.pipes.filter.RangeFilterPipe)1 EdgesVerticesPipe (com.tinkerpop.pipes.transform.EdgesVerticesPipe)1 GraphQueryPipe (com.tinkerpop.pipes.transform.GraphQueryPipe)1 QueryPipe (com.tinkerpop.pipes.transform.QueryPipe)1 VertexQueryPipe (com.tinkerpop.pipes.transform.VertexQueryPipe)1 VerticesEdgesPipe (com.tinkerpop.pipes.transform.VerticesEdgesPipe)1 VerticesVerticesPipe (com.tinkerpop.pipes.transform.VerticesVerticesPipe)1