graph.addEdge(edgeFactory.get(), "V0", "V1"); graph.addEdge(edgeFactory.get(), "V0", "V2"); graph.addEdge(edgeFactory.get(), "V1", "V4"); graph.addEdge(edgeFactory.get(), "V2", "V3"); graph.addEdge(edgeFactory.get(), "V2", "V5"); graph.addEdge(edgeFactory.get(), "V4", "V6"); graph.addEdge(edgeFactory.get(), "V4", "V7"); graph.addEdge(edgeFactory.get(), "V3", "V8"); graph.addEdge(edgeFactory.get(), "V6", "V9"); graph.addEdge(edgeFactory.get(), "V4", "V10"); graph.addEdge(edgeFactory.get(), "A0", "A1"); graph.addEdge(edgeFactory.get(), "A0", "A2"); graph.addEdge(edgeFactory.get(), "A0", "A3"); graph.addEdge(edgeFactory.get(), "B0", "B1"); graph.addEdge(edgeFactory.get(), "B0", "B2"); graph.addEdge(edgeFactory.get(), "B1", "B4"); graph.addEdge(edgeFactory.get(), "B2", "B3"); graph.addEdge(edgeFactory.get(), "B2", "B5"); graph.addEdge(edgeFactory.get(), "B4", "B6"); graph.addEdge(edgeFactory.get(), "B4", "B7"); graph.addEdge(edgeFactory.get(), "B3", "B8"); graph.addEdge(edgeFactory.get(), "B6", "B9");
private void createTree() { graph.addVertex("V0"); graph.addEdge(edgeFactory.get(), "V0", "V1"); graph.addEdge(edgeFactory.get(), "V0", "V2"); graph.addEdge(edgeFactory.get(), "V1", "V4"); graph.addEdge(edgeFactory.get(), "V2", "V3"); graph.addEdge(edgeFactory.get(), "V2", "V5"); graph.addEdge(edgeFactory.get(), "V4", "V6"); graph.addEdge(edgeFactory.get(), "V4", "V7"); graph.addEdge(edgeFactory.get(), "V3", "V8"); graph.addEdge(edgeFactory.get(), "V6", "V9"); graph.addEdge(edgeFactory.get(), "V4", "V10"); graph.addVertex("A0"); graph.addEdge(edgeFactory.get(), "A0", "A1"); graph.addEdge(edgeFactory.get(), "A0", "A2"); graph.addEdge(edgeFactory.get(), "A0", "A3"); graph.addVertex("B0"); graph.addEdge(edgeFactory.get(), "B0", "B1"); graph.addEdge(edgeFactory.get(), "B0", "B2"); graph.addEdge(edgeFactory.get(), "B1", "B4"); graph.addEdge(edgeFactory.get(), "B2", "B3"); graph.addEdge(edgeFactory.get(), "B2", "B5"); graph.addEdge(edgeFactory.get(), "B4", "B6"); graph.addEdge(edgeFactory.get(), "B4", "B7"); graph.addEdge(edgeFactory.get(), "B3", "B8"); graph.addEdge(edgeFactory.get(), "B6", "B9"); }
graph.addEdge(edgeFactory.get(), "V0", "V1"); graph.addEdge(edgeFactory.get(), "V0", "V2"); graph.addEdge(edgeFactory.get(), "V1", "V4"); graph.addEdge(edgeFactory.get(), "V2", "V3"); graph.addEdge(edgeFactory.get(), "V2", "V5"); graph.addEdge(edgeFactory.get(), "V4", "V6"); graph.addEdge(edgeFactory.get(), "V4", "V7"); graph.addEdge(edgeFactory.get(), "V3", "V8"); graph.addEdge(edgeFactory.get(), "V6", "V9"); graph.addEdge(edgeFactory.get(), "V4", "V10"); graph.addEdge(edgeFactory.get(), "A0", "A1"); graph.addEdge(edgeFactory.get(), "A0", "A2"); graph.addEdge(edgeFactory.get(), "A0", "A3"); graph.addEdge(edgeFactory.get(), "B0", "B1"); graph.addEdge(edgeFactory.get(), "B0", "B2"); graph.addEdge(edgeFactory.get(), "B1", "B4"); graph.addEdge(edgeFactory.get(), "B2", "B3"); graph.addEdge(edgeFactory.get(), "B2", "B5"); graph.addEdge(edgeFactory.get(), "B4", "B6"); graph.addEdge(edgeFactory.get(), "B4", "B7"); graph.addEdge(edgeFactory.get(), "B3", "B8"); graph.addEdge(edgeFactory.get(), "B6", "B9");
graph.addEdge(edgeFactory.get(), "V0", "V1"); graph.addEdge(edgeFactory.get(), "V0", "V2"); graph.addEdge(edgeFactory.get(), "V1", "V4"); graph.addEdge(edgeFactory.get(), "V2", "V3"); graph.addEdge(edgeFactory.get(), "V2", "V5"); graph.addEdge(edgeFactory.get(), "V4", "V6"); graph.addEdge(edgeFactory.get(), "V4", "V7"); graph.addEdge(edgeFactory.get(), "V3", "V8"); graph.addEdge(edgeFactory.get(), "V6", "V9"); graph.addEdge(edgeFactory.get(), "V4", "V10"); graph.addEdge(edgeFactory.get(), "A0", "A1"); graph.addEdge(edgeFactory.get(), "A0", "A2"); graph.addEdge(edgeFactory.get(), "A0", "A3"); graph.addEdge(edgeFactory.get(), "B0", "B1"); graph.addEdge(edgeFactory.get(), "B0", "B2"); graph.addEdge(edgeFactory.get(), "B1", "B4"); graph.addEdge(edgeFactory.get(), "B2", "B3"); graph.addEdge(edgeFactory.get(), "B2", "B5"); graph.addEdge(edgeFactory.get(), "B4", "B6"); graph.addEdge(edgeFactory.get(), "B4", "B7"); graph.addEdge(edgeFactory.get(), "B3", "B8"); graph.addEdge(edgeFactory.get(), "B6", "B9");
graph.addEdge(edgeFactory.get(), "A0", "B0"); graph.addEdge(edgeFactory.get(), "A0", "B1"); graph.addEdge(edgeFactory.get(), "A0", "B2"); graph.addEdge(edgeFactory.get(), "B0", "C0"); graph.addEdge(edgeFactory.get(), "B0", "C1"); graph.addEdge(edgeFactory.get(), "B0", "C2"); graph.addEdge(edgeFactory.get(), "B0", "C3"); graph.addEdge(edgeFactory.get(), "C2", "H0"); graph.addEdge(edgeFactory.get(), "C2", "H1"); graph.addEdge(edgeFactory.get(), "B1", "D0"); graph.addEdge(edgeFactory.get(), "B1", "D1"); graph.addEdge(edgeFactory.get(), "B1", "D2"); graph.addEdge(edgeFactory.get(), "B2", "E0"); graph.addEdge(edgeFactory.get(), "B2", "E1"); graph.addEdge(edgeFactory.get(), "B2", "E2"); graph.addEdge(edgeFactory.get(), "D0", "F0"); graph.addEdge(edgeFactory.get(), "D0", "F1"); graph.addEdge(edgeFactory.get(), "D0", "F2"); graph.addEdge(edgeFactory.get(), "D1", "G0"); graph.addEdge(edgeFactory.get(), "D1", "G1"); graph.addEdge(edgeFactory.get(), "D1", "G2"); graph.addEdge(edgeFactory.get(), "D1", "G3"); graph.addEdge(edgeFactory.get(), "D1", "G4");
/** * Adds a {@code childNode} to {@code parentNode}. Note that if {@code parentNode} is not already in the tree, it * will be added - which may mean that you no longer have a single root * * @param parentNode * @param childNode */ public void addChild(V parentNode, V childNode) { if (parentNode == null) { addNode(childNode); } else { graph.addEdge(newEdge(), parentNode, childNode); } }
/** * Adds a {@code childNode} to {@code parentNode}. Note that if {@code parentNode} is not already in the tree, it * will be added - which may mean that you no longer have a single root * * @param parentNode * @param childNode */ public void addChild(V parentNode, V childNode) { if (parentNode == null) { addNode(childNode); } else { graph.addEdge(newEdge(), parentNode, childNode); } }
@Override public synchronized void createDependency(@Nonnull T dependant, @Nonnull T dependency, @Nonnull Dependency.Type type) { checkNotNull(dependant); checkNotNull(dependency); checkNotNull(type); if (hasDependency(dependant, dependency)) { throw new DuplicateDependencyException("There can only be one dependency between the same two services"); } if (!graph.containsVertex(dependant)) { graph.addVertex(dependant); } if (!graph.containsVertex(dependency)) { graph.addVertex(dependency); } ServiceEdge edge = new ServiceEdge(type); graph.addEdge(edge, dependant, dependency); if (detectCycle(dependant, dependency)) { throw new CycleDetectedException("Creating dependency from " + dependant + " to " + dependency + " has caused a loop"); } }
forest.addEdge(nextEdge, currentVertex, nextVertex); updateForest(forest.getVertices(), unfinishedEdges);
forest.addEdge(nextEdge, currentVertex, nextVertex); updateForest(forest.getVertices(), unfinishedEdges);
forest.addEdge(nextEdge, currentVertex, nextVertex); updateForest(forest.getVertices(), unfinishedEdges);
@SuppressWarnings({ "unchecked", "rawtypes" }) public void collapse(Layout layout, Forest tree, Object subRoot) throws InstantiationException, IllegalAccessException { // get a sub tree from subRoot Forest subTree = TreeUtils.getSubTree(tree, subRoot); Object parent = null; Object edge = null; if(tree.getPredecessorCount(subRoot) > 0) { parent = tree.getPredecessors(subRoot).iterator().next(); edge = tree.getInEdges(subRoot).iterator().next(); } tree.removeVertex(subRoot); if(parent != null) { tree.addEdge(edge, parent, subTree); } else { tree.addVertex(subTree); } layout.setLocation(subTree, (Point2D)layout.apply(subRoot)); }
public static <V,E> void addFromSubTree(Forest<V,E> tree, Forest<V,E> subTree, E edge, V parent, V root) { // add edge connecting parent and root to tree if(edge != null && parent != null) { tree.addEdge(edge, parent, root); } else { tree.addVertex(root); } Collection<E> outEdges = subTree.getOutEdges(root); for(E e : outEdges) { V opposite = subTree.getOpposite(root, e); addFromSubTree(tree, subTree, e, root, opposite); } } }
/** * Populates <code>subtree</code> with the subtree of <code>tree</code> * which is rooted at <code>root</code>. * @param <V> the vertex type * @param <E> the edge type * @param tree the tree whose subtree is to be extracted * @param subTree the tree instance which is to be populated with the subtree of <code>tree</code> * @param root the root of the subtree to be extracted */ public static <V,E> void growSubTree(Forest<V,E> tree, Forest<V,E> subTree, V root) { if(tree.getSuccessorCount(root) > 0) { Collection<E> edges = tree.getOutEdges(root); for(E e : edges) { subTree.addEdge(e, tree.getEndpoints(e)); } Collection<V> kids = tree.getSuccessors(root); for(V kid : kids) { growSubTree(tree, subTree, kid); } } }
tree.addEdge(edge, parent, root); } else { tree.addVertex(root);
/** * Populates <code>subtree</code> with the subtree of <code>tree</code> * which is rooted at <code>root</code>. * * @param <V> * the vertex type * @param <E> * the edge type * @param tree * the tree whose subtree is to be extracted * @param subTree * the tree instance which is to be populated with the subtree of * <code>tree</code> * @param root * the root of the subtree to be extracted */ public static <V, E> void growSubTree(Forest<V, E> tree, Forest<V, E> subTree, V root) { if (tree.getSuccessorCount(root) > 0) { Collection<E> edges = tree.getOutEdges(root); for (E e : edges) { subTree.addEdge(e, tree.getEndpoints(e)); } Collection<V> kids = tree.getSuccessors(root); for (V kid : kids) { growSubTree(tree, subTree, kid); } } }