/** * @see #getOrCreateDAG(TreeId, ObjectId) */ DAG getOrCreateDAG(TreeId treeId) { return getOrCreateDAG(treeId, RevTree.EMPTY_TREE_ID); }
/** * @see #getOrCreateDAG(TreeId, ObjectId) */ DAG getOrCreateDAG(TreeId treeId) { return getOrCreateDAG(treeId, RevTree.EMPTY_TREE_ID); }
int depth(DAG root) { if (0 == root.numBuckets()) { return 0; } final AtomicInteger maxDepth = new AtomicInteger();// cause an int can't be used from inside // the lambda root.forEachBucket((bucketId) -> { DAG bucket = getOrCreateDAG(bucketId); int bucketDepth = depth(bucket); maxDepth.set(Math.max(maxDepth.get(), bucketDepth)); }); return 1 + maxDepth.get(); }
int depth(DAG root) { if (0 == root.numBuckets()) { return 0; } final AtomicInteger maxDepth = new AtomicInteger();// cause an int can't be used from inside // the lambda root.forEachBucket((bucketId) -> { DAG bucket = getOrCreateDAG(bucketId); int bucketDepth = depth(bucket); maxDepth.set(Math.max(maxDepth.get(), bucketDepth)); }); return 1 + maxDepth.get(); }
/** * To be called by {@link #shrinkIfUnderflow(DAG, NodeId, int)} */ private Set<NodeId> getChildrenRecursiveAndClearBuckets(final DAG dag) { Set<NodeId> children = new HashSet<>(); dag.forEachChild((id) -> children.add(id)); if (!children.isEmpty()) { return children; } final List<TreeId> bucketIds = dag.bucketList(); for (TreeId bucketId : bucketIds) { DAG bucket = getOrCreateDAG(bucketId); if (bucket.getState() == STATE.INITIALIZED) { mergeRoot(bucket); } Set<NodeId> bucketChildren = getChildrenRecursiveAndClearBuckets(bucket); int pre = children.size(); children.addAll(bucketChildren); int post = children.size(); Preconditions.checkState(pre + bucketChildren.size() == post); bucket.reset(RevTree.EMPTY_TREE_ID); } return children; }
/** * To be called by {@link #shrinkIfUnderflow(DAG, NodeId, int)} */ private Set<NodeId> getChildrenRecursiveAndClearBuckets(final DAG dag) { Set<NodeId> children = new HashSet<>(); dag.forEachChild((id) -> children.add(id)); if (!children.isEmpty()) { return children; } final List<TreeId> bucketIds = dag.bucketList(); for (TreeId bucketId : bucketIds) { DAG bucket = getOrCreateDAG(bucketId); if (bucket.getState() == STATE.INITIALIZED) { mergeRoot(bucket); } Set<NodeId> bucketChildren = getChildrenRecursiveAndClearBuckets(bucket); children.addAll(bucketChildren); bucket.reset(RevTree.EMPTY_TREE_ID); } return children; }
private List<NodeId> flatten(DAG root) { List<NodeId> nodes = new ArrayList<NodeId>(); Set<NodeId> children = children(root); Set<TreeId> buckets = buckets(root); if (children != null) { nodes.addAll(children); } if (buckets != null) { for (TreeId bucketTreeId : buckets) { DAG bucketDAG = strategy.getOrCreateDAG(bucketTreeId); nodes.addAll(flatten(bucketDAG)); } } return nodes; }
private List<NodeId> flatten(DAG root) { List<NodeId> nodes = new ArrayList<NodeId>(); Set<NodeId> children = children(root); Set<TreeId> buckets = buckets(root); if (children != null) { nodes.addAll(children); } if (buckets != null) { for (TreeId bucketTreeId : buckets) { DAG bucketDAG = strategy.getOrCreateDAG(bucketTreeId); nodes.addAll(flatten(bucketDAG)); } } return nodes; }
private void print(ClusteringStrategy st, DAG root) { int indent = root.getId().depthLength(); System.err.print(Strings.padStart("", indent, ' ')); System.err.println(root); Set<TreeId> buckets = new TreeSet<>(); root.forEachBucket((id) -> buckets.add(id)); for (TreeId id : buckets) { DAG dag = st.getOrCreateDAG(id); print(st, dag); } }
private void print(ClusteringStrategy st, DAG root) { int indent = root.getId().depthLength(); System.err.print(Strings.padStart("", indent, ' ')); System.err.println(root); Set<TreeId> buckets = new TreeSet<>(); root.forEachBucket((id) -> buckets.add(id)); for (TreeId id : buckets) { DAG dag = st.getOrCreateDAG(id); print(st, dag); } }
final @Nullable TreeId bucketId = computeBucketId(nodeId, dagDepth + 1); if (bucketId != null) { final DAG bucketDAG = getOrCreateDAG(bucketId); dag.addBucket(bucketId); deltaSize = put(bucketDAG, nodeId, remove); DAG bucketDAG = getOrCreateDAG(bucketId); dag.addBucket(bucketId); for (NodeId childId : childIds) {
ObjectId bucketId = e.getValue().getObjectId(); DAG dag = getOrCreateDAG(dagBucketId, bucketId); root.addBucket(dagBucketId);
ObjectId bucketId = bucket.getObjectId(); getOrCreateDAG(dagBucketId, bucketId); root.addBucket(dagBucketId); });
final @Nullable TreeId bucketId = computeBucketId(nodeId, dagDepth + 1); if (bucketId != null) { final DAG bucketDAG = getOrCreateDAG(bucketId); dag.addBucket(bucketId); deltaSize = put(bucketDAG, nodeId, remove); DAG bucketDAG = getOrCreateDAG(bucketId); dag.addBucket(bucketId); for (NodeId childId : childIds) {