@Override public void write(ResponseWriter out) throws Exception { out.start(); out.writeIndexInfo(index.info(), "index", false); out.writeElement("indexedTreeId", index.indexTreeId().toString()); out.finish(); } });
@Override public void write(ResponseWriter out) throws Exception { out.start(); out.writeIndexInfo(index.info(), "index", false); out.writeElement("indexedTreeId", index.indexTreeId().toString()); out.finish(); } });
private IndexInfo createIndex(boolean indexHistory, @Nullable String... extraAttributes) { Index index = geogig.command(CreateQuadTree.class)// .setTreeRefSpec(worldPointsLayer.getName())// .setGeometryAttributeName("geom")// .setExtraAttributes(Lists.newArrayList(extraAttributes))// .setIndexHistory(indexHistory)// .call(); return index.info(); }
private IndexInfo createIndex(boolean indexHistory, @Nullable String... extraAttributes) { Index index = geogig.command(CreateQuadTree.class)// .setTreeRefSpec(worldPointsLayer.getName())// .setGeometryAttributeName("geom")// .setExtraAttributes(Lists.newArrayList(extraAttributes))// .setIndexHistory(indexHistory)// .call(); return index.info(); }
private IndexInfo createIndex(@Nullable String... extraAttributes) { Map<String, Object> metadata = new HashMap<>(); metadata.put(IndexInfo.MD_QUAD_MAX_BOUNDS, new Envelope(-180, 180, -90, 90)); if (extraAttributes != null && extraAttributes.length > 0) { metadata.put(IndexInfo.FEATURE_ATTRIBUTES_EXTRA_DATA, extraAttributes); } Index index = geogig.command(CreateIndexOp.class)// .setTreeName(worldPointsLayer.getName())// .setCanonicalTypeTree(worldPointsTree)// .setFeatureTypeId(worldPointsLayer.getMetadataId().get())// .setAttributeName("geom")// .setIndexType(IndexType.QUADTREE)// .setMetadata(metadata)// .call(); return index.info(); }
private IndexInfo createIndex(@Nullable String... extraAttributes) { Map<String, Object> metadata = new HashMap<>(); metadata.put(IndexInfo.MD_QUAD_MAX_BOUNDS, new Envelope(-180, 180, -90, 90)); if (extraAttributes != null && extraAttributes.length > 0) { metadata.put(IndexInfo.FEATURE_ATTRIBUTES_EXTRA_DATA, extraAttributes); } Index index = geogig.command(CreateIndexOp.class)// .setTreeName(worldPointsLayer.getName())// .setCanonicalTypeTree(worldPointsTree)// .setFeatureTypeId(worldPointsLayer.getMetadataId().get())// .setAttributeName("geom")// .setIndexType(IndexType.QUADTREE)// .setMetadata(metadata)// .call(); return index.info(); }
@Test public void testEqualIndexesWithDifferentExtraAttributesHashDifferently() { Index noExtraAtts = createAndBuildIndex(); Index xExtraAtts = updateIndex(noExtraAtts.info().getTreeName(), "x"); Index yExtraAtts = updateIndex(noExtraAtts.info().getTreeName(), "y"); assertNotEquals(noExtraAtts, xExtraAtts); assertNotEquals(xExtraAtts, yExtraAtts); assertNotEquals(noExtraAtts.indexTreeId(), xExtraAtts.indexTreeId()); assertNotEquals(xExtraAtts.indexTreeId(), yExtraAtts.indexTreeId()); }
@Test public void testEqualIndexesWithDifferentExtraAttributesHashDifferently() { Index noExtraAtts = createAndBuildIndex(); Index xExtraAtts = updateIndex(noExtraAtts.info().getTreeName(), "x"); Index yExtraAtts = updateIndex(noExtraAtts.info().getTreeName(), "y"); assertNotEquals(noExtraAtts, xExtraAtts); assertNotEquals(xExtraAtts, yExtraAtts); assertNotEquals(noExtraAtts.indexTreeId(), xExtraAtts.indexTreeId()); assertNotEquals(xExtraAtts.indexTreeId(), yExtraAtts.indexTreeId()); }
@Test public void testUpdateIndexAddAttributes() { createIndex(); Index index = geogig.command(UpdateIndexOp.class)// .setTreeRefSpec(worldPointsLayer.getName())// .setExtraAttributes(Lists.newArrayList("x", "y"))// .call(); IndexInfo indexInfo = indexdb.getIndexInfo(worldPointsLayer.getName(), "geom").get(); assertEquals(indexInfo, index.info()); assertEquals(worldPointsLayer.getName(), indexInfo.getTreeName()); assertEquals("geom", indexInfo.getAttributeName()); assertEquals(IndexType.QUADTREE, indexInfo.getIndexType()); assertEquals(2, indexInfo.getMetadata().size()); assertTrue(indexInfo.getMetadata().containsKey(IndexInfo.MD_QUAD_MAX_BOUNDS)); assertEquals(new Envelope(-180, 180, -90, 90), indexInfo.getMetadata().get(IndexInfo.MD_QUAD_MAX_BOUNDS)); assertTrue(indexInfo.getMetadata().containsKey(IndexInfo.FEATURE_ATTRIBUTES_EXTRA_DATA)); List<String> extraAttributes = Lists.newArrayList( (String[]) indexInfo.getMetadata().get(IndexInfo.FEATURE_ATTRIBUTES_EXTRA_DATA)); assertEquals(2, extraAttributes.size()); assertTrue(extraAttributes.contains("x")); assertTrue(extraAttributes.contains("y")); ObjectId canonicalFeatureTreeId = geogig.command(ResolveTreeish.class) .setTreeish("HEAD:" + worldPointsLayer.getName()).call().get(); Optional<ObjectId> indexedTreeId = indexdb.resolveIndexedTree(indexInfo, canonicalFeatureTreeId); assertTrue(indexedTreeId.isPresent()); assertEquals(indexedTreeId.get(), index.indexTreeId()); IndexTestSupport.verifyIndex(geogig, indexedTreeId.get(), canonicalFeatureTreeId, "x", "y"); }
@Test public void testUpdateIndexAddAttributes() { createIndex(); Index index = geogig.command(UpdateIndexOp.class)// .setTreeRefSpec(worldPointsLayer.getName())// .setExtraAttributes(Lists.newArrayList("x", "y"))// .call(); IndexInfo indexInfo = indexdb.getIndexInfo(worldPointsLayer.getName(), "geom").get(); assertEquals(indexInfo, index.info()); assertEquals(worldPointsLayer.getName(), indexInfo.getTreeName()); assertEquals("geom", indexInfo.getAttributeName()); assertEquals(IndexType.QUADTREE, indexInfo.getIndexType()); assertEquals(2, indexInfo.getMetadata().size()); assertTrue(indexInfo.getMetadata().containsKey(IndexInfo.MD_QUAD_MAX_BOUNDS)); assertEquals(new Envelope(-180, 180, -90, 90), indexInfo.getMetadata().get(IndexInfo.MD_QUAD_MAX_BOUNDS)); assertTrue(indexInfo.getMetadata().containsKey(IndexInfo.FEATURE_ATTRIBUTES_EXTRA_DATA)); List<String> extraAttributes = Lists.newArrayList( (String[]) indexInfo.getMetadata().get(IndexInfo.FEATURE_ATTRIBUTES_EXTRA_DATA)); assertEquals(2, extraAttributes.size()); assertTrue(extraAttributes.contains("x")); assertTrue(extraAttributes.contains("y")); ObjectId canonicalFeatureTreeId = geogig.command(ResolveTreeish.class) .setTreeish("HEAD:" + worldPointsLayer.getName()).call().get(); Optional<ObjectId> indexedTreeId = indexdb.resolveIndexedTree(indexInfo, canonicalFeatureTreeId); assertTrue(indexedTreeId.isPresent()); assertEquals(indexedTreeId.get(), index.indexTreeId()); IndexTestSupport.verifyIndex(geogig, indexedTreeId.get(), canonicalFeatureTreeId, "x", "y"); }
@Test public void testUpdateIndexOverwriteExistingAttributes() { createIndex("x"); Index index = geogig.command(UpdateIndexOp.class)// .setTreeRefSpec(worldPointsLayer.getName())// .setExtraAttributes(Lists.newArrayList("y"))// .setOverwrite(true)// .call(); IndexInfo indexInfo = indexdb.getIndexInfo(worldPointsLayer.getName(), "geom").get(); assertEquals(indexInfo, index.info()); assertEquals(worldPointsLayer.getName(), indexInfo.getTreeName()); assertEquals("geom", indexInfo.getAttributeName()); assertEquals(IndexType.QUADTREE, indexInfo.getIndexType()); assertEquals(2, indexInfo.getMetadata().size()); assertTrue(indexInfo.getMetadata().containsKey(IndexInfo.MD_QUAD_MAX_BOUNDS)); assertEquals(new Envelope(-180, 180, -90, 90), indexInfo.getMetadata().get(IndexInfo.MD_QUAD_MAX_BOUNDS)); assertTrue(indexInfo.getMetadata().containsKey(IndexInfo.FEATURE_ATTRIBUTES_EXTRA_DATA)); List<String> extraAttributes = Lists.newArrayList( (String[]) indexInfo.getMetadata().get(IndexInfo.FEATURE_ATTRIBUTES_EXTRA_DATA)); assertEquals(1, extraAttributes.size()); assertTrue(extraAttributes.contains("y")); ObjectId canonicalFeatureTreeId = geogig.command(ResolveTreeish.class) .setTreeish("HEAD:" + worldPointsLayer.getName()).call().get(); Optional<ObjectId> indexedTreeId = indexdb.resolveIndexedTree(indexInfo, canonicalFeatureTreeId); assertTrue(indexedTreeId.isPresent()); assertEquals(indexedTreeId.get(), index.indexTreeId()); IndexTestSupport.verifyIndex(geogig, indexedTreeId.get(), canonicalFeatureTreeId, "y"); }
assertEquals(indexInfo, index.info()); assertEquals(worldPointsLayer.getName(), indexInfo.getTreeName()); assertEquals("geom", indexInfo.getAttributeName());
@Test public void testCreateIndexMetadata() { Envelope bounds = new Envelope(-180, 180, -90, 90); Map<String, Object> metadata = new HashMap<String, Object>(); metadata.put(IndexInfo.MD_QUAD_MAX_BOUNDS, bounds); metadata.put("SomeKey", "SomeValue"); Index index = geogig.command(CreateIndexOp.class)// .setTreeName(worldPointsLayer.getName())// .setCanonicalTypeTree(worldPointsTree)// .setFeatureTypeId(worldPointsLayer.getMetadataId().get())// .setAttributeName("geom")// .setIndexType(IndexType.QUADTREE)// .setMetadata(metadata)// .call(); IndexInfo indexInfo = indexdb.getIndexInfo(worldPointsLayer.getName(), "geom").get(); assertEquals(indexInfo, index.info()); assertEquals(worldPointsLayer.getName(), indexInfo.getTreeName()); assertEquals("geom", indexInfo.getAttributeName()); assertEquals(IndexType.QUADTREE, indexInfo.getIndexType()); assertEquals(2, indexInfo.getMetadata().size()); assertTrue(indexInfo.getMetadata().containsKey(IndexInfo.MD_QUAD_MAX_BOUNDS)); assertEquals(bounds, indexInfo.getMetadata().get(IndexInfo.MD_QUAD_MAX_BOUNDS)); assertTrue(indexInfo.getMetadata().containsKey("SomeKey")); assertEquals("SomeValue", indexInfo.getMetadata().get("SomeKey")); Optional<ObjectId> indexedTreeId = indexdb.resolveIndexedTree(indexInfo, worldPointsTree.getId()); assertTrue(indexedTreeId.isPresent()); assertEquals(indexedTreeId.get(), index.indexTreeId()); IndexTestSupport.verifyIndex(geogig, index.indexTreeId(), worldPointsTree.getId()); }
@Test public void testCreateIndexMetadata() { Envelope bounds = new Envelope(-180, 180, -90, 90); Map<String, Object> metadata = new HashMap<String, Object>(); metadata.put(IndexInfo.MD_QUAD_MAX_BOUNDS, bounds); metadata.put("SomeKey", "SomeValue"); Index index = geogig.command(CreateIndexOp.class)// .setTreeName(worldPointsLayer.getName())// .setCanonicalTypeTree(worldPointsTree)// .setFeatureTypeId(worldPointsLayer.getMetadataId().get())// .setAttributeName("geom")// .setIndexType(IndexType.QUADTREE)// .setMetadata(metadata)// .call(); IndexInfo indexInfo = indexdb.getIndexInfo(worldPointsLayer.getName(), "geom").get(); assertEquals(indexInfo, index.info()); assertEquals(worldPointsLayer.getName(), indexInfo.getTreeName()); assertEquals("geom", indexInfo.getAttributeName()); assertEquals(IndexType.QUADTREE, indexInfo.getIndexType()); assertEquals(2, indexInfo.getMetadata().size()); assertTrue(indexInfo.getMetadata().containsKey(IndexInfo.MD_QUAD_MAX_BOUNDS)); assertEquals(bounds, indexInfo.getMetadata().get(IndexInfo.MD_QUAD_MAX_BOUNDS)); assertTrue(indexInfo.getMetadata().containsKey("SomeKey")); assertEquals("SomeValue", indexInfo.getMetadata().get("SomeKey")); Optional<ObjectId> indexedTreeId = indexdb.resolveIndexedTree(indexInfo, worldPointsTree.getId()); assertTrue(indexedTreeId.isPresent()); assertEquals(indexedTreeId.get(), index.indexTreeId()); IndexTestSupport.verifyIndex(geogig, index.indexTreeId(), worldPointsTree.getId()); }
@Test public void testUpdateIndexRemoveExistingAttributes() { createIndex("x"); Index index = geogig.command(UpdateIndexOp.class)// .setTreeRefSpec(worldPointsLayer.getName())// .setExtraAttributes(null)// .setOverwrite(true)// .call(); IndexInfo indexInfo = indexdb.getIndexInfo(worldPointsLayer.getName(), "geom").get(); assertEquals(indexInfo, index.info()); assertEquals(worldPointsLayer.getName(), indexInfo.getTreeName()); assertEquals("geom", indexInfo.getAttributeName()); assertEquals(IndexType.QUADTREE, indexInfo.getIndexType()); assertEquals(1, indexInfo.getMetadata().size()); assertTrue(indexInfo.getMetadata().containsKey(IndexInfo.MD_QUAD_MAX_BOUNDS)); assertEquals(new Envelope(-180, 180, -90, 90), indexInfo.getMetadata().get(IndexInfo.MD_QUAD_MAX_BOUNDS)); assertFalse(indexInfo.getMetadata().containsKey(IndexInfo.FEATURE_ATTRIBUTES_EXTRA_DATA)); ObjectId canonicalFeatureTreeId = geogig.command(ResolveTreeish.class) .setTreeish("HEAD:" + worldPointsLayer.getName()).call().get(); Optional<ObjectId> indexedTreeId = indexdb.resolveIndexedTree(indexInfo, canonicalFeatureTreeId); assertTrue(indexedTreeId.isPresent()); assertEquals(indexedTreeId.get(), index.indexTreeId()); IndexTestSupport.verifyIndex(geogig, indexedTreeId.get(), canonicalFeatureTreeId); }
@Test public void testUpdateIndexRemoveExistingAttributes() { createIndex("x"); Index index = geogig.command(UpdateIndexOp.class)// .setTreeRefSpec(worldPointsLayer.getName())// .setExtraAttributes(null)// .setOverwrite(true)// .call(); IndexInfo indexInfo = indexdb.getIndexInfo(worldPointsLayer.getName(), "geom").get(); assertEquals(indexInfo, index.info()); assertEquals(worldPointsLayer.getName(), indexInfo.getTreeName()); assertEquals("geom", indexInfo.getAttributeName()); assertEquals(IndexType.QUADTREE, indexInfo.getIndexType()); assertEquals(1, indexInfo.getMetadata().size()); assertTrue(indexInfo.getMetadata().containsKey(IndexInfo.MD_QUAD_MAX_BOUNDS)); assertEquals(new Envelope(-180, 180, -90, 90), indexInfo.getMetadata().get(IndexInfo.MD_QUAD_MAX_BOUNDS)); assertFalse(indexInfo.getMetadata().containsKey(IndexInfo.FEATURE_ATTRIBUTES_EXTRA_DATA)); ObjectId canonicalFeatureTreeId = geogig.command(ResolveTreeish.class) .setTreeish("HEAD:" + worldPointsLayer.getName()).call().get(); Optional<ObjectId> indexedTreeId = indexdb.resolveIndexedTree(indexInfo, canonicalFeatureTreeId); assertTrue(indexedTreeId.isPresent()); assertEquals(indexedTreeId.get(), index.indexTreeId()); IndexTestSupport.verifyIndex(geogig, indexedTreeId.get(), canonicalFeatureTreeId); }
@Test public void testCreateIndex() { Envelope bounds = new Envelope(-180, 180, -90, 90); Map<String, Object> metadata = new HashMap<String, Object>(); metadata.put(IndexInfo.MD_QUAD_MAX_BOUNDS, bounds); Index index = geogig.command(CreateIndexOp.class)// .setTreeName(worldPointsLayer.getName())// .setCanonicalTypeTree(worldPointsTree)// .setFeatureTypeId(worldPointsLayer.getMetadataId().get())// .setAttributeName("geom")// .setIndexType(IndexType.QUADTREE)// .setMetadata(metadata)// .call(); IndexInfo indexInfo = indexdb.getIndexInfo(worldPointsLayer.getName(), "geom").get(); assertEquals(indexInfo, index.info()); assertEquals(worldPointsLayer.getName(), indexInfo.getTreeName()); assertEquals("geom", indexInfo.getAttributeName()); assertEquals(IndexType.QUADTREE, indexInfo.getIndexType()); assertEquals(1, indexInfo.getMetadata().size()); assertTrue(indexInfo.getMetadata().containsKey(IndexInfo.MD_QUAD_MAX_BOUNDS)); assertEquals(bounds, indexInfo.getMetadata().get(IndexInfo.MD_QUAD_MAX_BOUNDS)); Optional<ObjectId> indexedTreeId = indexdb.resolveIndexedTree(indexInfo, worldPointsTree.getId()); assertTrue(indexedTreeId.isPresent()); assertEquals(indexedTreeId.get(), index.indexTreeId()); IndexTestSupport.verifyIndex(geogig, index.indexTreeId(), worldPointsTree.getId()); }
@Test public void testCreateIndex() { Envelope bounds = new Envelope(-180, 180, -90, 90); Map<String, Object> metadata = new HashMap<String, Object>(); metadata.put(IndexInfo.MD_QUAD_MAX_BOUNDS, bounds); Index index = geogig.command(CreateIndexOp.class)// .setTreeName(worldPointsLayer.getName())// .setCanonicalTypeTree(worldPointsTree)// .setFeatureTypeId(worldPointsLayer.getMetadataId().get())// .setAttributeName("geom")// .setIndexType(IndexType.QUADTREE)// .setMetadata(metadata)// .call(); IndexInfo indexInfo = indexdb.getIndexInfo(worldPointsLayer.getName(), "geom").get(); assertEquals(indexInfo, index.info()); assertEquals(worldPointsLayer.getName(), indexInfo.getTreeName()); assertEquals("geom", indexInfo.getAttributeName()); assertEquals(IndexType.QUADTREE, indexInfo.getIndexType()); assertEquals(1, indexInfo.getMetadata().size()); assertTrue(indexInfo.getMetadata().containsKey(IndexInfo.MD_QUAD_MAX_BOUNDS)); assertEquals(bounds, indexInfo.getMetadata().get(IndexInfo.MD_QUAD_MAX_BOUNDS)); Optional<ObjectId> indexedTreeId = indexdb.resolveIndexedTree(indexInfo, worldPointsTree.getId()); assertTrue(indexedTreeId.isPresent()); assertEquals(indexedTreeId.get(), index.indexTreeId()); IndexTestSupport.verifyIndex(geogig, index.indexTreeId(), worldPointsTree.getId()); }