public Trees(RevTree tree) { if (tree.numTrees() == 0) { this.trees = Collections.emptyIterator(); } else if (tree.treesSize() > 0) { this.trees = Iterators.filter(tree.trees().iterator(), boundsFilter); } else if (tree.bucketsSize() > 0) { this.trees = new TreeBuckets(tree); } else { this.trees = Collections.emptyIterator(); } }
public Trees(RevTree tree) { if (tree.numTrees() == 0) { this.trees = Collections.emptyIterator(); } else if (!tree.trees().isEmpty()) { this.trees = Iterators.filter(tree.trees().iterator(), boundsFilter); } else if (!tree.buckets().isEmpty()) { this.trees = new TreeBuckets(tree); } else { this.trees = Collections.emptyIterator(); } }
public static void encode(DataOutput out, RevTree tree) throws IOException { // object type out.write(RevObject.TYPE.TREE.ordinal()); final long totalSize = tree.size(); final int totalSubtrees = tree.numTrees(); Varint.writeUnsignedVarLong(totalSize, out); Varint.writeUnsignedVarInt(totalSubtrees, out); }
public static void encode(DataOutput out, RevTree tree) throws IOException { // object type out.write(RevObject.TYPE.TREE.ordinal()); final long totalSize = tree.size(); final int totalSubtrees = tree.numTrees(); Varint.writeUnsignedVarLong(totalSize, out); Varint.writeUnsignedVarInt(totalSubtrees, out); }
@Override protected Iterator<Node> resolveBucketEntries(ObjectId bucketId) { RevTree bucketTree = source.getTree(bucketId); if (bucketTree.numTrees() == 0) { return Collections.emptyIterator(); } if (!bucketTree.trees().isEmpty()) { return new Trees(bucketTree); } if (!bucketTree.buckets().isEmpty()) { return new TreeBuckets(bucketTree); } return Collections.emptyIterator(); } }
private boolean addTreeFeatures(RevTree tree, boolean leftPresent, boolean rightPresent) { long size = tree.size(); if (leftPresent && rightPresent) { count.changedFeatures(size); } else if (leftPresent) { count.removedFeatures(size); } else { count.addedFeatures(size); } int numTrees = tree.numTrees(); return numTrees > 0; } }
@Override protected void print(RevTree revTree, Writer w) throws IOException { println(w, "size\t", Long.toString(revTree.size())); println(w, "numtrees\t", Integer.toString(revTree.numTrees())); writeChildren(w, revTree.trees()); writeChildren(w, revTree.features()); writeBuckets(w, revTree.getBuckets()); }
@Override protected void print(RevTree revTree, Writer w) throws IOException { println(w, "size\t", Long.toString(revTree.size())); println(w, "numtrees\t", Integer.toString(revTree.numTrees())); writeChildren(w, revTree.trees()); writeChildren(w, revTree.features()); writeBuckets(w, revTree.buckets()); }
private boolean addTreeFeatures(ObjectId treeId, boolean leftPresent, boolean rightPresent) { RevTree tree = db.getTree(treeId); long size = tree.size(); if (leftPresent && rightPresent) { count.changedFeatures(size); } else if (leftPresent) { count.removedFeatures(size); } else { count.addedFeatures(size); } int numTrees = tree.numTrees(); return numTrees > 0; } }
private int writeNodeTree(RevTree tree, FlatBufferBuilder builder) { final int bucketsOffset = tree.bucketsSize() == 0 ? 0 : NodeTree.createBucketsVector(builder, writeBuckets(tree, builder)); NodeTree.startNodeTree(builder); NodeTree.addSize(builder, tree.size()); NodeTree.addNumTreesRecursive(builder, tree.numTrees()); if (bucketsOffset > 0) { NodeTree.addBuckets(builder, bucketsOffset); } return NodeTree.endNodeTree(builder); }
private void assertEqualsFully(RevTree o1, RevTree o2) { assertEquals(o1.size(), o2.size()); assertEquals(o1.numTrees(), o2.numTrees()); assertNodesEqual(o1.features(), o2.features()); assertNodesEqual(o1.trees(), o2.trees()); assertEquals(Lists.newArrayList(o1.getBuckets()), Lists.newArrayList(o2.getBuckets())); }
public static void assertEqualsFully(RevTree o1, RevTree o2) { assertEquals(o1.size(), o2.size()); assertEquals(o1.numTrees(), o2.numTrees()); assertEqualsFully(o1.features(), o2.features()); assertEqualsFully(o1.trees(), o2.trees()); assertEquals(Lists.newArrayList(o1.getBuckets()), Lists.newArrayList(o2.getBuckets())); }
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 testEmptyTree() { RevTree emptyTree = RevTree.EMPTY; assertEquals(TYPE.TREE, emptyTree.getType()); assertEquals(RevTree.EMPTY_TREE_ID, emptyTree.getId()); assertEquals(0, emptyTree.trees().size()); assertEquals(0, emptyTree.features().size()); assertEquals(0, emptyTree.bucketsSize()); assertEquals(0, emptyTree.size()); assertEquals(0, emptyTree.numTrees()); assertTrue(emptyTree.isEmpty()); assertTrue(emptyTree.toString().contains("EMPTY TREE")); assertEquals(emptyTree, emptyTree); assertFalse(emptyTree.equals(RevTree.EMPTY_TREE_ID)); }
private RevTree testCreateLeafTree(ObjectId id, long size, List<Node> trees, List<Node> features) { RevTree actual = factory.createTree(id, size, trees, features); assertNotNull(actual); RevTree expected = DEFAULT.createTree(id, size, trees, features); assertNotNull(expected); assertEquals(id, expected.getId()); assertEquals(size, expected.size()); assertEquals(trees.size(), expected.numTrees()); assertEquals(trees.size(), expected.treesSize()); assertEquals(features.size(), expected.featuresSize()); assertEquals(0, expected.bucketsSize()); RevObjectTestUtil.deepEquals(expected, actual); return actual; }
private RevTree testCreateTree(ObjectId id, @Nonnegative long size, int childTreeCount, SortedSet<Bucket> buckets) { RevTree actual = factory.createTree(id, size, childTreeCount, buckets); assertNotNull(actual); RevTree expected = DEFAULT.createTree(id, size, childTreeCount, buckets); assertNotNull(expected); assertEquals(id, expected.getId()); assertEquals(size, expected.size()); assertEquals(0, expected.treesSize()); assertEquals(0, expected.featuresSize()); assertEquals(childTreeCount, expected.numTrees()); assertEquals(buckets.size(), expected.bucketsSize()); RevObjectTestUtil.deepEquals(expected, actual); return actual; }
public static void deepEquals(@NonNull RevTree expected, @NonNull RevTree actual) { assertEquals(TYPE.TREE, actual.getType()); assertEquals(expected.getId(), expected.getId()); assertEquals(expected.size(), expected.size()); assertEquals(expected.numTrees(), expected.numTrees()); assertEquals(expected.treesSize(), expected.treesSize()); assertEquals(expected.featuresSize(), expected.featuresSize()); assertEquals(expected.bucketsSize(), expected.bucketsSize()); deepEquals(expected.trees(), actual.trees()); deepEquals(expected.features(), actual.features()); deepEquals(expected.getBuckets(), actual.getBuckets()); for (Bucket b : expected.getBuckets()) { deepEquals(b, actual.getBucket(b.getIndex()).orElse(null)); } }
private RevTree encodeDecode(RevTree orig) throws IOException { final byte[] encoded = RevTreeFormat.encode(orig); assertNotNull(encoded); RevTree decoded = RevTreeFormat.decode(orig.getId(), encoded); assertEquals(orig, decoded); // equals only checks for objectId assertEquals(TYPE.TREE, decoded.getType()); assertEquals(orig.size(), decoded.size()); assertEquals(orig.numTrees(), decoded.numTrees()); assertEqualsFully(orig.trees(), decoded.trees()); assertEqualsFully(orig.features(), decoded.features()); assertEquals(orig.buckets(), decoded.buckets()); return decoded; }