フォルダーとファイルを表すノードで構成されるファイル システム構造をマップする Neo4j グラフ データベースがあります。各ノードには、FATHER_OF と CHILD_OF の関係があります。
次に、Neo4j グラフから始めて、Java で TreeNode 構造を作成する必要があります。現在、NEO4J 構造の幅優先プリントを次のように実装しています。
public Traverser getTraverser()
{
Transaction tx = graphDb.beginTx();
Traverser traverser = traverseStorage(rootNode);
return traverser;
}
private static Traverser traverseStorage(final Node startNode) {
TraversalDescription td = Traversal.description()
.breadthFirst()
.relationships(GraphStorage.RelTypes.FATHER_OF, Direction.OUTGOING);
return td.traverse(startNode);
}
今、上記の幅優先トラバーサーを使用してツリーを作成しようとしていますが、正しい親を各ノードに適切に割り当てる方法がわかりません。
TreeNode root = new DefaultTreeNode("root", null);
Traverser traverser = graphStorage.getTraverser();
TreeNode parent = root;
for (Path directoryPath : traverser) {
DefaultTreeNode tmp1 = new DefaultTreeNode((String)directoryPath.endNode().getProperty("name"), parent);
}
directoryPath.endNode().getParent() のようなものがあることを望みましたが、明らかにありません。Cypher クエリ言語を使用する必要のないソリューションを探しています。