Skip to content

Commit bd1f3f7

Browse files
committed
CompareRelation work propagated through.
1 parent 09720a4 commit bd1f3f7

18 files changed

+80
-219
lines changed

CHANGELOG.textile

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ h3. Version 2.4.0 (NOT OFFICIALLY RELEASE YET)
1919
* Added a dependency to Blueprints and now Pipes can reference graph constructs
2020
* Added all the graph-related pipes in Gremlin to Pipes
2121
* @FilterPipe.Filter@ no longer exists as now @Compare@ should be used
22+
* Full support for @CompareRelation@ from Blueprints
2223

2324
h3. Version 2.3.0 (March 20, 2013)
2425

LICENSE.txt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Copyright (c) 2009-2013, TinkerPop [http://tinkerpop.com]
1+
Copyright (c) 2009-Infinity, TinkerPop [http://tinkerpop.com]
22
All rights reserved.
33

44
Redistribution and use in source and binary forms, with or without

src/main/java/com/tinkerpop/pipes/filter/CollectionFilterPipe.java

+10-27
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.tinkerpop.pipes.filter;
22

3-
import com.tinkerpop.blueprints.Query;
3+
import com.tinkerpop.blueprints.Compare;
4+
import com.tinkerpop.blueprints.Contains;
45
import com.tinkerpop.pipes.AbstractPipe;
56
import com.tinkerpop.pipes.util.PipeHelper;
67
import com.tinkerpop.pipes.util.structures.AsMap;
@@ -18,50 +19,32 @@
1819
public abstract class CollectionFilterPipe<S> extends AbstractPipe<S, S> implements FilterPipe<S> {
1920

2021
private final Collection<S> storedCollection;
21-
private final Query.Compare compare;
22+
private final Contains contains;
2223

23-
public CollectionFilterPipe(final Collection<S> storedCollection, final Query.Compare compare) {
24+
public CollectionFilterPipe(final Collection<S> storedCollection, final Contains contains) {
2425
this.storedCollection = storedCollection;
25-
if (compare == Query.Compare.NOT_EQUAL || compare == Query.Compare.EQUAL) {
26-
this.compare = compare;
27-
} else {
28-
throw new IllegalArgumentException("The only legal filters are equals and not equals");
29-
}
26+
this.contains = contains;
3027
}
3128

32-
public CollectionFilterPipe(final Query.Compare compare, final AsMap asMap, final String... namedSteps) {
29+
public CollectionFilterPipe(final Contains contains, final AsMap asMap, final String... namedSteps) {
3330
this.storedCollection = new DynamicList<S>(asMap, namedSteps);
34-
if (compare == Query.Compare.NOT_EQUAL || compare == Query.Compare.EQUAL) {
35-
this.compare = compare;
36-
} else {
37-
throw new IllegalArgumentException("The only legal filters are equals and not equals");
38-
}
31+
this.contains = contains;
3932
}
4033

41-
42-
private boolean checkCollection(final S rightObject) {
43-
if (this.compare == Query.Compare.NOT_EQUAL) {
44-
return !this.storedCollection.contains(rightObject);
45-
} else {
46-
return this.storedCollection.contains(rightObject);
47-
}
48-
}
49-
50-
5134
protected S processNextStart() {
5235
while (true) {
5336
final S s = this.starts.next();
54-
if (this.checkCollection(s)) {
37+
if (this.contains.compare(s,storedCollection)) {
5538
return s;
5639
}
5740
}
5841
}
5942

6043
public String toString() {
6144
if (this.storedCollection instanceof DynamicList)
62-
return PipeHelper.makePipeString(this, this.compare, ((DynamicList) this.storedCollection).toString());
45+
return PipeHelper.makePipeString(this, this.contains, ((DynamicList) this.storedCollection).toString());
6346
else
64-
return PipeHelper.makePipeString(this, this.compare);
47+
return PipeHelper.makePipeString(this, this.contains);
6548
}
6649

6750
private class DynamicList<S> extends ArrayList<S> {

src/main/java/com/tinkerpop/pipes/filter/ExceptFilterPipe.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.tinkerpop.pipes.filter;
22

3-
import com.tinkerpop.blueprints.Query;
3+
import com.tinkerpop.blueprints.Contains;
44
import com.tinkerpop.pipes.util.structures.AsMap;
55

66
import java.util.Collection;
@@ -13,10 +13,10 @@
1313
public class ExceptFilterPipe<S> extends CollectionFilterPipe<S> {
1414

1515
public ExceptFilterPipe(final Collection<S> storedCollection) {
16-
super(storedCollection, Query.Compare.NOT_EQUAL);
16+
super(storedCollection, Contains.NOT_IN);
1717
}
1818

1919
public ExceptFilterPipe(final AsMap asMap, final String... namedSteps) {
20-
super(Query.Compare.NOT_EQUAL, asMap, namedSteps);
20+
super(Contains.NOT_IN, asMap, namedSteps);
2121
}
2222
}
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,36 @@
11
package com.tinkerpop.pipes.filter;
22

3-
import com.tinkerpop.blueprints.Compare;
3+
import com.tinkerpop.blueprints.CompareRelation;
4+
import com.tinkerpop.blueprints.Contains;
45
import com.tinkerpop.blueprints.Element;
5-
import com.tinkerpop.blueprints.Query;
66
import com.tinkerpop.pipes.AbstractPipe;
77
import com.tinkerpop.pipes.util.PipeHelper;
88

99
import java.util.Arrays;
10+
import java.util.Collection;
1011

1112
/**
1213
* @author Marko A. Rodriguez (http://markorodriguez.com)
1314
*/
1415
public class IdFilterPipe extends AbstractPipe<Element, Element> implements FilterPipe<Element> {
1516

16-
private final Object[] ids;
17-
private final Compare filter;
17+
private final Object id;
18+
private final CompareRelation compareRelation;
1819

19-
public IdFilterPipe(final Compare filter, final Object... ids) {
20-
this.ids = ids;
21-
this.filter = filter;
20+
public IdFilterPipe(final CompareRelation compareRelation, final Object id) {
21+
this.id = id;
22+
this.compareRelation = compareRelation;
2223
}
2324

2425
protected Element processNextStart() {
2526
while (true) {
26-
final Element element = this.starts.next();
27-
if (PipeHelper.compareObjectArray(this.filter, element.getId(), this.ids)) {
28-
return element;
29-
}
27+
final Element s = this.starts.next();
28+
if (this.compareRelation.compare(s.getId(), this.id))
29+
return s;
3030
}
3131
}
3232

3333
public String toString() {
34-
return PipeHelper.makePipeString(this, this.filter, Arrays.asList(this.ids));
34+
return PipeHelper.makePipeString(this, this.compareRelation, this.id);
3535
}
3636
}

src/main/java/com/tinkerpop/pipes/filter/IntervalFilterPipe.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import com.tinkerpop.blueprints.Compare;
44
import com.tinkerpop.blueprints.Element;
55
import com.tinkerpop.pipes.AbstractPipe;
6-
import com.tinkerpop.pipes.util.PipeHelper;
76

87
/**
98
* IntervalFilterPipe will filter an element flowing through it according to whether a particular property value of the element is within provided range.
@@ -30,7 +29,7 @@ public T processNextStart() {
3029
if (null == value)
3130
continue;
3231
else {
33-
if (PipeHelper.compareObjects(Compare.GREATER_THAN_EQUAL, value, this.startValue) && PipeHelper.compareObjects(Compare.LESS_THAN, value, this.endValue))
32+
if (Compare.GREATER_THAN_EQUAL.compare(value, this.startValue) && Compare.LESS_THAN.compare(value, this.endValue))
3433
return t;
3534
}
3635
}
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package com.tinkerpop.pipes.filter;
22

3-
import com.tinkerpop.blueprints.Compare;
3+
import com.tinkerpop.blueprints.CompareRelation;
44
import com.tinkerpop.blueprints.Edge;
5-
import com.tinkerpop.blueprints.Query;
65
import com.tinkerpop.pipes.AbstractPipe;
76
import com.tinkerpop.pipes.util.PipeHelper;
87

98
import java.util.Arrays;
9+
import java.util.Collection;
1010

1111
/**
1212
* The LabelFilterPipe either allows or disallows all Edges that have the provided label.
@@ -15,24 +15,23 @@
1515
*/
1616
public class LabelFilterPipe extends AbstractPipe<Edge, Edge> implements FilterPipe<Edge> {
1717

18-
private final String[] labels;
19-
private final Compare compare;
18+
private final Object label;
19+
private final CompareRelation compareRelation;
2020

21-
public LabelFilterPipe(final Compare compare, final String... labels) {
22-
this.labels = labels;
23-
this.compare = compare;
21+
public LabelFilterPipe(final CompareRelation compareRelation, final Object label) {
22+
this.label = label;
23+
this.compareRelation = compareRelation;
2424
}
2525

2626
protected Edge processNextStart() {
2727
while (true) {
2828
final Edge edge = this.starts.next();
29-
if (PipeHelper.compareObjectArray(this.compare, edge.getLabel(), this.labels)) {
29+
if (this.compareRelation.compare(edge.getLabel(), this.label))
3030
return edge;
31-
}
3231
}
3332
}
3433

3534
public String toString() {
36-
return PipeHelper.makePipeString(this, this.compare, Arrays.asList(this.labels));
35+
return PipeHelper.makePipeString(this, this.compareRelation, this.label);
3736
}
3837
}

src/main/java/com/tinkerpop/pipes/filter/ObjectFilterPipe.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public ObjectFilterPipe(final S object, final Compare compare) {
2222
protected S processNextStart() {
2323
while (true) {
2424
final S s = this.starts.next();
25-
if (PipeHelper.compareObjects(this.compare, s, this.object)) {
25+
if (this.compare.compare(s, this.object)) {
2626
return s;
2727
}
2828
}

src/main/java/com/tinkerpop/pipes/filter/PropertyFilterPipe.java

+8-17
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,10 @@
11
package com.tinkerpop.pipes.filter;
22

3-
import com.tinkerpop.blueprints.Compare;
43
import com.tinkerpop.blueprints.CompareRelation;
54
import com.tinkerpop.blueprints.Element;
65
import com.tinkerpop.pipes.AbstractPipe;
76
import com.tinkerpop.pipes.util.PipeHelper;
87

9-
import java.util.Arrays;
10-
118
/**
129
* The PropertyFilterPipe either allows or disallows all Elements that have the provided value for a particular key.
1310
*
@@ -16,40 +13,34 @@
1613
public class PropertyFilterPipe<S extends Element, T> extends AbstractPipe<S, S> implements FilterPipe<S> {
1714

1815
private final String key;
19-
private final Object[] values;
16+
private final Object value;
2017
private final CompareRelation compareRelation;
2118

22-
public PropertyFilterPipe(final String key, final CompareRelation compare, final Object... values) {
19+
public PropertyFilterPipe(final String key, final CompareRelation compare, final Object value) {
2320
this.key = key;
24-
if ((null == values || values.length == 0) && (compare.equals(Compare.EQUAL) || compare.equals(Compare.NOT_EQUAL))) {
25-
this.values = new Object[]{null};
26-
this.compareRelation = ((Compare) compare).opposite();
27-
28-
} else {
29-
this.values = values;
30-
this.compareRelation = compare;
31-
}
21+
this.value = value;
22+
this.compareRelation = compare;
3223
}
3324

3425
protected S processNextStart() {
3526
while (true) {
3627
final S element = this.starts.next();
37-
if (PipeHelper.compareObjectArray((Compare) this.compareRelation, element.getProperty(this.key), this.values)) {
28+
if (this.compareRelation.compare(element.getProperty(this.key), this.value)) {
3829
return element;
3930
}
4031
}
4132
}
4233

4334
public String toString() {
44-
return PipeHelper.makePipeString(this, this.key, this.compareRelation, Arrays.asList(this.values));
35+
return PipeHelper.makePipeString(this, this.key, this.compareRelation, this.value);
4536
}
4637

4738
public String getKey() {
4839
return this.key;
4940
}
5041

51-
public Object[] getValues() {
52-
return this.values;
42+
public Object getValue() {
43+
return this.value;
5344
}
5445

5546
public CompareRelation getCompareRelation() {

src/main/java/com/tinkerpop/pipes/filter/RangeFilterPipe.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@
1313
*/
1414
public class RangeFilterPipe<S> extends AbstractPipe<S, S> implements FilterPipe<S> {
1515

16-
private final long low;
17-
private final long high;
16+
private final int low;
17+
private final int high;
1818
private int counter = -1;
1919

20-
public RangeFilterPipe(final long low, final long high) {
20+
public RangeFilterPipe(final int low, final int high) {
2121
this.low = low;
2222
this.high = high;
2323
if (this.low != -1 && this.high != -1 && this.low > this.high) {
@@ -47,11 +47,11 @@ public void reset() {
4747
super.reset();
4848
}
4949

50-
public long getHighRange() {
50+
public int getHighRange() {
5151
return this.high;
5252
}
5353

54-
public long getLowRange() {
54+
public int getLowRange() {
5555
return this.low;
5656
}
5757
}

src/main/java/com/tinkerpop/pipes/filter/RetainFilterPipe.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.tinkerpop.pipes.filter;
22

3-
import com.tinkerpop.blueprints.Query;
3+
import com.tinkerpop.blueprints.Contains;
44
import com.tinkerpop.pipes.util.structures.AsMap;
55

66
import java.util.Collection;
@@ -13,10 +13,10 @@
1313
public class RetainFilterPipe<S> extends CollectionFilterPipe<S> {
1414

1515
public RetainFilterPipe(final Collection<S> storedCollection) {
16-
super(storedCollection, Query.Compare.EQUAL);
16+
super(storedCollection, Contains.IN);
1717
}
1818

1919
public RetainFilterPipe(final AsMap asMap, final String... namedSteps) {
20-
super(Query.Compare.EQUAL, asMap, namedSteps);
20+
super(Contains.IN, asMap, namedSteps);
2121
}
2222
}

src/main/java/com/tinkerpop/pipes/transform/GraphQueryPipe.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -35,15 +35,15 @@ public E processNextStart() {
3535
GraphQuery query = graph.query();
3636
if (null != this.hasContainers) {
3737
for (final HasContainer hasContainer : this.hasContainers) {
38-
query = query.has(hasContainer.key, hasContainer.compare, hasContainer.values);
38+
query = query.has(hasContainer.key, hasContainer.compare, hasContainer.value);
3939
}
4040
}
4141
if (null != this.intervalContainers) {
4242
for (final IntervalContainer intervalContainer : this.intervalContainers) {
4343
query = query.interval(intervalContainer.key, (Comparable) intervalContainer.startValue, (Comparable) intervalContainer.endValue);
4444
}
4545
}
46-
if (this.highRange != Long.MAX_VALUE) {
46+
if (this.highRange != Integer.MAX_VALUE) {
4747
query = query.limit(this.highRange - this.count);
4848
}
4949
if (this.elementClass.equals(Vertex.class))

0 commit comments

Comments
 (0)