protected @Override void compute() { List<TreeCopyTask> treeTasks = new ArrayList<>(); Set<IndexTreeMapping> mappings = new HashSet<>(); try (AutoCloseableIterator<IndexTreeMapping> indexMappings = src .resolveIndexedTrees(index)) { mappings = Sets.newHashSet(indexMappings); } for (IndexTreeMapping mapping : mappings) { ObjectId indexTreeId = mapping.indexTree; if (!target.exists(indexTreeId)) { TreeCopyTask task = new TreeCopyTask(src.getTree(indexTreeId), src, target); treeTasks.add(task); } } super.invokeAll(treeTasks); IndexInfo targetIndex = target.createIndexInfo(index.getTreeName(), index.getAttributeName(), index.getIndexType(), index.getMetadata()); mappings.forEach(m -> target.addIndexedTree(targetIndex, m.featureTree, m.indexTree)); }
indexTree.getId()); indexDatabase().addIndexedTree(index, newCanonicalTree.getId(), indexTree.getId()); progress.setDescription(String.format("QuadTree created. Size: %,d, time: %s", indexTree.size(), revTreeTime));
indexdb.addIndexedTree(indexInfo, originalTree, indexedTree); } finally { producerThread.shutdownNow();
indexTree.getId()); indexDatabase().addIndexedTree(index, newCanonicalTree.getId(), indexTree.getId()); progress.setDescription(String.format("QuadTree created. Size: %,d, time: %s", indexTree.size(), revTreeTime));
@Test public void testUpdateIndexTreeMappings() { String treeName = "tree"; String attributeName = "attribute"; IndexInfo index = indexDb.createIndexInfo(treeName, attributeName, IndexType.QUADTREE, null); ObjectId originalTreeId = RevObjectTestSupport.hashString("fake1"); ObjectId indexedTreeId = RevObjectTestSupport.hashString("fake2"); ObjectId notIndexedId = RevObjectTestSupport.hashString("fake3"); indexDb.addIndexedTree(index, originalTreeId, indexedTreeId); Optional<ObjectId> resolvedId = indexDb.resolveIndexedTree(index, originalTreeId); assertTrue(resolvedId.isPresent()); assertEquals(indexedTreeId, resolvedId.get()); resolvedId = indexDb.resolveIndexedTree(index, notIndexedId); assertFalse(resolvedId.isPresent()); indexDb.addIndexedTree(index, originalTreeId, notIndexedId); resolvedId = indexDb.resolveIndexedTree(index, originalTreeId); assertTrue(resolvedId.isPresent()); assertEquals(notIndexedId, resolvedId.get()); resolvedId = indexDb.resolveIndexedTree(index, indexedTreeId); assertFalse(resolvedId.isPresent()); }
@Test public void testIndexTreeMappings() { String treeName = "tree"; String attributeName = "attribute"; IndexInfo index = indexDb.createIndexInfo(treeName, attributeName, IndexType.QUADTREE, null); ObjectId originalTreeId = RevObjectTestSupport.hashString("fake1"); ObjectId indexedTreeId = RevObjectTestSupport.hashString("fake2"); ObjectId notIndexedId = RevObjectTestSupport.hashString("fake3"); indexDb.addIndexedTree(index, originalTreeId, indexedTreeId); Optional<ObjectId> resolvedId = indexDb.resolveIndexedTree(index, originalTreeId); assertTrue(resolvedId.isPresent()); assertEquals(indexedTreeId, resolvedId.get()); resolvedId = indexDb.resolveIndexedTree(index, notIndexedId); assertFalse(resolvedId.isPresent()); }
@Test public void testUpdateIndexTreeMappings() { String treeName = "tree"; String attributeName = "attribute"; IndexInfo index = indexDb.createIndexInfo(treeName, attributeName, IndexType.QUADTREE, null); ObjectId originalTreeId = RevObjectTestSupport.hashString("fake1"); ObjectId indexedTreeId = RevObjectTestSupport.hashString("fake2"); ObjectId notIndexedId = RevObjectTestSupport.hashString("fake3"); indexDb.addIndexedTree(index, originalTreeId, indexedTreeId); Optional<ObjectId> resolvedId = indexDb.resolveIndexedTree(index, originalTreeId); assertTrue(resolvedId.isPresent()); assertEquals(indexedTreeId, resolvedId.get()); resolvedId = indexDb.resolveIndexedTree(index, notIndexedId); assertFalse(resolvedId.isPresent()); indexDb.addIndexedTree(index, originalTreeId, notIndexedId); resolvedId = indexDb.resolveIndexedTree(index, originalTreeId); assertTrue(resolvedId.isPresent()); assertEquals(notIndexedId, resolvedId.get()); resolvedId = indexDb.resolveIndexedTree(index, indexedTreeId); assertFalse(resolvedId.isPresent()); }
@Test public void testIndexTreeMappings() { String treeName = "tree"; String attributeName = "attribute"; IndexInfo index = indexDb.createIndexInfo(treeName, attributeName, IndexType.QUADTREE, null); ObjectId originalTreeId = RevObjectTestSupport.hashString("fake1"); ObjectId indexedTreeId = RevObjectTestSupport.hashString("fake2"); ObjectId notIndexedId = RevObjectTestSupport.hashString("fake3"); indexDb.addIndexedTree(index, originalTreeId, indexedTreeId); Optional<ObjectId> resolvedId = indexDb.resolveIndexedTree(index, originalTreeId); assertTrue(resolvedId.isPresent()); assertEquals(indexedTreeId, resolvedId.get()); resolvedId = indexDb.resolveIndexedTree(index, notIndexedId); assertFalse(resolvedId.isPresent()); }
@Test public void testClearIndex() { String treeName = "tree"; String attributeName = "attribute"; IndexInfo index = indexDb.createIndexInfo(treeName, attributeName, IndexType.QUADTREE, null); ObjectId originalTreeId1 = RevObjectTestSupport.hashString("fake1"); ObjectId originalTreeId2 = RevObjectTestSupport.hashString("fake2"); ObjectId indexedTreeId1 = RevObjectTestSupport.hashString("fake3"); ObjectId indexedTreeId2 = RevObjectTestSupport.hashString("fake4"); indexDb.addIndexedTree(index, originalTreeId1, indexedTreeId1); indexDb.addIndexedTree(index, originalTreeId2, indexedTreeId2); Optional<ObjectId> resolvedId = indexDb.resolveIndexedTree(index, originalTreeId1); assertTrue(resolvedId.isPresent()); assertEquals(indexedTreeId1, resolvedId.get()); resolvedId = indexDb.resolveIndexedTree(index, originalTreeId2); assertTrue(resolvedId.isPresent()); assertEquals(indexedTreeId2, resolvedId.get()); indexDb.clearIndex(index); resolvedId = indexDb.resolveIndexedTree(index, originalTreeId1); assertFalse(resolvedId.isPresent()); resolvedId = indexDb.resolveIndexedTree(index, originalTreeId2); assertFalse(resolvedId.isPresent()); }
@Test public void testClearIndex() { String treeName = "tree"; String attributeName = "attribute"; IndexInfo index = indexDb.createIndexInfo(treeName, attributeName, IndexType.QUADTREE, null); ObjectId originalTreeId1 = RevObjectTestSupport.hashString("fake1"); ObjectId originalTreeId2 = RevObjectTestSupport.hashString("fake2"); ObjectId indexedTreeId1 = RevObjectTestSupport.hashString("fake3"); ObjectId indexedTreeId2 = RevObjectTestSupport.hashString("fake4"); indexDb.addIndexedTree(index, originalTreeId1, indexedTreeId1); indexDb.addIndexedTree(index, originalTreeId2, indexedTreeId2); Optional<ObjectId> resolvedId = indexDb.resolveIndexedTree(index, originalTreeId1); assertTrue(resolvedId.isPresent()); assertEquals(indexedTreeId1, resolvedId.get()); resolvedId = indexDb.resolveIndexedTree(index, originalTreeId2); assertTrue(resolvedId.isPresent()); assertEquals(indexedTreeId2, resolvedId.get()); indexDb.clearIndex(index); resolvedId = indexDb.resolveIndexedTree(index, originalTreeId1); assertFalse(resolvedId.isPresent()); resolvedId = indexDb.resolveIndexedTree(index, originalTreeId2); assertFalse(resolvedId.isPresent()); }
ObjectId indexedTreeId2 = RevObjectTestSupport.hashString("fake4"); indexDb.addIndexedTree(index, originalTreeId1, indexedTreeId1); indexDb.addIndexedTree(index, originalTreeId2, indexedTreeId2); indexDb.addIndexedTree(index2, originalTreeId1, indexedTreeId1); indexDb.addIndexedTree(index2, originalTreeId2, indexedTreeId2);
ObjectId indexedTreeId2 = RevObjectTestSupport.hashString("fake4"); indexDb.addIndexedTree(index, originalTreeId1, indexedTreeId1); indexDb.addIndexedTree(index, originalTreeId2, indexedTreeId2); indexDb.addIndexedTree(index2, originalTreeId1, indexedTreeId1); indexDb.addIndexedTree(index2, originalTreeId2, indexedTreeId2);
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; }