我有一个 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 查询语言的解决方案,有什么帮助吗?