package com.tinkerpop.gremlin.groovy; import com.tinkerpop.gremlin.java.GremlinPipeline; import com.tinkerpop.pipes.branch.LoopPipe; import com.tinkerpop.pipes.util.structures.Pair; import com.tinkerpop.pipes.util.structures.Row; import com.tinkerpop.pipes.util.structures.Table; import com.tinkerpop.pipes.util.structures.Tree; import groovy.lang.Closure; import java.util.Collection; import java.util.List; import java.util.Map; /** * @author Marko A. Rodriguez (http://markorodriguez.com) */ public class GremlinGroovyPipeline<S, E> extends GremlinPipeline<S, E> { public GremlinGroovyPipeline() { super(); } public GremlinGroovyPipeline(final Object starts) { super(starts); } public GremlinGroovyPipeline<S, E> aggregate(final Closure closure) { return (GremlinGroovyPipeline<S, E>) super.aggregate(new GroovyPipeFunction(this.asMap, closure)); } public GremlinGroovyPipeline<S, E> aggregate(final Collection aggregate, final Closure closure) { return (GremlinGroovyPipeline<S, E>) super.aggregate(aggregate, new GroovyPipeFunction(this.asMap, closure)); } public GremlinGroovyPipeline<S, E> dedup(final Closure closure) { return (GremlinGroovyPipeline<S, E>) super.dedup(new GroovyPipeFunction(this.asMap, closure)); } public GremlinGroovyPipeline<S, E> filter(final Closure closure) { return (GremlinGroovyPipeline<S, E>) super.filter(new GroovyPipeFunction(this.asMap, closure)); } public GremlinGroovyPipeline<S, ?> gather(final Closure closure) { return (GremlinGroovyPipeline<S, ?>) super.gather(new GroovyPipeFunction(this.asMap, closure)); } public GremlinGroovyPipeline<S, E> groupBy(final Map<?, List<?>> map, final Closure keyClosure, final Closure valueClosure) { return (GremlinGroovyPipeline<S, E>) super.groupBy(map, new GroovyPipeFunction(this.asMap, keyClosure), new GroovyPipeFunction(this.asMap, valueClosure)); } public GremlinGroovyPipeline<S, E> groupBy(final Closure keyClosure, final Closure valueClosure) { return (GremlinGroovyPipeline<S, E>) super.groupBy(new GroovyPipeFunction(this.asMap, keyClosure), new GroovyPipeFunction(this.asMap, valueClosure)); } public GremlinGroovyPipeline<S, E> groupBy(final Closure keyClosure, final Closure valueClosure, Closure reduceClosure) { return (GremlinGroovyPipeline<S, E>) super.groupBy(new GroovyPipeFunction(this.asMap, keyClosure), new GroovyPipeFunction(this.asMap, valueClosure), new GroovyPipeFunction(this.asMap, reduceClosure)); } public GremlinGroovyPipeline<S, E> groupBy(final Map reduceMap, final Closure keyClosure, final Closure valueClosure, Closure reduceClosure) { return (GremlinGroovyPipeline<S, E>) super.groupBy(reduceMap, new GroovyPipeFunction(this.asMap, keyClosure), new GroovyPipeFunction(this.asMap, valueClosure), new GroovyPipeFunction(this.asMap, reduceClosure)); } public GremlinGroovyPipeline<S, E> groupCount(final Closure keyClosure, Closure valueClosure) { return (GremlinGroovyPipeline<S, E>) super.groupCount(new GroovyPipeFunction(this.asMap, keyClosure), new GroovyPipeFunction<Pair<?, Number>, Number>(this.asMap, valueClosure)); } public GremlinGroovyPipeline<S, E> groupCount(final Closure keyClosure) { return (GremlinGroovyPipeline<S, E>) super.groupCount(new GroovyPipeFunction(this.asMap, keyClosure)); } public GremlinGroovyPipeline<S, E> groupCount(final Map<Object, Number> map, final Closure keyClosure, final Closure valueClosure) { return (GremlinGroovyPipeline<S, E>) super.groupCount(map, new GroovyPipeFunction(this.asMap, keyClosure), new GroovyPipeFunction<Pair<?, Number>, Number>(this.asMap, valueClosure)); } public GremlinGroovyPipeline<S, E> groupCount(final Map<Object, Number> map, final Closure keyClosure) { return (GremlinGroovyPipeline<S, E>) super.groupCount(map, new GroovyPipeFunction(this.asMap, keyClosure)); } public GremlinGroovyPipeline<S, ?> ifThenElse(final Closure ifClosure, final Closure thenClosure, final Closure elseClosure) { return (GremlinGroovyPipeline<S, ?>) super.ifThenElse(new GroovyPipeFunction<E, Boolean>(this.asMap, ifClosure), new GroovyPipeFunction<E, Object>(this.asMap, thenClosure), new GroovyPipeFunction<E, Object>(this.asMap, elseClosure)); } public GremlinGroovyPipeline<S, E> loop(final Integer numberedStep, final Closure whileClosure) { return (GremlinGroovyPipeline<S, E>) super.loop(numberedStep, new GroovyPipeFunction<LoopPipe.LoopBundle<E>, Boolean>(this.asMap, whileClosure)); } public GremlinGroovyPipeline<S, E> loop(final String namedStep, final Closure whileClosure) { return (GremlinGroovyPipeline<S, E>) super.loop(namedStep, new GroovyPipeFunction<LoopPipe.LoopBundle<E>, Boolean>(this.asMap, whileClosure)); } public GremlinGroovyPipeline<S, E> loop(final Integer numberedStep, final Closure whileClosure, final Closure emitClosure) { return (GremlinGroovyPipeline<S, E>) super.loop(numberedStep, new GroovyPipeFunction<LoopPipe.LoopBundle<E>, Boolean>(this.asMap, whileClosure), new GroovyPipeFunction<LoopPipe.LoopBundle<E>, Boolean>(this.asMap, emitClosure)); } public GremlinGroovyPipeline<S, E> loop(final String namedStep, final Closure whileClosure, final Closure emitClosure) { return (GremlinGroovyPipeline<S, E>) super.loop(namedStep, new GroovyPipeFunction<LoopPipe.LoopBundle<E>, Boolean>(this.asMap, whileClosure), new GroovyPipeFunction<LoopPipe.LoopBundle<E>, Boolean>(this.asMap, emitClosure)); } public GremlinGroovyPipeline<S, E> order(final Closure compareClosure) { return (GremlinGroovyPipeline<S, E>) super.order(new GroovyPipeFunction<Pair<E, E>, Integer>(this.asMap, compareClosure)); } public GremlinGroovyPipeline<S, E> path(final Closure... closures) { return (GremlinGroovyPipeline<S, E>) super.path(GroovyPipeFunction.generate(this.asMap, closures)); } public GremlinGroovyPipeline<S, E> orderMap(final Closure closure) { return (GremlinGroovyPipeline<S, E>) super.orderMap(new GroovyPipeFunction(this.asMap, closure)); } public GremlinGroovyPipeline<S, E> sideEffect(final Closure closure) { return (GremlinGroovyPipeline<S, E>) super.sideEffect(new GroovyPipeFunction<E, Object>(this.asMap, closure)); } public GremlinGroovyPipeline<S, ?> step(final Closure closure) { return (GremlinGroovyPipeline<S, ?>) super.step(new GroovyPipeFunction(this.asMap, closure)); } public GremlinGroovyPipeline<S, E> store(final Closure closure) { return (GremlinGroovyPipeline<S, E>) super.store(new GroovyPipeFunction<E, Object>(this.asMap, closure)); } public GremlinGroovyPipeline<S, E> store(final Collection storage, final Closure closure) { return (GremlinGroovyPipeline<S, E>) super.store(storage, new GroovyPipeFunction<E, Object>(this.asMap, closure)); } public GremlinGroovyPipeline<S, E> table(final Closure... closures) { return (GremlinGroovyPipeline<S, E>) super.table(GroovyPipeFunction.generate(this.asMap, closures)); } public GremlinGroovyPipeline<S, E> table(final Table table, final Closure... closures) { return (GremlinGroovyPipeline<S, E>) super.table(table, GroovyPipeFunction.generate(this.asMap, closures)); } public GremlinGroovyPipeline<S, E> table(final Table table, final List<String> columnNames, final Closure... closures) { return (GremlinGroovyPipeline<S, E>) super.table(table, columnNames, GroovyPipeFunction.generate(this.asMap, closures)); } public GremlinGroovyPipeline<S, E> tree(final Tree tree) { return (GremlinGroovyPipeline<S, E>) super.tree(tree); } public GremlinGroovyPipeline<S, E> tree(final Tree tree, final Closure... closures) { return (GremlinGroovyPipeline<S, E>) super.tree(tree, GroovyPipeFunction.generate(this.asMap, closures)); } public GremlinGroovyPipeline<S, E> tree(final Closure... closures) { return (GremlinGroovyPipeline<S, E>) super.tree(GroovyPipeFunction.generate(this.asMap, closures)); } public GremlinGroovyPipeline<S, Row> select(final Closure... closures) { return (GremlinGroovyPipeline<S, Row>) this.select(GroovyPipeFunction.generate(this.asMap, closures)); } public GremlinGroovyPipeline<S, Row> select(final Collection<String> columnNames, final Closure... closures) { return (GremlinGroovyPipeline<S, Row>) super.select(columnNames, GroovyPipeFunction.generate(this.asMap, closures)); } public GremlinGroovyPipeline<S, Row> select(final Collection<String> columnNames) { return (GremlinGroovyPipeline<S, Row>) super.select(columnNames); } public GremlinGroovyPipeline<S, ?> transform(final Closure closure) { return (GremlinGroovyPipeline<S, ?>) super.transform(new GroovyPipeFunction(this.asMap, closure)); } }