/** * Brute force lookup of nodes named {@code nodeName} on the {@code tree} from {@code store} * <p> * There shall always be one single node for a node name on a tree, this method can be used to * identify such catastrophic errors */ public static List<Node> findNode(String nodeName, RevTree tree, ObjectStore store) { List<Node> matches = new ArrayList<>(2); Iterator<Node> children = RevObjects.children(tree, CanonicalNodeOrder.INSTANCE); while (children.hasNext()) { Node node = children.next(); if (nodeName.equals(node.getName())) { matches.add(node); } } for (Bucket b : tree.getBuckets()) { RevTree bt = store.getTree(b.getObjectId()); matches.addAll(findNode(nodeName, bt, store)); } return matches; }
/** * Brute force lookup of nodes named {@code nodeName} on the {@code tree} from {@code store} * <p> * There shall always be one single node for a node name on a tree, this method can be used to * identify such catastrophic errors */ public static List<Node> findNode(String nodeName, RevTree tree, ObjectStore store) { List<Node> matches = new ArrayList<>(2); Iterator<Node> children = RevObjects.children(tree, CanonicalNodeOrder.INSTANCE); while (children.hasNext()) { Node node = children.next(); if (nodeName.equals(node.getName())) { matches.add(node); } } for (Bucket b : tree.buckets().values()) { RevTree bt = store.getTree(b.getObjectId()); matches.addAll(findNode(nodeName, bt, store)); } return matches; }
public @Test void testNullGeometriesGoToRootUnpromotablesTree() { int size = 128; List<Node> nodes = createPointNodes(nodeRange(size)); RevTreeBuilder builder = createQuadTree(maxBounds, nodes); Node nullEnvNode = createNode(10000, null); builder.put(nullEnvNode); RevTree tree = builder.build(); assertNotEquals(0, tree.bucketsSize()); List<Node> matches = findNode(nullEnvNode.getName(), tree, objectStore); assertEquals(1, matches.size()); Integer unpromotablesBucketIndex = Integer.valueOf(4); assertTrue(tree.getBucket(unpromotablesBucketIndex).isPresent()); RevTree unpromotables = objectStore .getTree(tree.getBucket(unpromotablesBucketIndex).get().getObjectId()); matches = findNode(nullEnvNode.getName(), unpromotables, objectStore); assertEquals(1, matches.size()); }
public @Test void testNullGeometriesGoToRootUnpromotablesTree() { int size = 128; List<Node> nodes = createPointNodes(nodeRange(size)); RevTreeBuilder builder = createQuadTree(maxBounds, nodes); Node nullEnvNode = createNode(10000, null); builder.put(nullEnvNode); RevTree tree = builder.build(); assertFalse(tree.buckets().isEmpty()); List<Node> matches = findNode(nullEnvNode.getName(), tree, objectStore); assertEquals(1, matches.size()); Integer unpromotablesBucketIndex = Integer.valueOf(4); assertTrue(tree.buckets().keySet().contains(unpromotablesBucketIndex)); RevTree unpromotables = objectStore .getTree(tree.buckets().get(unpromotablesBucketIndex).getObjectId()); matches = findNode(nullEnvNode.getName(), unpromotables, objectStore); assertEquals(1, matches.size()); }
@Test public void testInitOriginalSinglePointFeature() { QuadTreeClusteringStrategy orig = support.newStrategy(); Node node = support.createNode("1", new Envelope(1, 1, 1, 1)); orig.put(node); RevTree quadTree = DAGTreeBuilder.build(orig, support.store()); assertEquals(1, quadTree.size()); QuadTreeClusteringStrategy update = support.newStrategy(quadTree); Node node2 = support.createNode("2", new Envelope(2, 2, 2, 2)); update.remove(node); update.put(node2); RevTree quadTree2 = DAGTreeBuilder.build(update, support.store()); assertEquals(1, quadTree2.size()); List<Node> lnodes = findNode("2", quadTree2, support.store()); assertEquals(1, lnodes.size()); assertEquals(node2, lnodes.get(0)); }
List<Node> node11 = findNode(node1.getName(), updatedTree, support.store()); List<Node> node12 = findNode(node2.getName(), updatedTree, support.store()); List<Node> node13 = findNode(node3.getName(), updatedTree, support.store()); assertEquals(node11.toString(), 1, node11.size()); assertEquals(1, node12.size());
@Test public void testInitOriginalSinglePointFeature() { QuadTreeClusteringStrategy orig = support.newStrategy(); Node node = support.createNode("1", new Envelope(1, 1, 1, 1)); orig.put(node); RevTree quadTree = DAGTreeBuilder.build(orig, support.store()); assertEquals(1, quadTree.size()); QuadTreeClusteringStrategy update = support.newStrategy(quadTree); Node node2 = support.createNode("2", new Envelope(2, 2, 2, 2)); update.remove(node); update.put(node2); RevTree quadTree2 = DAGTreeBuilder.build(update, support.store()); assertEquals(1, quadTree2.size()); List<Node> lnodes = findNode("2", quadTree2, support.store()); assertEquals(1, lnodes.size()); assertEquals(node2, lnodes.get(0)); }
List<Node> node11 = findNode(node1.getName(), updatedTree, support.store()); List<Node> node12 = findNode(node2.getName(), updatedTree, support.store()); List<Node> node13 = findNode(node3.getName(), updatedTree, support.store()); assertEquals(node11.toString(), 1, node11.size()); assertEquals(1, node12.size());