You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tinkerpop.apache.org by ok...@apache.org on 2015/05/15 20:00:27 UTC

incubator-tinkerpop git commit: Compare.opposite() is now Compare.negate() as that is a Java BiPredicate interface method. Likewise for Contains.negate() and P.negate(). Finally, Order.opposite() is now Order.reversed() as that is a Java Comparator intef

Repository: incubator-tinkerpop
Updated Branches:
  refs/heads/master 8437d16d8 -> 01f1fcec4


Compare.opposite() is now Compare.negate() as that is a Java BiPredicate interface method. Likewise for Contains.negate() and P.negate(). Finally, Order.opposite() is now Order.reversed() as that is a Java Comparator inteface method. BiPredicateTraversal can now be negated.


Project: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/commit/01f1fcec
Tree: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/tree/01f1fcec
Diff: http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/diff/01f1fcec

Branch: refs/heads/master
Commit: 01f1fcec4e63dc5ec097586467a91f837b26ae61
Parents: 8437d16
Author: Marko A. Rodriguez <ok...@gmail.com>
Authored: Fri May 15 12:00:17 2015 -0600
Committer: Marko A. Rodriguez <ok...@gmail.com>
Committed: Fri May 15 12:00:17 2015 -0600

----------------------------------------------------------------------
 .../traversal/lambda/BiPredicateTraversal.java     | 12 ++++++++++--
 .../tinkerpop/gremlin/structure/Compare.java       | 15 ++++++++-------
 .../tinkerpop/gremlin/structure/Contains.java      |  3 ++-
 .../apache/tinkerpop/gremlin/structure/Order.java  | 17 +++++++++--------
 .../org/apache/tinkerpop/gremlin/structure/P.java  | 16 +++++++++++++++-
 5 files changed, 44 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/01f1fcec/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/BiPredicateTraversal.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/BiPredicateTraversal.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/BiPredicateTraversal.java
index ff3e6e6..abaf373 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/BiPredicateTraversal.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/lambda/BiPredicateTraversal.java
@@ -32,16 +32,19 @@ import java.util.function.BiPredicate;
 public class BiPredicateTraversal<S, E> implements BiPredicate<S, E> {
 
     private Traversal.Admin<S, E> traversal;
+    private final boolean negate;
 
-    public BiPredicateTraversal(final Traversal.Admin<S, E> traversal) {
+    public BiPredicateTraversal(final Traversal.Admin<S, E> traversal, final boolean negate) {
         this.traversal = traversal;
+        this.negate = negate;
     }
 
     @Override
     public boolean test(final S start, final E end) {
         if (null == start)
             throw new IllegalArgumentException("The traversal must be provided a start: " + this.traversal);
-        return null == end ? TraversalUtil.test(start, this.traversal) : TraversalUtil.test(start, this.traversal, end);
+        final boolean result = null == end ? TraversalUtil.test(start, this.traversal) : TraversalUtil.test(start, this.traversal, end);
+        return this.negate ? !result : result;
     }
 
     public Traversal.Admin<S, E> getTraversal() {
@@ -54,6 +57,11 @@ public class BiPredicateTraversal<S, E> implements BiPredicate<S, E> {
     }
 
     @Override
+    public BiPredicateTraversal<S, E> negate() {
+        return new BiPredicateTraversal<>(this.traversal.clone(), !this.negate);
+    }
+
+    @Override
     public BiPredicateTraversal<S, E> clone() {
         try {
             final BiPredicateTraversal<S, E> clone = (BiPredicateTraversal<S, E>) super.clone();

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/01f1fcec/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Compare.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Compare.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Compare.java
index df9f612..93468c4 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Compare.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Compare.java
@@ -38,7 +38,7 @@ public enum Compare implements BiPredicate<Object, Object> {
         }
 
         @Override
-        public Compare opposite() {
+        public Compare negate() {
             return neq;
         }
     }, neq {
@@ -48,7 +48,7 @@ public enum Compare implements BiPredicate<Object, Object> {
         }
 
         @Override
-        public Compare opposite() {
+        public Compare negate() {
             return eq;
         }
     }, gt {
@@ -61,7 +61,7 @@ public enum Compare implements BiPredicate<Object, Object> {
         }
 
         @Override
-        public Compare opposite() {
+        public Compare negate() {
             return lte;
         }
     }, gte {
@@ -71,7 +71,7 @@ public enum Compare implements BiPredicate<Object, Object> {
         }
 
         @Override
-        public Compare opposite() {
+        public Compare negate() {
             return lt;
         }
     }, lt {
@@ -84,7 +84,7 @@ public enum Compare implements BiPredicate<Object, Object> {
         }
 
         @Override
-        public Compare opposite() {
+        public Compare negate() {
             return gte;
         }
     }, lte {
@@ -94,7 +94,7 @@ public enum Compare implements BiPredicate<Object, Object> {
         }
 
         @Override
-        public Compare opposite() {
+        public Compare negate() {
             return gt;
         }
     };
@@ -108,5 +108,6 @@ public enum Compare implements BiPredicate<Object, Object> {
     /**
      * Produce the opposite representation of the current {@code Compare} enum.
      */
-    public abstract Compare opposite();
+    @Override
+    public abstract Compare negate();
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/01f1fcec/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Contains.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Contains.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Contains.java
index a543c44..43c31ff 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Contains.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Contains.java
@@ -57,7 +57,8 @@ public enum Contains implements BiPredicate<Object, Collection> {
     /**
      * Produce the opposite representation of the current {@code Contains} enum.
      */
-    public Contains opposite() {
+    @Override
+    public Contains negate() {
         return this.equals(within) ? without : within;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/01f1fcec/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Order.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Order.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Order.java
index 5a3cc91..c2825e8 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Order.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/Order.java
@@ -34,7 +34,7 @@ public enum Order implements Comparator<Object> {
         }
 
         @Override
-        public Order opposite() {
+        public Order reversed() {
             return decr;
         }
     }, decr {
@@ -44,7 +44,7 @@ public enum Order implements Comparator<Object> {
         }
 
         @Override
-        public Order opposite() {
+        public Order reversed() {
             return incr;
         }
     }, keyIncr {
@@ -54,7 +54,7 @@ public enum Order implements Comparator<Object> {
         }
 
         @Override
-        public Order opposite() {
+        public Order reversed() {
             return keyDecr;
         }
     }, valueIncr {
@@ -64,7 +64,7 @@ public enum Order implements Comparator<Object> {
         }
 
         @Override
-        public Order opposite() {
+        public Order reversed() {
             return valueDecr;
         }
     }, keyDecr {
@@ -74,7 +74,7 @@ public enum Order implements Comparator<Object> {
         }
 
         @Override
-        public Order opposite() {
+        public Order reversed() {
             return keyIncr;
         }
     }, valueDecr {
@@ -84,7 +84,7 @@ public enum Order implements Comparator<Object> {
         }
 
         @Override
-        public Order opposite() {
+        public Order reversed() {
             return valueIncr;
         }
     }, shuffle {
@@ -94,7 +94,7 @@ public enum Order implements Comparator<Object> {
         }
 
         @Override
-        public Order opposite() {
+        public Order reversed() {
             return shuffle;
         }
     };
@@ -109,5 +109,6 @@ public enum Order implements Comparator<Object> {
     /**
      * Produce the opposite representation of the current {@code Order} enum.
      */
-    public abstract Order opposite();
+    @Override
+    public abstract Order reversed();
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-tinkerpop/blob/01f1fcec/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java
----------------------------------------------------------------------
diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java
index e3bf8c5..d5b54c8 100644
--- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java
+++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/structure/P.java
@@ -74,6 +74,11 @@ public class P<V> implements Predicate<V>, Serializable {
         return this.biPredicate.toString() + "(" + this.value + ")";
     }
 
+    @Override
+    public P<V> negate() {
+        return new P<>(this.biPredicate.negate(), this.value);
+    }
+
     //////////////// statics
 
     public static <V> P<V> eq(final V value) {
@@ -129,13 +134,22 @@ public class P<V> implements Predicate<V>, Serializable {
     }
 
     public static <S, E> P<S> traversal(final Traversal<S, E> traversal) {
-        return new P(new BiPredicateTraversal<>(traversal.asAdmin()), null);
+        return new P(new BiPredicateTraversal<>(traversal.asAdmin(), false), null);
     }
 
     public static P test(final BiPredicate biPredicate, final Object value) {
         return new P(biPredicate, value);
     }
 
+    public static <V> P<V>[] not(final P<V> predicate, final P<V>... predicates) {
+        final P[] temp = new P[predicates.length + 1];
+        temp[0] = predicate.negate();
+        for (int i = 1; i < predicates.length; i++) {
+            temp[i] = predicates[i - 1].negate();
+        }
+        return temp;
+    }
+
     public static Pair<P, P[]> splitForAPI(final P[] pArray) {
         if (pArray.length == 0)
             throw new IllegalArgumentException("The P[] is not splittable because its length is 0: " + pArray);