private Set<String> resolveMaterializedProperties(@NonNull IndexInfo info) { Set<String> availableAtts = IndexInfo.getMaterializedAttributeNames(info); return availableAtts; }
public static IndexInfoEntry fromIndexInfo(IndexInfo indexInfo) { String layer = indexInfo.getTreeName(); String indexedAttribute = indexInfo.getAttributeName(); IndexType indexType = indexInfo.getIndexType(); List<String> extraAttributes = Lists.newArrayList(IndexInfo.getMaterializedAttributeNames(indexInfo)); return new IndexInfoEntry(layer, indexedAttribute, indexType, extraAttributes); }
private Consumer resolveConsumer(RevTreeBuilder builder, final ProgressListener progressListener) { final Set<String> attNames = IndexInfo.getMaterializedAttributeNames(index); final boolean isMaterialized = !attNames.isEmpty(); final Consumer consumer; if (isMaterialized) { Map<String, Integer> extraDataProperties = attributeIndexMapping(attNames); consumer = new MaterializedBuilderConsumer(builder, objectDatabase(), extraDataProperties, progressListener); } else { consumer = new SimpleTreeBuilderConsumer(builder, progressListener); } return consumer; }
private Consumer resolveConsumer(RevTreeBuilder builder, final ProgressListener progressListener) { final Set<String> attNames = IndexInfo.getMaterializedAttributeNames(index); final boolean isMaterialized = !attNames.isEmpty(); final Consumer consumer; if (isMaterialized) { Map<String, Integer> extraDataProperties = attributeIndexMapping(attNames); consumer = new MaterializedBuilderConsumer(builder, objectDatabase(), extraDataProperties, progressListener); } else { consumer = new SimpleTreeBuilderConsumer(builder, progressListener); } return consumer; }
private void verifyExtraAttributes(IndexInfo index, String... extraAttributes) throws Exception { Set<String> materializedAttributeNames = IndexInfo.getMaterializedAttributeNames(index); if (extraAttributes.length > 0) { assertFalse("There should be extra attributes for the Index", materializedAttributeNames.isEmpty()); for (String attr : extraAttributes) { assertTrue("Attribute \"" + attr + "\" should be present in the Index", materializedAttributeNames.contains(attr)); } } }
private void verifyExtraAttributes(IndexInfo index, String... extraAttributes) throws Exception { Set<String> materializedAttributeNames = IndexInfo.getMaterializedAttributeNames(index); if (extraAttributes.length > 0) { assertFalse("There should be extra attributes for the Index", materializedAttributeNames.isEmpty()); for (String attr : extraAttributes) { assertTrue("Attribute \"" + attr + "\" should be present in the Index", materializedAttributeNames.contains(attr)); } } }
private Optional<IndexInfo> createOrUpdateIndexAndVerify(String layerName, String... extraAttributes) throws Exception { Optional<ObjectId> createOrUpdateIndex = dataStore.createOrUpdateIndex(layerName, extraAttributes); assertTrue("IndexInfo ObjectId should be present", createOrUpdateIndex.isPresent()); ObjectId id = createOrUpdateIndex.get(); Context resolveContext = dataStore.resolveContext(Transaction.AUTO_COMMIT); List<IndexInfo> indexInfos = resolveContext.indexDatabase().getIndexInfos(); assertNotNull("No IndexInfo objects found", indexInfos); assertEquals("Expected exactly 1 IndexInfo", 1, indexInfos.size()); IndexInfo index = indexInfos.get(0); assertEquals("Unexpected ObjectID for IndexInfo", id, index.getId()); // verify the index contains all the extra Attributes Set<String> materializedAttributeNames = IndexInfo.getMaterializedAttributeNames(index); for (String attribute : extraAttributes) { assertTrue("Index should have contained " + attribute, materializedAttributeNames.contains(attribute)); } return Optional.of(index); }
private Optional<IndexInfo> createOrUpdateIndexAndVerify(String layerName, String... extraAttributes) throws Exception { Optional<ObjectId> createOrUpdateIndex = dataStore.createOrUpdateIndex(layerName, extraAttributes); assertTrue("IndexInfo ObjectId should be present", createOrUpdateIndex.isPresent()); ObjectId id = createOrUpdateIndex.get(); Context resolveContext = dataStore.resolveContext(Transaction.AUTO_COMMIT); List<IndexInfo> indexInfos = resolveContext.indexDatabase().getIndexInfos(); assertNotNull("No IndexInfo objects found", indexInfos); assertEquals("Expected exactly 1 IndexInfo", 1, indexInfos.size()); IndexInfo index = indexInfos.get(0); assertEquals("Unexpected ObjectID for IndexInfo", id, index.getId()); // verify the index contains all the extra Attributes Set<String> materializedAttributeNames = IndexInfo.getMaterializedAttributeNames(index); for (String attribute : extraAttributes) { assertTrue("Index should have contained " + attribute, materializedAttributeNames.contains(attribute)); } return Optional.of(index); }
private void verify(IndexInfo indexInfo, List<SimpleFeature> expectedFeatures) throws IOException { String typeName = indexInfo.getTreeName(); GeogigFeatureStore source = (GeogigFeatureStore) dataStore.getFeatureSource(typeName); assertEquals(expectedFeatures.size(), source.getCount(Query.ALL)); NodeRef typeRef = source.delegate.getTypeRef(); ObjectId canonicalTreeId = typeRef.getObjectId(); Optional<ObjectId> resolveIndexedTree = repo.indexDatabase().resolveIndexedTree(indexInfo, canonicalTreeId); assertTrue(resolveIndexedTree.isPresent()); ObjectId indexTreeId = resolveIndexedTree.get(); Set<String> extraAttributes = IndexInfo.getMaterializedAttributeNames(indexInfo); String[] extraAtts = new ArrayList<>(extraAttributes).toArray(new String[0]); IndexTestSupport.verifyIndex(geogig, indexTreeId, canonicalTreeId, extraAtts); List<SimpleFeature> contents = DataUtilities.list(source.getFeatures()); Map<String, SimpleFeature> expected = Maps.uniqueIndex(expectedFeatures, (f) -> f.getID()); Map<String, SimpleFeature> actual = Maps.uniqueIndex(contents, (f) -> f.getID()); assertEquals(expected.size(), actual.size()); assertEquals(expected.keySet(), actual.keySet()); for (String fid : expected.keySet()) { SimpleFeature e = expected.get(fid); SimpleFeature a = actual.get(fid); List<Object> eatts = e.getAttributes(); List<Object> aatts = a.getAttributes(); assertEquals(eatts, aatts); } }
private void verify(IndexInfo indexInfo, List<SimpleFeature> expectedFeatures) throws IOException { String typeName = indexInfo.getTreeName(); GeogigFeatureStore source = (GeogigFeatureStore) dataStore.getFeatureSource(typeName); assertEquals(expectedFeatures.size(), source.getCount(Query.ALL)); NodeRef typeRef = source.delegate.getTypeRef(); ObjectId canonicalTreeId = typeRef.getObjectId(); Optional<ObjectId> resolveIndexedTree = repo.indexDatabase().resolveIndexedTree(indexInfo, canonicalTreeId); assertTrue(resolveIndexedTree.isPresent()); ObjectId indexTreeId = resolveIndexedTree.get(); Set<String> extraAttributes = IndexInfo.getMaterializedAttributeNames(indexInfo); String[] extraAtts = new ArrayList<>(extraAttributes).toArray(new String[0]); IndexTestSupport.verifyIndex(geogig, indexTreeId, canonicalTreeId, extraAtts); List<SimpleFeature> contents = DataUtilities.list(source.getFeatures()); Map<String, SimpleFeature> expected = Maps.uniqueIndex(expectedFeatures, (f) -> f.getID()); Map<String, SimpleFeature> actual = Maps.uniqueIndex(contents, (f) -> f.getID()); assertEquals(expected.size(), actual.size()); assertEquals(expected.keySet(), actual.keySet()); for (String fid : expected.keySet()) { SimpleFeature e = expected.get(fid); SimpleFeature a = actual.get(fid); List<Object> eatts = e.getAttributes(); List<Object> aatts = a.getAttributes(); assertEquals(eatts, aatts); } }
@When("^I create a spatial index on \"([^\"]*)\" with extra attributes \"([^\"]*)\"$") public void i_create_a_spatial_index_with_extra_Attributes(String storeName, String attributes) throws Throwable { assertNotNull(attributes); assertFalse(attributes.isEmpty()); final String[] attributeArray = attributes.split(" "); final List<String> attributeList = Arrays.asList(attributeArray); GeoGigDataStore store = datastoreMap.get(storeName); Optional<ObjectId> createOrUpdateIndex = store.createOrUpdateIndex(currentLayer.getTypeName(), attributeArray); assertTrue("Expected an Index to be created", createOrUpdateIndex.isPresent()); IndexDatabase indexDatabase = store.resolveContext(Transaction.AUTO_COMMIT).indexDatabase(); List<IndexInfo> resolveIndexInfo = indexDatabase.getIndexInfos(currentLayer.getTypeName()); assertEquals("Expected exactly 1 IndexInfo", 1, resolveIndexInfo.size()); IndexInfo info = resolveIndexInfo.get(0); assertEquals("Unexpected Index type", IndexType.QUADTREE, info.getIndexType()); assertEquals("Unexpected Index spatial attribute", "the_geom", info.getAttributeName()); assertTrue("Extra Attribute list missing expected attributes", attributeList.containsAll( IndexInfo.getMaterializedAttributeNames(info))); assertEquals("Unexpected Index Path name", currentLayer.getTypeName(), info.getTreeName()); }
@When("^I create a spatial index on \"([^\"]*)\" with extra attributes \"([^\"]*)\"$") public void i_create_a_spatial_index_with_extra_Attributes(String storeName, String attributes) throws Throwable { assertNotNull(attributes); assertFalse(attributes.isEmpty()); final String[] attributeArray = attributes.split(" "); final List<String> attributeList = Arrays.asList(attributeArray); GeoGigDataStore store = datastoreMap.get(storeName); Optional<ObjectId> createOrUpdateIndex = store.createOrUpdateIndex(currentLayer.getTypeName(), attributeArray); assertTrue("Expected an Index to be created", createOrUpdateIndex.isPresent()); IndexDatabase indexDatabase = store.resolveContext(Transaction.AUTO_COMMIT).indexDatabase(); List<IndexInfo> resolveIndexInfo = indexDatabase.getIndexInfos(currentLayer.getTypeName()); assertEquals("Expected exactly 1 IndexInfo", 1, resolveIndexInfo.size()); IndexInfo info = resolveIndexInfo.get(0); assertEquals("Unexpected Index type", IndexType.QUADTREE, info.getIndexType()); assertEquals("Unexpected Index spatial attribute", "the_geom", info.getAttributeName()); assertTrue("Extra Attribute list missing expected attributes", attributeList.containsAll( IndexInfo.getMaterializedAttributeNames(info))); assertEquals("Unexpected Index Path name", currentLayer.getTypeName(), info.getTreeName()); }
.getMaterializedAttributeNames(createOrUpdateIndex); assertTrue("There should be no extra attributes for the Index", materializedAttributeNames.isEmpty());
.getMaterializedAttributeNames(createOrUpdateIndex); assertTrue("There should be no extra attributes for the Index", materializedAttributeNames.isEmpty());