private void preloadBuckets(RevTree tree) { if (tree.bucketsSize() > 0) { List<ObjectId> ids = new ArrayList<>(tree.bucketsSize()); tree.forEachBucket(bucket -> ids.add(bucket.getObjectId())); this.storageProvider.getTreeCache().preload(ids); } }
public static String toString(@NonNull RevTree tree) { String stree = String.format( "%s(%s)[size:%,d, tree nodes:%,d, feature nodes:%,d, subtrees:%,d, buckets: %,d]", tree.getClass().getSimpleName(), // toShortString(tree.getId()), // tree.size(), // tree.treesSize(), // tree.featuresSize(), // tree.numTrees(), // tree.bucketsSize()); StringBuilder sb = new StringBuilder(stree); sb.append("\n[\ntrees:"); tree.forEachTree(n -> sb.append('\n').append(n)); sb.append("\nfeatures:"); tree.forEachFeature(n -> sb.append('\n').append(n)); sb.append("\nbuckets:"); tree.forEachBucket(b -> sb.append("\n").append(b)); sb.append("\n]"); return sb.toString(); }
public RevTree getTree(final ObjectId treeId) { Integer internalId = oidMapping.inverse().get(treeId); final RevTree tree; if (internalId == null) { tree = store.getTree(treeId); getTreeId(tree); if (tree.bucketsSize() > 0) { List<ObjectId> bucketIds = new ArrayList<>(tree.bucketsSize()); tree.forEachBucket(bucket -> bucketIds.add(bucket.getObjectId())); preload(bucketIds); } } else { tree = resolve(internalId.intValue()); } return tree; }
right.forEachBucket(b -> rightBuckets.put(Integer.valueOf(b.getIndex()), b));
left.forEachBucket(b -> leftBuckets.put(Integer.valueOf(b.getIndex()), b));
public static void encode(DataOutput out, RevTree tree, StringTable stringTable) throws IOException { final int size = tree.bucketsSize(); out.writeInt(size); if (0 == size) { return; } tree.forEachBucket(bucket -> { checkArgument(128 >= bucket.getIndex(), "bucket index can't exceed 127"); ObjectId objectId = bucket.getObjectId(); try { out.writeByte(bucket.getIndex()); objectId.writeTo(out); Envelope bounds = bucket.bounds().orNull(); if (bounds == null || bounds.isNull()) { out.writeDouble(Double.NaN); } else { out.writeDouble(bounds.getMinX()); out.writeDouble(bounds.getMaxX()); out.writeDouble(bounds.getMinY()); out.writeDouble(bounds.getMaxY()); } } catch (IOException e) { throw new RuntimeException(e); } }); }
left.forEachBucket(bucket -> { lbucketIds.add(bucket.getObjectId()); indices.computeIfAbsent(Integer.valueOf(bucket.getIndex()), fn); }); right.forEachBucket(bucket -> { rbucketIds.add(bucket.getObjectId()); indices.computeIfAbsent(Integer.valueOf(bucket.getIndex()),
public static Envelope boundsOf(@NonNull RevTree tree) { Envelope env = new Envelope(); tree.forEachBucket(bucket -> bucket.expand(env)); tree.forEachTree(n -> n.expand(env)); tree.forEachFeature(n -> n.expand(env)); return env; }
public static Envelope boundsOf(RevTree tree) { Envelope env = new Envelope(); tree.forEachBucket(bucket -> bucket.expand(env)); tree.forEachTree(n -> n.expand(env)); tree.forEachFeature(n -> n.expand(env)); return env; }
@Override public void funnel(RevTree from, PrimitiveSink into) { RevObjectTypeFunnel.funnel(TYPE.TREE, into); from.forEachTree(n -> NodeFunnel.funnel(n, into)); from.forEachFeature(n -> NodeFunnel.funnel(n, into)); from.forEachBucket(bucket -> { Funnels.integerFunnel().funnel(bucket.getIndex(), into); ObjectIdFunnel.funnel(bucket.getObjectId(), into); }); }
original.forEachBucket(bucket -> { TreeId dagBucketId = root.getId().newChild(bucket.getIndex()); ObjectId bucketId = bucket.getObjectId();
public void writeTree(RevTree tree, DataOutput data) throws IOException { writeUnsignedVarLong(tree.size(), data); writeUnsignedVarInt(tree.numTrees(), data); Envelope envBuff = new Envelope(); final int nFeatures = tree.featuresSize(); writeUnsignedVarInt(nFeatures, data); tree.forEachFeature(n -> writeNodeQuiet(n, data, envBuff)); final int nTrees = tree.treesSize(); writeUnsignedVarInt(nTrees, data); tree.forEachTree(n -> writeNodeQuiet(n, data, envBuff)); final int nBuckets = tree.bucketsSize(); writeUnsignedVarInt(nBuckets, data); tree.forEachBucket(bucket -> { try { writeBucket(bucket, data, envBuff); } catch (IOException e) { throw new RuntimeException(e); } }); }