@Override public Collection<Tree<Node, Edge>> getTrees() { Collection<Tree<Node, Edge>> trees = new ArrayList<Tree<Node, Edge>>(); Collection<Node> rootNodes = new ArrayList<Node>(); for (Node node : getNodes()) { if (getPredecessors(node) == null || getPredecessors(node).size() == 0) { rootNodes.add(node); } } for (Node node : rootNodes) { Tree<Node, Edge> tree = new IvtkObviousTree(nodeSchema, edgeSchema); tree.addNode(node); populateNetwork(tree, node); trees.add(tree); } return trees; }
@Override public Collection<Tree<Node, Edge>> getTrees() { Collection<Tree<Node, Edge>> trees = new ArrayList<Tree<Node, Edge>>(); Collection<Node> rootNodes = new ArrayList<Node>(); for (Node node : getNodes()) { if (getPredecessors(node) == null || getPredecessors(node).size() == 0) { rootNodes.add(node); } } for (Node node : rootNodes) { Tree<Node, Edge> tree = new PrefuseObviousTree(nodeSchema, edgeSchema, nodeId, source, target); tree.addNode(node); populateNetwork(tree, node); trees.add(tree); } return trees; }
/** * Internal method. * @param tree a Jung tree * @param node an Obvious node */ private void populateNetwork(Tree<Node, Edge> tree, Node node) { if (this.getSuccessors(node) != null || this.getSuccessors(node).size() > 0) { for (Node otherNode : this.getSuccessors(node)) { tree.addNode(otherNode); tree.addEdge(getConnectingEdge(node, otherNode), node, otherNode, EdgeType.DIRECTED); populateNetwork(tree, otherNode); } } }
/** * Internal method. * @param tree a Jung tree * @param node an Obvious node */ private void populateNetwork(Tree<Node, Edge> tree, Node node) { if (this.getSuccessors(node) != null || this.getSuccessors(node).size() > 0) { for (Node otherNode : this.getSuccessors(node)) { tree.addNode(otherNode); tree.addEdge(getConnectingEdge(node, otherNode), node, otherNode, EdgeType.DIRECTED); populateNetwork(tree, otherNode); } } }