public void collapse(final DAG dag) { if (dag.getState() != STATE.CHANGED) { return; } final int numBuckets = dag.numBuckets(); if (numBuckets == 0) { return; } final List<TreeId> bucketIds = dag.bucketList(); if (numBuckets == 1) { final TreeId replaceId = bucketIds.get(0); DAG child = getOrCreateDAG(replaceId); setParent(child, dag); // for (TreeId childId : dag.bucketList()) { // child = getOrCreateDAG(childId); // collapse(dag, child); // } } else { for (TreeId bucketId : bucketIds) { DAG child = getOrCreateDAG(bucketId); collapse(child); } } }
public void collapse(final DAG dag) { if (dag.getState() != STATE.CHANGED) { return; } final int numBuckets = dag.numBuckets(); if (numBuckets == 0) { return; } final List<TreeId> bucketIds = dag.bucketList(); if (numBuckets == 1) { final TreeId replaceId = bucketIds.get(0); DAG child = getOrCreateDAG(replaceId); setParent(child, dag); // for (TreeId childId : dag.bucketList()) { // child = getOrCreateDAG(childId); // collapse(dag, child); // } } else { for (TreeId bucketId : bucketIds) { DAG child = getOrCreateDAG(bucketId); collapse(child); } } }
/** * Parent becomes child */ private void setParent(DAG child, DAG parent) { // find deepest 1-bucket child while (child.numBuckets() == 1) { child = getOrCreateDAG(child.bucketList().get(0)); } // replace contents of parent with the contents of child parent.init(child); if (LOG.isDebugEnabled()) { LOG.debug("{} collapsed to {}", child.getId(), parent.getId()); } // System.err.println(child.getId() + " collapsed to " + parent.getId()); List<TreeId> buckets = parent.bucketList(); parent.clearBuckets(); for (TreeId id : buckets) { DAG deepChild = getOrCreateDAG(id); TreeId newChildId = parent.getId().newChild(id.leafBucket()); DAG newChild = getOrCreateDAG(newChildId); parent.addBucket(newChildId); setParent(deepChild, newChild); } }
/** * Parent becomes child */ private void setParent(DAG child, DAG parent) { // find deepest 1-bucket child while (child.numBuckets() == 1) { child = getOrCreateDAG(child.bucketList().get(0)); } // replace contents of parent with the contents of child parent.init(child); if (LOG.isDebugEnabled()) { LOG.debug("{} collapsed to {}", child.getId(), parent.getId()); } // System.err.println(child.getId() + " collapsed to " + parent.getId()); List<TreeId> buckets = parent.bucketList(); parent.clearBuckets(); for (TreeId id : buckets) { DAG deepChild = getOrCreateDAG(id); TreeId newChildId = parent.getId().newChild(id.leafBucket()); DAG newChild = getOrCreateDAG(newChildId); parent.addBucket(newChildId); setParent(deepChild, newChild); } }