Open Kilda Java Documentation
NeoUtils.java
Go to the documentation of this file.
1 package org.openkilda.neo;
2 
3 
4 import org.neo4j.graphalgo.CommonEvaluators;
5 import org.neo4j.graphalgo.impl.shortestpath.Dijkstra;
6 import org.neo4j.graphdb.Direction;
7 import org.neo4j.graphdb.GraphDatabaseService;
8 import org.neo4j.graphdb.Relationship;
9 import org.neo4j.graphdb.RelationshipType;
10 
11 
12 import java.util.Map;
13 
14 
18 public class NeoUtils {
19 
20  GraphDatabaseService graphDb;
21 
22  public NeoUtils (GraphDatabaseService graphDb) {
23  this.graphDb = graphDb;
24  }
25 
26  public OkNode node(String name)
27  {
28  return node().property("name",name);
29  }
30 
31  public OkNode node(Map<String, Object> properties )
32  {
33  OkNode node = node();
34  for ( Map.Entry<String, Object> property : properties.entrySet() )
35  {
36  node.property( property.getKey(), property.getValue() );
37  }
38  return node;
39  }
40 
41  public OkNode node() {
42  return new OkNode(graphDb.createNode());
43  }
44 
45  public void isl(OkNode a, OkNode b){
46  a.edge(OkRels.isl, b);
47  b.edge(OkRels.isl, a);
48  }
49 
50 
51  public Dijkstra<Double> getDijkstra(Double startCost, RelationshipType rt, String property, OkNode startNode, OkNode endNode) {
52  return new Dijkstra<Double>(
53  startCost,
54  startNode,
55  endNode,
56  CommonEvaluators.doubleCostEvaluator( property ),
57  new org.neo4j.graphalgo.impl.util.DoubleAdder(),
58  new org.neo4j.graphalgo.impl.util.DoubleComparator(),
59  Direction.BOTH,
60  rt );
61  }
62 
63 
64 
68  public enum OkRels implements RelationshipType
69  {
70  isl, flow
71  }
72 
73 
77  public static class OkEdge {
78 
79  public Relationship edge;
80 
81  public OkEdge (Relationship edge){
82  this.edge = edge;
83  }
84 
85  public OkEdge property(String s, Object o) {
86  edge.setProperty(s,o);
87  return this;
88  }
89  }
90 }
OkNode node(String name)
Definition: NeoUtils.java:26
name
Definition: setup.py:24
void isl(OkNode a, OkNode b)
Definition: NeoUtils.java:45
OkNode property(String s, Object o)
Definition: OkNode.java:20
NeoUtils.OkEdge edge(RelationshipType r, OkNode other)
Definition: OkNode.java:25
Dijkstra< Double > getDijkstra(Double startCost, RelationshipType rt, String property, OkNode startNode, OkNode endNode)
Definition: NeoUtils.java:51
edge
Definition: nodes.py:52
OkNode node(Map< String, Object > properties)
Definition: NeoUtils.java:31
NeoUtils(GraphDatabaseService graphDb)
Definition: NeoUtils.java:22