示例#1
0
 public void lock() {
   if (locked) return;
   locked = true;
   nodesWithSeveralChildren = new ArrayList<PNode<V, E>>();
   nodesWithSeveralChildrenScaled = new ArrayList<PNode<V, E>>();
   nodesWithSeveralParents = new ArrayList<PNode<V, E>>();
   nodesWithoutChildren = new ArrayList<PNode<V, E>>();
   sourceFakeEdges = new ArrayList<PEdge<V, E>>();
   for (PNode<V, E> pnode : nodes) {
     if (pnode.isSource()) {
       PEdge<V, E> fakeEdge = new PEdge<V, E>(root, pnode);
       pnode.addParent(fakeEdge);
       root.addChild(fakeEdge);
       sourceFakeEdges.add(fakeEdge);
     }
     if (pnode.getChildren().size() >= 2) {
       nodesWithSeveralChildren.add(pnode);
       int i = pnode.getChildren().size();
       while (--i > 0) {
         nodesWithSeveralChildrenScaled.add(pnode);
       }
     }
     if (pnode.getParents().size() >= 2) {
       nodesWithSeveralParents.add(pnode);
     }
     if (pnode.getChildren().size() == 0) {
       nodesWithoutChildren.add(pnode);
     }
   }
 }