public RevTreeBuilder newTreeBuilder(RevTree original) { return RevTreeBuilder.quadBuilder(store, store, original, maxBoundsFloat64); }
@Override protected RevTreeBuilder createBuiler(RevTree original) { return RevTreeBuilder.quadBuilder(objectStore, objectStore, original, maxBounds); }
private RevTreeBuilder createQuadTree(Envelope maxBounds, final Iterable<Node> nodes, final ObjectStore objectStore) { RevTreeBuilder qtree = RevTreeBuilder.quadBuilder(objectStore, objectStore, RevTree.EMPTY, maxBounds); for (Node node : nodes) { assertTrue(qtree.put(node)); } return qtree; } }
builder = RevTreeBuilder.quadBuilder(source, target, oldIndexTree, maxBounds); break; default:
public RevTreeBuilder createFeaturesTreeBuilder(ObjectStore source, final String namePrefix, final int numEntries, final int startIndex, boolean randomIds) { RevTreeBuilder builder; if (spatialTrees) { Envelope maxBounds = getMaxBounds(); builder = RevTreeBuilder.quadBuilder(source, source, RevTree.EMPTY, maxBounds); } else { builder = RevTreeBuilder.builder(source); } for (int i = startIndex; i < startIndex + numEntries; i++) { builder.put(featureNode(namePrefix, i, randomIds)); } return builder; }
public RevTreeBuilder createLargeFeaturesTreeBuilder(ObjectDatabase source, final String namePrefix, final int numEntries, final int startIndex, boolean randomIds) { RevTreeBuilder builder; if (spatialTrees) { Envelope maxBounds = getMaxBounds(); builder = RevTreeBuilder.quadBuilder(source, source, RevTree.EMPTY, maxBounds); } else { builder = RevTreeBuilder.builder(source); } for (int i = startIndex; i < startIndex + numEntries; i++) { builder.put(featureNode(namePrefix, i, randomIds)); } return builder; }
private void testRemove(final int ncount) { final Set<Node> nodes = new HashSet<>(createPointNodes(nodeRange(ncount))); RevTreeBuilder initialTreeBuilder = createQuadTree(maxBounds, nodes); final RevTree tree = initialTreeBuilder.build(); final Set<Node> removedNodes; RevTreeBuilder builder = RevTreeBuilder.quadBuilder(objectStore, objectStore, tree, maxBounds); // collect some keys to remove { Set<Node> treeNodes = RevObjectTestSupport.getTreeNodes(tree, objectStore); assertEquals(nodes, treeNodes); List<Node> list = new ArrayList<>(treeNodes); Collections.shuffle(list); int removeCount = ncount / 10; removedNodes = ImmutableSet.copyOf(list.subList(0, removeCount)); for (Node node : removedNodes) { boolean removed = builder.remove(node); assertTrue("Not removed: " + node, removed); } assertFalse(removedNodes.isEmpty()); } final RevTree result = builder.build(); Set<Node> resultNodes = getNodes(result); SetView<Node> difference = Sets.difference(nodes, resultNodes); assertEquals(removedNodes.size(), difference.size()); assertEquals(removedNodes, difference); }
RevTreeBuilder builder = RevTreeBuilder.quadBuilder(objectStore, objectStore, tree, maxBounds);
private IndexInfo createIndex(String treeName, IndexDatabase target) { IndexInfo index = target.createIndexInfo(treeName, "the_geom", IndexType.QUADTREE, null); Envelope maxBounds = new Envelope(-180, 180, -90, 90); Envelope bounds = new Envelope(); RevTree tree = RevTree.EMPTY; for (int y = -90; y <= 90; y += 5) { RevTreeBuilder builder = RevTreeBuilder.quadBuilder(target, target, tree, maxBounds); for (int x = -180; x <= 180; x += 5) { bounds.init(x, x, y, y); String name = String.format("%d_%d", x, y); ObjectId oid = RevObjectTestSupport.hashString(name); Node node = RevObjectFactory.defaultInstance().createNode(name, oid, ObjectId.NULL, TYPE.FEATURE, bounds, null); builder.put(node); } tree = builder.build(); ObjectId originalTree = RevObjectTestSupport.hashString("fake" + tree.getId()); target.addIndexedTree(index, originalTree, tree.getId()); } return index; }