Пример #1
0
        public virtual Path PathToReference(Node me)
        {
            PathFinder <Path> finder = GraphAlgoFactory.shortestPath(PathExpanders.allTypesAndDirections(), 6);

            using (Transaction tx = me.GraphDatabase.beginTx())
            {
                Node other;
                if (me.hasRelationship(RelationshipType.withName("friend")))
                {
                    ResourceIterable <Relationship> relationships = (ResourceIterable <Relationship>)me.getRelationships(RelationshipType.withName("friend"));
                    using (ResourceIterator <Relationship> resourceIterator = relationships.GetEnumerator())
                    {
//JAVA TO C# CONVERTER TODO TASK: Java iterators are only converted within the context of 'while' and 'for' loops:
                        other = resourceIterator.next().getOtherNode(me);
                    }
                }
                else
                {
                    other = me.GraphDatabase.createNode();
                }
                Path path = finder.FindSinglePath(other, me);

                tx.Success();
                return(path);
            }
        }
Пример #2
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testExactDepthFinder()
        public virtual void TestExactDepthFinder()
        {
            // Layout (a to k):
            //
            //     (a)--(c)--(g)--(k)
            //    /                /
            //  (b)-----(d)------(j)
            //   |        \      /
            //  (e)--(f)--(h)--(i)
            //
            Graph.makeEdgeChain("a,c,g,k");
            Graph.makeEdgeChain("a,b,d,j,k");
            Graph.makeEdgeChain("b,e,f,h,i,j");
            Graph.makeEdgeChain("d,h");
            PathExpander <object> expander = PathExpanders.forTypeAndDirection(MyRelTypes.R1, Direction.OUTGOING);
            Node a = Graph.getNode("a");
            Node k = Graph.getNode("k");

            AssertPaths(GraphAlgoFactory.pathsWithLength(expander, 3).findAllPaths(a, k), "a,c,g,k");
            AssertPaths(GraphAlgoFactory.pathsWithLength(expander, 4).findAllPaths(a, k), "a,b,d,j,k");
            AssertPaths(GraphAlgoFactory.pathsWithLength(expander, 5).findAllPaths(a, k));
            AssertPaths(GraphAlgoFactory.pathsWithLength(expander, 6).findAllPaths(a, k), "a,b,d,h,i,j,k");
            AssertPaths(GraphAlgoFactory.pathsWithLength(expander, 7).findAllPaths(a, k), "a,b,e,f,h,i,j,k");
            AssertPaths(GraphAlgoFactory.pathsWithLength(expander, 8).findAllPaths(a, k));
        }
Пример #3
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Parameters public static java.util.Collection<Object[]> data()
        public static ICollection <object[]> Data()
        {
            return(Arrays.asList(new object[][]
            {
                new object[] { GraphAlgoFactory.aStar(PathExpanders.allTypesAndDirections(), doubleCostEvaluator("length"), EstimateEvaluator) },
                new object[] { new TraversalAStar(PathExpanders.allTypesAndDirections(), doubleCostEvaluator("length"), EstimateEvaluator) }
            }));
        }
Пример #4
0
        public virtual Stream <NodeResult> GraphAlgosDijkstra(Node start, Node end, string relType, string weightProperty)
        {
            PathFinder <WeightedPath> pathFinder = GraphAlgoFactory.dijkstra(PathExpanders.forTypeAndDirection(RelationshipType.withName(relType), Direction.BOTH), weightProperty);

            WeightedPath path = pathFinder.FindSinglePath(start, end);

//JAVA TO C# CONVERTER TODO TASK: Method reference constructor syntax is not converted by Java to C# Converter:
            return(StreamSupport.stream(path.Nodes().spliterator(), false).map(NodeResult::new));
        }
Пример #5
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void testExactDepthPathsReturnsNoLoops()
        public virtual void TestExactDepthPathsReturnsNoLoops()
        {
            // Layout:
            //
            // (a)-->(b)==>(c)-->(e)
            //        ^    /
            //         \  v
            //         (d)
            //
            Graph.makeEdgeChain("a,b,c,d,b,c,e");
            Node a = Graph.getNode("a");
            Node e = Graph.getNode("e");

            AssertPaths(GraphAlgoFactory.pathsWithLength(PathExpanders.forType(MyRelTypes.R1), 3).findAllPaths(a, e), "a,b,c,e", "a,b,c,e");
            AssertPaths(GraphAlgoFactory.pathsWithLength(PathExpanders.forType(MyRelTypes.R1), 4).findAllPaths(a, e), "a,b,d,c,e");
            AssertPaths(GraphAlgoFactory.pathsWithLength(PathExpanders.forType(MyRelTypes.R1), 6).findAllPaths(a, e));
        }
Пример #6
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void filtersTouchesAllIntermediateNodes()
        public virtual void FiltersTouchesAllIntermediateNodes()
        {
            // Layout:
            //
            // (a)-->(b)-->(c)-->(d)
            //
            Graph.makeEdgeChain("a,b,c,d");
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.neo4j.graphdb.Node a = graph.getNode("a");
            Node a = Graph.getNode("a");
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.neo4j.graphdb.Node d = graph.getNode("d");
            Node d = Graph.getNode("d");
            ICollection <Node> touchedByFilter = new HashSet <Node>();

//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final System.Predicate<org.neo4j.graphdb.Node> filter = item ->
            System.Predicate <Node> filter = item =>
            {
                touchedByFilter.Add(item);
                return(true);
            };
//JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final':
//ORIGINAL LINE: final org.neo4j.graphdb.PathExpander expander = org.neo4j.graphdb.PathExpanderBuilder.empty().add(R1, OUTGOING).addNodeFilter(filter).build();
            PathExpander expander = PathExpanderBuilder.empty().add(R1, OUTGOING).addNodeFilter(filter).build();
            //final PathExpander expander = ((StandardExpander) PathExpanders.forTypeAndDirection(R1, OUTGOING)).addNodeFilter( filter );
            Path path = Iterables.single(GraphAlgoFactory.shortestPath(expander, 10).findAllPaths(a, d));

            assertEquals(3, path.Length());

            IList <Node> nodes             = Iterables.asList(path.Nodes());
            IList <Node> intermediateNodes = nodes.subList(1, nodes.Count - 1);

//JAVA TO C# CONVERTER TODO TASK: There is no .NET equivalent to the java.util.Collection 'containsAll' method:
            assertTrue("touchedByFilter: " + touchedByFilter, touchedByFilter.containsAll(intermediateNodes));
            assertTrue("startNode was not filtered", !touchedByFilter.Contains(a));
            assertTrue("endNode was not filtered", !touchedByFilter.Contains(d));
        }
Пример #7
0
        public virtual Path PathToReference(Node me)
        {
            PathFinder <Path> finder = GraphAlgoFactory.shortestPath(PathExpanders.allTypesAndDirections(), 6);

            return(finder.FindSinglePath(me.GraphDatabase.createNode(), me));
        }
Пример #8
0
 protected internal virtual PathFinder <Path> InstantiatePathFinder(int maxDepth)
 {
     return(GraphAlgoFactory.allSimplePaths(PathExpanders.allTypesAndDirections(), maxDepth));
 }