Skip to content

Commit

Permalink
removed getAt methods for Element, added better method/property suppo…
Browse files Browse the repository at this point in the history
…rt for methods, simplified loaders greatly.
  • Loading branch information
okram committed Oct 26, 2011
1 parent d457283 commit 0a3cebb
Show file tree
Hide file tree
Showing 13 changed files with 137 additions and 325 deletions.
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
package com.tinkerpop.gremlin.loaders

import com.tinkerpop.blueprints.pgm.Edge
import com.tinkerpop.blueprints.pgm.Element
import com.tinkerpop.blueprints.pgm.Vertex
import com.tinkerpop.gremlin.Gremlin
import com.tinkerpop.gremlin.Tokens

/**
* @author Marko A. Rodriguez (http://markorodriguez.com)
Expand All @@ -17,47 +14,19 @@ class ElementLoader {
((Element) delegate).setProperty(name, value)
}

Vertex.metaClass.propertyMissing = {final String name ->
Element.metaClass.methodMissing = {final String name, final def args ->
if (Gremlin.isStep(name)) {
return delegate."$name"()
return delegate._()."$name"(* args)
} else {
if (name.equals(Tokens.ID)) {
return ((Vertex) delegate).getId()
} else {
return ((Vertex) delegate).getProperty(name)
}
throw new MissingMethodException(name, delegate.getClass());
}
}

Edge.metaClass.propertyMissing = {final String name ->
Element.metaClass.propertyMissing = {final String name ->
if (Gremlin.isStep(name)) {
return delegate."$name"()
return delegate._()."$name"()
} else {
if (name.equals(Tokens.ID)) {
return ((Edge) delegate).getId()
} else if (name.equals(Tokens.LABEL)) {
return ((Edge) delegate).getLabel()
} else {
return ((Edge) delegate).getProperty(name)
}
}
}

Vertex.metaClass.getAt = {final String key ->
if (key.equals(Tokens.ID)) {
return ((Vertex) delegate).getId()
} else {
return ((Vertex) delegate).getProperty(key)
}
}

Edge.metaClass.getAt = {final String key ->
if (key.equals(Tokens.ID)) {
return ((Edge) delegate).getId()
} else if (key.equals(Tokens.LABEL)) {
return ((Edge) delegate).getLabel();
} else {
return ((Edge) delegate).getProperty(key)
return ((Element) delegate).getProperty(name)
}
}

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ class GraphLoader {

Graph.metaClass.propertyMissing = {final String name ->
if (Gremlin.isStep(name)) {
return delegate."$name"();
return delegate._()."$name"();
} else {
throw new MissingPropertyException(name, delegate.getClass());
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,10 @@
package com.tinkerpop.gremlin.loaders

import com.tinkerpop.blueprints.pgm.Edge
import com.tinkerpop.blueprints.pgm.Vertex
import com.tinkerpop.gremlin.Gremlin
import com.tinkerpop.gremlin.Tokens
import com.tinkerpop.gremlin.groovy.GremlinGroovyPipeline
import com.tinkerpop.gremlin.pipes.filter.IdFilterPipe
import com.tinkerpop.gremlin.pipes.filter.LabelFilterPipe
import com.tinkerpop.gremlin.pipes.filter.PropertyFilterPipe
import com.tinkerpop.pipes.filter.FilterPipe
import com.tinkerpop.pipes.util.PipeHelper

/**
Expand All @@ -16,17 +14,97 @@ class PipeLoader {

public static void load() {

Gremlin.addStep(Tokens.STEP);
// filter steps
Gremlin.addStep(Tokens.FILTER);
Gremlin.addStep(Tokens.SIMPLEPATH);
Gremlin.addStep(Tokens.DEDUP);
Gremlin.addStep(Tokens.AND);
Gremlin.addStep(Tokens.OR);
Gremlin.addStep(Tokens.BACK);
Gremlin.addStep(Tokens.EXCEPT);
Gremlin.addStep(Tokens.RETAIN);
Gremlin.addStep(Tokens.RANDOM);
Gremlin.addStep(Tokens.PROPERTYFILTER);
// sideeffect steps
Gremlin.addStep(Tokens.SIDEEFFECT);
Gremlin.addStep(Tokens.AGGREGATE);
Gremlin.addStep(Tokens.GROUPCOUNT);
Gremlin.addStep(Tokens.OPTIONAL)
Gremlin.addStep(Tokens.TABLE);
Gremlin.addStep(Tokens.AS)
/*[Graph, Vertex, Edge].each {
it.metaClass.as = {final String name ->
return new GremlinGroovyPipeline(delegate).as(name);
}
}*/
// transform steps
Gremlin.addStep(Tokens.TRANSFORM);
Gremlin.addStep(Tokens.COPYSPLIT);
Gremlin.addStep(Tokens.FAIRMERGE);
Gremlin.addStep(Tokens.EXHAUSTMERGE);
Gremlin.addStep(Tokens.ID);
Gremlin.addStep(Tokens.IFTHENELSE);
Gremlin.addStep(Tokens.CAP);
Gremlin.addStep(Tokens.LABEL);
Gremlin.addStep(Tokens.LOOP);
Gremlin.addStep(Tokens.MAP);
Gremlin.addStep(Tokens.MEMOIZE);
Gremlin.addStep(Tokens.GATHER);
Gremlin.addStep(Tokens.SCATTER);
Gremlin.addStep(Tokens.PATHS);
Gremlin.addStep(Tokens.OUT);

Vertex.metaClass.out = {final String... labels ->
return new GremlinGroovyPipeline(delegate).out(labels);
}

Gremlin.addStep(Tokens.OUTE);
Vertex.metaClass.outE = {final String... labels ->
return new GremlinGroovyPipeline(delegate).outE(labels);
}

Gremlin.addStep(Tokens.IN);
Vertex.metaClass.in = {final String... labels ->
return new GremlinGroovyPipeline(delegate).in(labels);
}

Gremlin.addStep(Tokens.INE);
Vertex.metaClass.inE = {final String... labels ->
return new GremlinGroovyPipeline(delegate).inE(labels);
}

Gremlin.addStep(Tokens.BOTH);
Vertex.metaClass.both = {final String... labels ->
return new GremlinGroovyPipeline(delegate).both(labels);
}

Gremlin.addStep(Tokens.BOTHE);
Vertex.metaClass.bothE = {final String... labels ->
return new GremlinGroovyPipeline(delegate).bothE(labels);
}

Gremlin.addStep(Tokens.INV);
Edge.metaClass.inV = {->
return new GremlinGroovyPipeline(delegate).inV();
}

Gremlin.addStep(Tokens.OUTV);
Edge.metaClass.outV = {->
return new GremlinGroovyPipeline(delegate).outV();
}

Gremlin.addStep(Tokens.BOTHV);
Edge.metaClass.bothV = {->
return new GremlinGroovyPipeline(delegate).bothV();
}


GremlinGroovyPipeline.metaClass.propertyMissing = {final String name ->
if (Gremlin.isStep(name)) {
return delegate."$name"();
} else {
if (name.equals(Tokens.ID)) {
return ((GremlinGroovyPipeline) delegate).id();
} else if (name.equals(Tokens.LABEL)) {
return ((GremlinGroovyPipeline) delegate).label();
} else {
return ((GremlinGroovyPipeline) delegate).property(name);
}
return ((GremlinGroovyPipeline) delegate).property(name);
}
}

Expand Down Expand Up @@ -89,51 +167,5 @@ class PipeLoader {
GremlinGroovyPipeline.metaClass.getAt = {final Range range ->
return ((GremlinGroovyPipeline) delegate).range(range.getFrom() as Integer, range.getTo() as Integer);
}

GremlinGroovyPipeline.metaClass.getAt = {final String name ->
if (name.equals(Tokens.ID)) {
return ((GremlinGroovyPipeline) delegate).id();
} else if (name.equals(Tokens.LABEL)) {
return ((GremlinGroovyPipeline) delegate).label();
} else {
return ((GremlinGroovyPipeline) delegate).property(name);
}
}

GremlinGroovyPipeline.metaClass.getAt = {final Map map ->
GremlinGroovyPipeline pipeline = (GremlinGroovyPipeline) delegate;
map.each {key, value ->
if (key.equals(Tokens.LABEL)) {
if (value instanceof List) {
pipeline.addPipe(new LabelFilterPipe((String) value[1], Tokens.mapFilter(value[0])))
} else {
pipeline.addPipe(new LabelFilterPipe((String) value, FilterPipe.Filter.EQUAL));
}
} else if (key.equals(Tokens.ID)) {
if (value instanceof List) {
pipeline.addPipe(new IdFilterPipe(value[1], Tokens.mapFilter(value[0])))
} else {
pipeline.addPipe(new IdFilterPipe(value, FilterPipe.Filter.EQUAL));
}
} else {
if (value instanceof List) {
pipeline.addPipe(new PropertyFilterPipe((String) key, value[1], Tokens.mapFilter(value[0])))
} else {
pipeline.addPipe(new PropertyFilterPipe((String) key, value, FilterPipe.Filter.EQUAL))
}
}

}
return pipeline;
}

Gremlin.addStep(Tokens.STEP);
/*GremlinGroovyPipeline.metaClass.step = {final Closure closure ->
return ((GremlinGroovyPipeline) delegate).step(new GroovyPipeFunction(closure));
}*/

TransformPipeLoader.load();
FilterPipeLoader.load();
SideEffectPipeLoader.load();
}
}

This file was deleted.

This file was deleted.

Loading

0 comments on commit 0a3cebb

Please sign in to comment.