/** * @return the number of {@link Node}s in the {@link #features} property */ public default int featuresSize() { return features().size(); }
public Features(RevTree tree) { if (tree.featuresSize() > 0) { this.features = Iterators.filter(tree.features().iterator(), boundsFilter); } else if (tree.bucketsSize() > 0) { this.features = new FeatureBuckets(tree); } else { this.features = Collections.emptyIterator(); } }
/** * Performs the given action for each element of the {@link #features} collection respecting its * iteration order */ public default void forEachFeature(Consumer<Node> consumer) { features().forEach(consumer); }
@Override protected Iterator<Node> resolveBucketEntries(ObjectId bucketId) { RevTree bucketTree = source.getTree(bucketId); if (!bucketTree.buckets().isEmpty()) { return new FeatureBuckets(bucketTree); } if (!bucketTree.features().isEmpty()) { return new Features(bucketTree); } return Collections.emptyIterator(); } }
@Override public void funnel(RevTree from, PrimitiveSink into) { ImmutableList<Node> trees = from.trees(); ImmutableList<Node> features = from.features(); ImmutableSortedMap<Integer, Bucket> buckets = from.buckets(); funnel(into, trees, features, buckets); }
@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 List<Bounded> preorder(ObjectStore source, RevTree tree) { List<Bounded> res = new ArrayList<>(); if (tree.bucketsSize() == 0) { res.addAll(tree.features()); } else { tree.getBuckets().forEach((b) -> { res.add(b); RevTree bucketTree = source.getTree(b.getObjectId()); res.addAll(preorder(source, bucketTree)); res.add(b); }); } return res; }
private Set<Node> getNodes(RevTree t) { Set<Node> nodes = new TreeSet<>(); if (t.bucketsSize() == 0) { nodes.addAll(t.features()); } else { for (Bucket b : t.getBuckets()) { RevTree subtree = objectStore.getTree(b.getObjectId()); nodes.addAll(getNodes(subtree)); } } return nodes; }
@Test public void lazyFeatureNodeResolve() { DAGNode node = DAGNode.featureNode(5, 511); when(cache.resolve(eq(5))).thenReturn(featuresTree); Node resolved = node.resolve(cache); assertNotNull(resolved); assertSame(featuresTree.features().get(511), resolved); }
@Test public void lazyFeatureNodeResolve() { DAGNode node = DAGNode.featureNode(5, 511); when(cache.resolve(eq(5))).thenReturn(featuresTree); Node resolved = node.resolve(cache); assertNotNull(resolved); Node expected = featuresTree.features().get(511); RevObjectTestUtil.deepEquals(expected, resolved); }
private Set<Node> getNodes(RevTree t) { Set<Node> nodes = new TreeSet<>(); if (t.buckets().isEmpty()) { nodes.addAll(t.features()); } else { for (Bucket b : t.buckets().values()) { RevTree subtree = objectStore.getTree(b.getObjectId()); nodes.addAll(getNodes(subtree)); } } return nodes; }
public static Envelope boundsOf(RevTree tree) { Envelope env = new Envelope(); tree.buckets().values().forEach((b) -> b.expand(env)); tree.trees().forEach((t) -> t.expand(env)); tree.features().forEach((f) -> f.expand(env)); return env; }
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; }