Esempio n. 1
0
        private static IEnumerable <LinkedList <Relationship> > GetPaths(Node connectingNode, DirectionData data, bool stopAsap)
        {
            LevelData levelData = data.VisitedNodes[connectingNode];

            if (levelData.Depth == 0)
            {
                ICollection <LinkedList <Relationship> > result = new List <LinkedList <Relationship> >();
                result.Add(new LinkedList <>());
                return(result);
            }
            ICollection <PathData> set     = new List <PathData>();
            GraphDatabaseService   graphDb = data.StartNode.GraphDatabase;

            foreach (long rel in levelData.RelsToHere)
            {
                set.Add(new PathData(connectingNode, new LinkedList <Relationship>(Arrays.asList(graphDb.GetRelationshipById(rel)))));
                if (stopAsap)
                {
                    break;
                }
            }
            for (int i = 0; i < levelData.Depth - 1; i++)
            {
                // One level
                ICollection <PathData> nextSet = new List <PathData>();
                foreach (PathData entry in set)
                {
                    // One path...
                    Node      otherNode      = entry.Rels.First.Value.getOtherNode(entry.Node);
                    LevelData otherLevelData = data.VisitedNodes[otherNode];
                    int       counter        = 0;
                    foreach (long rel in otherLevelData.RelsToHere)
                    {
                        // ...may split into several paths
                        LinkedList <Relationship> rels = ++counter == otherLevelData.RelsToHere.Length ? entry.Rels : new LinkedList <Relationship>(entry.Rels);
                        rels.AddFirst(graphDb.GetRelationshipById(rel));
                        nextSet.Add(new PathData(otherNode, rels));
                        if (stopAsap)
                        {
                            break;
                        }
                    }
                }
                set = nextSet;
            }
            return(new IterableWrapperAnonymousInnerClass(set));
        }
Esempio n. 2
0
 public Relationship entity(long id, GraphDatabaseService graphDatabaseService)
 {
     return(graphDatabaseService.GetRelationshipById(id));
 }