changeset 2287:981f2ef6d5a9

Small changes to the Graph API review-thread: http://icedtea.classpath.org/pipermail/thermostat/2016-May/018695.html reviewed-by: jerboaa
author Mario Torre <neugens.limasoftware@gmail.com>
date Wed, 04 May 2016 17:30:00 +0200
parents e5c64ae6f6f3
children 96940b61b718
files dependency-tool/command/src/main/java/com/redhat/thermostat/tools/dependency/internal/DependencyGraphBuilder.java platform/collections/src/main/java/com/redhat/thermostat/collections/graph/Graph.java platform/collections/src/main/java/com/redhat/thermostat/collections/graph/HashGraph.java platform/collections/src/main/java/com/redhat/thermostat/collections/graph/Relationship.java platform/collections/src/test/java/com/redhat/thermostat/collections/graph/BreadthFirstSearchTest.java platform/collections/src/test/java/com/redhat/thermostat/collections/graph/DepthFirstSearchTest.java platform/collections/src/test/java/com/redhat/thermostat/collections/graph/GraphTest.java platform/collections/src/test/java/com/redhat/thermostat/collections/graph/RelationshipTest.java
diffstat 8 files changed, 89 insertions(+), 59 deletions(-) [+]
line wrap: on
line diff
--- a/dependency-tool/command/src/main/java/com/redhat/thermostat/tools/dependency/internal/DependencyGraphBuilder.java	Wed Apr 06 15:07:01 2016 +0200
+++ b/dependency-tool/command/src/main/java/com/redhat/thermostat/tools/dependency/internal/DependencyGraphBuilder.java	Wed May 04 17:30:00 2016 +0200
@@ -143,10 +143,10 @@
                     Relationship relationship = null;
                     Set<Relationship> relationships = null;
                     if (swap) {
-                        relationship = new Relationship("<-", destination, source);
+                        relationship = new Relationship(destination, "<-", source);
                         relationships = graph.getRelationships(destination);
                     } else {
-                        relationship = new Relationship("->", source, destination);
+                        relationship = new Relationship(source, "->", destination);
                         relationships = graph.getRelationships(source);
                     }
 
--- a/platform/collections/src/main/java/com/redhat/thermostat/collections/graph/Graph.java	Wed Apr 06 15:07:01 2016 +0200
+++ b/platform/collections/src/main/java/com/redhat/thermostat/collections/graph/Graph.java	Wed May 04 17:30:00 2016 +0200
@@ -46,11 +46,12 @@
 
     /**
      * Creates a new {@link Relationship} to this Graph
-     * from the given {@code node}s and {@code id}.
+     * from the given {@code node}s and {@code relationship} {@code String}
+     * representation.
      * Returns the {@link Relationship} just created or {@code null} if the
      * {@link Relationship} was not added to the Graph.
      */
-    Relationship addRelationship(Node source, Node destination, String id);
+    Relationship addRelationship(Node source, String relationship, Node destination);
 
     /**
      * Adds the given {@link Relationship} to this Graph.
--- a/platform/collections/src/main/java/com/redhat/thermostat/collections/graph/HashGraph.java	Wed Apr 06 15:07:01 2016 +0200
+++ b/platform/collections/src/main/java/com/redhat/thermostat/collections/graph/HashGraph.java	Wed May 04 17:30:00 2016 +0200
@@ -54,8 +54,8 @@
     }
 
     @Override
-    public Relationship addRelationship(Node source, Node destination, String id) {
-        Relationship rel = new Relationship(id, source, destination);
+    public Relationship addRelationship(Node source, String id, Node destination) {
+        Relationship rel = new Relationship(source, id, destination);
         if (!addRelationship(rel)) {
             return null;
         }
--- a/platform/collections/src/main/java/com/redhat/thermostat/collections/graph/Relationship.java	Wed Apr 06 15:07:01 2016 +0200
+++ b/platform/collections/src/main/java/com/redhat/thermostat/collections/graph/Relationship.java	Wed May 04 17:30:00 2016 +0200
@@ -48,7 +48,7 @@
     
     private Map<String, Object> properties;
     
-    public Relationship(String name, Node from, Node to) {
+    public Relationship(Node from, String name, Node to) {
         
         this.from = from;
         this.to = to;
--- a/platform/collections/src/test/java/com/redhat/thermostat/collections/graph/BreadthFirstSearchTest.java	Wed Apr 06 15:07:01 2016 +0200
+++ b/platform/collections/src/test/java/com/redhat/thermostat/collections/graph/BreadthFirstSearchTest.java	Wed May 04 17:30:00 2016 +0200
@@ -63,19 +63,19 @@
         Node i = new Node("I");
 
         
-        Relationship ab = graph.addRelationship(a, b, "knows");
-        Relationship ac = graph.addRelationship(a, c, "knows");
+        Relationship ab = graph.addRelationship(a, "knows", b);
+        Relationship ac = graph.addRelationship(a, "knows", c);
         
-        Relationship bd = graph.addRelationship(b, d, "knows");
-        Relationship be = graph.addRelationship(b, e, "knows");
+        Relationship bd = graph.addRelationship(b, "knows", d);
+        Relationship be = graph.addRelationship(b, "knows", e);
         
-        Relationship cf = graph.addRelationship(c, f, "knows");
-        Relationship cg = graph.addRelationship(c, g, "knows");
+        Relationship cf = graph.addRelationship(c, "knows", f);
+        Relationship cg = graph.addRelationship(c, "knows", g);
         
-        Relationship eh = graph.addRelationship(e, h, "knows");
+        Relationship eh = graph.addRelationship(e, "knows", h);
         
-        Relationship ei = graph.addRelationship(e, i, "knows");
-        Relationship ia = graph.addRelationship(i, a, "knows");
+        Relationship ei = graph.addRelationship(e, "knows", i);
+        Relationship ia = graph.addRelationship(i, "knows", a);
         
         final List<Relationship> results = new ArrayList<>();
         final List<Node> nodes = new ArrayList<>();
--- a/platform/collections/src/test/java/com/redhat/thermostat/collections/graph/DepthFirstSearchTest.java	Wed Apr 06 15:07:01 2016 +0200
+++ b/platform/collections/src/test/java/com/redhat/thermostat/collections/graph/DepthFirstSearchTest.java	Wed May 04 17:30:00 2016 +0200
@@ -72,19 +72,19 @@
         
         Node i = new Node("I");
         
-        Relationship ab = graph.addRelationship(a, b, "knows");
-        Relationship ac = graph.addRelationship(a, c, "knows");
+        Relationship ab = graph.addRelationship(a, "knows", b);
+        Relationship ac = graph.addRelationship(a, "knows", c);
         
-        Relationship bd = graph.addRelationship(b, d, "knows");
-        Relationship be = graph.addRelationship(b, e, "knows");
+        Relationship bd = graph.addRelationship(b, "knows", d);
+        Relationship be = graph.addRelationship(b, "knows", e);
         
-        Relationship cf = graph.addRelationship(c, f, "knows");
-        Relationship cg = graph.addRelationship(c, g, "knows");
+        Relationship cf = graph.addRelationship(c, "knows", f);
+        Relationship cg = graph.addRelationship(c, "knows", g);
         
-        Relationship eh = graph.addRelationship(e, h, "knows");
+        Relationship eh = graph.addRelationship(e, "knows", h);
         
-        Relationship ei = graph.addRelationship(e, i, "knows");
-        Relationship ia = graph.addRelationship(i, a, "knows");
+        Relationship ei = graph.addRelationship(e, "knows", i);
+        Relationship ia = graph.addRelationship(i, "knows", a);
 
         final List<Relationship> results = new ArrayList<>();
         final List<Node> nodes = new ArrayList<>();
@@ -134,19 +134,19 @@
         
         Node i = new Node("I");
         
-        Relationship ab = graph.addRelationship(a, b, "knows");
-        Relationship ac = graph.addRelationship(a, c, "knows");
+        Relationship ab = graph.addRelationship(a, "knows", b);
+        Relationship ac = graph.addRelationship(a, "knows", c);
         
-        Relationship bd = graph.addRelationship(b, d, "knows");
-        Relationship be = graph.addRelationship(b, e, "knows");
+        Relationship bd = graph.addRelationship(b, "knows", d);
+        Relationship be = graph.addRelationship(b, "knows", e);
         
-        Relationship cf = graph.addRelationship(c, f, "knows");
-        Relationship cg = graph.addRelationship(c, g, "knows");
+        Relationship cf = graph.addRelationship(c, "knows", f);
+        Relationship cg = graph.addRelationship(c, "knows", g);
         
-        Relationship eh = graph.addRelationship(e, h, "knows");
+        Relationship eh = graph.addRelationship(e, "knows", h);
         
-        Relationship ei = graph.addRelationship(e, i, "knows");
-        Relationship ia = graph.addRelationship(i, a, "knows");
+        Relationship ei = graph.addRelationship(e, "knows", i);
+        Relationship ia = graph.addRelationship(i, "knows", a);
 
         final Map<String, Relationship> backNodes = new HashMap<>();
 
@@ -300,28 +300,28 @@
         Node i = new Node("I");
         Node l = new Node("L");
 
-        Relationship ab = graph.addRelationship(a, b, "knows");
-        Relationship ac = graph.addRelationship(a, c, "knows");
-        Relationship ae = graph.addRelationship(a, e, "knows");
-        Relationship ad = graph.addRelationship(a, d, "knows");
-        Relationship al = graph.addRelationship(a, l, "knows");
+        Relationship ab = graph.addRelationship(a, "knows", b);
+        Relationship ac = graph.addRelationship(a, "knows", c);
+        Relationship ae = graph.addRelationship(a, "knows", e);
+        Relationship ad = graph.addRelationship(a, "knows", d);
+        Relationship al = graph.addRelationship(a, "knows", l);
 
-        Relationship bc = graph.addRelationship(b, c, "knows");
-        Relationship bd = graph.addRelationship(b, d, "knows");
+        Relationship bc = graph.addRelationship(b, "knows", c);
+        Relationship bd = graph.addRelationship(b, "knows", d);
 
-        Relationship ce = graph.addRelationship(c, e, "knows");
-        Relationship cf = graph.addRelationship(c, f, "knows");
+        Relationship ce = graph.addRelationship(c, "knows", e);
+        Relationship cf = graph.addRelationship(c, "knows", f);
 
-        Relationship ed = graph.addRelationship(e, d, "knows");
+        Relationship ed = graph.addRelationship(e, "knows", d);
 
-        Relationship fe = graph.addRelationship(f, e, "knows");
+        Relationship fe = graph.addRelationship(f, "knows", e);
 
-        Relationship gf = graph.addRelationship(g, f, "knows");
-        Relationship ga = graph.addRelationship(g, a, "knows");
+        Relationship gf = graph.addRelationship(g, "knows", f);
+        Relationship ga = graph.addRelationship(g, "knows", a);
 
-        Relationship hc = graph.addRelationship(h, c, "knows");
+        Relationship hc = graph.addRelationship(h, "knows", c);
 
-        Relationship il = graph.addRelationship(i, l, "knows");
+        Relationship il = graph.addRelationship(i, "knows", l);
 
         DepthFirstSearch dfs = new DepthFirstSearch(graph);
 
--- a/platform/collections/src/test/java/com/redhat/thermostat/collections/graph/GraphTest.java	Wed Apr 06 15:07:01 2016 +0200
+++ b/platform/collections/src/test/java/com/redhat/thermostat/collections/graph/GraphTest.java	Wed May 04 17:30:00 2016 +0200
@@ -56,30 +56,30 @@
         Node a = new Node("A");
         Node b = new Node("B");
         
-        graph.addRelationship(a, b, "knows");
+        graph.addRelationship(a, "knows", b);
         
         assertEquals(1, graph.size());
         assertEquals(2, graph.order());
         
-        graph.addRelationship(b, a, "knows");
+        graph.addRelationship(b, "knows", a);
         assertEquals(2, graph.size());
         
         // same nodes, the order is not changed
         assertEquals(2, graph.order());
 
         // same relationship, no-op
-        graph.addRelationship(b, a, "knows");
+        graph.addRelationship(b, "knows", a);
         assertEquals(2, graph.size());
         assertEquals(2, graph.order());
 
-        graph.addRelationship(a, b, "plays with");
+        graph.addRelationship(a, "plays with", b);
         assertEquals(3, graph.size());
 
         // same nodes again
         assertEquals(2, graph.order());
         
         Node c = new Node("C");
-        graph.addRelationship(a, c, "knows");
+        graph.addRelationship(a, "knows", c);
         assertEquals(3, graph.order());
     }
     
@@ -90,9 +90,9 @@
         Node a = new Node("A");
         Node b = new Node("B");
         
-        Relationship r0 = graph.addRelationship(a, b, "knows");
-        Relationship r1 = graph.addRelationship(a, b, "plays football with");
-        Relationship r2 = graph.addRelationship(a, b, "watch movies with");
+        Relationship r0 = graph.addRelationship(a, "knows", b);
+        Relationship r1 = graph.addRelationship(a, "plays football with", b);
+        Relationship r2 = graph.addRelationship(a, "watch movies with", b);
         
         Set<Relationship> rel = graph.getRelationships(a);
         assertEquals(3, rel.size());
@@ -100,4 +100,33 @@
         assertTrue(rel.contains(r1));
         assertTrue(rel.contains(r2));
     }
+
+    @Test
+    public void testGraphRelationship1() {
+        Graph graph = new HashGraph();
+
+        Node a = new Node("A");
+        Node b = new Node("B");
+        Node c = new Node("B");
+
+        Relationship r0 = graph.addRelationship(a, "knows", b);
+        assertEquals(1, graph.size());
+        assertEquals(2, graph.order());
+
+        Relationship r1 = graph.addRelationship(b, "knows", a);
+        assertEquals(2, graph.size());
+        assertEquals(2, graph.order());
+
+        Relationship r2 = graph.addRelationship(a, "watch movies with", b);
+        assertEquals(3, graph.size());
+        assertEquals(2, graph.order());
+
+        // represents the same relationship as (A)->[plays with]->(B)
+        // - this really depends on nodes being equals just by name, hence
+        // the extra assert check
+        assertEquals(b, c);
+        Relationship r3 = graph.addRelationship(a, "watch movies with", c);
+        assertEquals(3, graph.size());
+        assertEquals(2, graph.order());
+    }
 }
--- a/platform/collections/src/test/java/com/redhat/thermostat/collections/graph/RelationshipTest.java	Wed Apr 06 15:07:01 2016 +0200
+++ b/platform/collections/src/test/java/com/redhat/thermostat/collections/graph/RelationshipTest.java	Wed May 04 17:30:00 2016 +0200
@@ -48,14 +48,14 @@
         Node a = new Node("A");
         Node b = new Node("B");
         
-        Relationship relationship = new Relationship("knows", a, b);
+        Relationship relationship = new Relationship(a, "knows", b);
         assertEquals(a, relationship.getFrom());
         assertEquals(b, relationship.getTo());
         
         String toString = relationship.toString();
         assertEquals("(A)-[:knows]->(B)", toString);
         
-        relationship = new Relationship("knows", b, a);
+        relationship = new Relationship(b, "knows", a);
         assertEquals(b, relationship.getFrom());
         assertEquals(a, relationship.getTo());