public static RevTree createLeafTree(long size, Collection<Node> features, Collection<Node> trees) { Preconditions.checkNotNull(features); Preconditions.checkNotNull(trees); ImmutableList<Node> featuresList = ImmutableList.of(); ImmutableList<Node> treesList = ImmutableList.of(); if (!features.isEmpty()) { featuresList = NODE_STORAGE_ORDER.immutableSortedCopy(features); } if (!trees.isEmpty()) { treesList = NODE_STORAGE_ORDER.immutableSortedCopy(trees); } final ObjectId id = HashObject.hashTree(treesList, featuresList, null); return RevTreeBuilder.create(id, size, trees.size(), treesList, featuresList, null); }
private RevTree createNodeTree(long size, int numTrees, TreeMap<Integer, Bucket> buckets) { ImmutableSortedMap<Integer, Bucket> innerTrees = ImmutableSortedMap.copyOf(buckets); final ObjectId id = HashObject.hashTree(null, null, innerTrees); return RevTreeBuilder.create(id, size, numTrees, null, null, innerTrees); }
id = HashObject.hashTree(trees, features, buckets); RevTree tree = RevTreeBuilder.create(id, size, treeCount, trees, features, buckets); return tree;
public static RevTree tree(int treeSize, List<Node> treeNodes, List<Node> featureNodes, SortedMap<Integer, Bucket> buckets) { ObjectId id = HashObject.hashTree(treeNodes, featureNodes, buckets); ImmutableList<Node> trees = treeNodes == null ? ImmutableList.of() : ImmutableList.copyOf(treeNodes); ImmutableList<Node> features = featureNodes == null ? ImmutableList.of() : ImmutableList.copyOf(featureNodes); int childTreeCount = treeNodes == null ? 0 : treeNodes.size(); RevTree tree = RevTreeBuilder.create(id, treeSize, childTreeCount, trees, features, buckets); return tree; }
RevTree tree = RevTreeBuilder.create(id, size, numTrees, trees.build(), features.build(), subtrees); return tree;
private RevTree createLeafTree(int i) { final int numNodes = 512; List<Node> nodes = new ArrayList<>(numNodes); for (int n = 0; n < numNodes; n++) { Node node = createNodeWithMetadata(n); nodes.add(node); } ObjectId id = RevObjectTestSupport.hashString("fake-tree-" + i); RevTree tree = RevTreeBuilder.create(id, numNodes, 0, null, ImmutableList.copyOf(nodes), null); return tree; }
id = HashObject.hashTree(trees, features, ImmutableSortedMap.copyOf(buckets)); RevTree tree = RevTreeBuilder.create(id, size, treeCount, trees, features, buckets); return tree;
private RevTree createBucketTree(int i) { final int bucketCount = 32; SortedMap<Integer, Bucket> buckets = new TreeMap<>(); for (int b = 0; b < bucketCount; b++) { ObjectId bucketTree = RevObjectTestSupport.hashString("b" + b); Envelope bounds = new Envelope(0, b, 0, b); Bucket bucket = Bucket.create(bucketTree, bounds); buckets.put(b, bucket); } final ObjectId fakeId = RevObjectTestSupport.hashString(String.valueOf(i)); RevTree tree = RevTreeBuilder.create(fakeId, 1024, 0, null, null, buckets); return tree; }
private RevTree forceTreeId(RevTreeBuilder b, ObjectId treeId) { RevTree tree = b.build(); long size = tree.size(); int childTreeCount = tree.numTrees(); ImmutableList<Node> trees = tree.trees(); ImmutableList<Node> features = tree.features(); SortedMap<Integer, Bucket> buckets = tree.buckets(); RevTree fakenId = RevTreeBuilder.create(treeId, size, childTreeCount, trees, features, buckets); return fakenId; }
@Test public void testRoundTripBucketsFull() throws IOException { ObjectId id = RevObjectTestSupport.hashString("fake"); long size = 100000000; int childTreeCount = 0; SortedMap<Integer, Bucket> bucketTrees = createBuckets(32); final RevTree tree = RevTreeBuilder.create(id, size, childTreeCount, null, null, bucketTrees); RevTree roundTripped = (RevTree) read(tree.getId(), write(tree)); assertTreesAreEqual(tree, roundTripped); }