TypeMapping duplicate = new TypeMapping(); duplicate.setMappingName(dtoMappingName.getMappingName()); duplicate.setSourceDataStore(dtoMappingName.getSourceDataStore()); duplicate.setSourceTypeName(dtoMappingName.getSourceTypeName()); duplicate.setTargetElementName(dtoMappingName.getTargetElementName()); mappings.add(dtoMappingName); mappings.add(duplicate); threwException = false; duplicate = new TypeMapping(); duplicate.setMappingName(dtoNoMappingName.getTargetElementName()); duplicate.setSourceDataStore(dtoNoMappingName.getSourceDataStore()); duplicate.setSourceTypeName(dtoNoMappingName.getSourceTypeName()); duplicate.setTargetElementName(dtoNoMappingName.getTargetElementName()); mappings.clear(); mappings.add(duplicate); threwException = false; duplicate = new TypeMapping(); duplicate.setSourceDataStore(dtoNoMappingName.getSourceDataStore()); duplicate.setSourceTypeName(dtoNoMappingName.getSourceTypeName()); duplicate.setTargetElementName(dtoNoMappingName.getTargetElementName()); mappings.clear(); mappings.add(duplicate);
getAttributeMappings( target, dto.getAttributeMappings(), dto.getItemXpath(), crs, isDatabaseBackend); indexFeatureSource, target, dto.getDefaultGeometryXPath(), attMappings, namespaces, dto.getItemXpath(), dto.isXmlDataStore(), dto.isDenormalised()); String mappingName = dto.getMappingName(); if (mappingName != null) { mapping.setName(Types.degloseName(mappingName, namespaces)); LOGGER.warning( "Error creating app-schema data store for '" + (dto.getMappingName() != null ? dto.getMappingName() : dto.getTargetElementName()) + "', caused by: " + e.getMessage());
TypeMapping dto, Map<String, DataAccess<FeatureType, Feature>> sourceDataStores) throws IOException { String dsId = dto.getIndexDataStore(); String typeName = dto.getIndexTypeName();
private AttributeDescriptor getTargetDescriptor(TypeMapping dto, CoordinateReferenceSystem crs) throws IOException { String prefixedTargetName = dto.getTargetElementName(); Name targetNodeName = Types.degloseName(prefixedTargetName, namespaces); AttributeDescriptor targetDescriptor = typeRegistry.getDescriptor(targetNodeName, crs); if (targetDescriptor == null) { throw new NoSuchElementException( "descriptor " + targetNodeName + " not found in parsed schema"); } // check if default geometry was set in FeatureTypeMapping // NOTE: if a default geometry is already set, it will be overridden String defaultGeomXPath = dto.getDefaultGeometryXPath(); if (defaultGeomXPath != null && !defaultGeomXPath.isEmpty()) { targetDescriptor = retypeAddingDefaultGeometry(targetDescriptor, defaultGeomXPath); } return targetDescriptor; }
private FeatureSource<FeatureType, Feature> getFeatureSource( TypeMapping dto, Map<String, DataAccess<FeatureType, Feature>> sourceDataStores) throws IOException { String dsId = dto.getSourceDataStore(); String typeName = dto.getSourceTypeName(); DataAccess<FeatureType, Feature> sourceDataStore = sourceDataStores.get(dsId); if (sourceDataStore == null) { throw new DataSourceException( "datastore " + dsId + " not found for type mapping " + dto); } AppSchemaDataAccessConfigurator.LOGGER.fine( "asking datastore " + sourceDataStore + " for source type " + typeName); Name name = Types.degloseName(typeName, namespaces); FeatureSource fSource = sourceDataStore.getFeatureSource(name); if (fSource instanceof XmlFeatureSource) { ((XmlFeatureSource) fSource).setNamespaces(namespaces); } AppSchemaDataAccessConfigurator.LOGGER.fine("found feature source for " + typeName); return fSource; }
List attMappings = getAttributeMappings(target, dto.getAttributeMappings(), dto .getItemXpath(), crs); namespaces, dto.getItemXpath(), dto.isXmlDataStore()); String mappingName = dto.getMappingName(); if (mappingName != null) { mapping.setName(Types.degloseName(mappingName, namespaces)); } catch (Exception e) { LOGGER.warning("Error creating app-schema data store for '" + (dto.getMappingName() != null ? dto.getMappingName() : dto .getTargetElementName()) + "', caused by: " + e.getMessage()); throw new IOException(e);
private String getTypeName(TypeMapping mapping, SourceDataStore dataStoreConfig) { if (dataStoreConfig.getId().equals(mapping.getIndexDataStore())) { return mapping.getIndexTypeName(); } return mapping.getSourceTypeName(); }
dtoMappingName = new TypeMapping(); dtoMappingName.setMappingName(MAPPING_NAME); dtoMappingName.setSourceDataStore(SOURCE_ID); dtoMappingName.setSourceTypeName(MAPPING_FILE); dtoMappingName.setTargetElementName(TARGET_ELEMENT_NAME); dtoNoMappingName = new TypeMapping(); dtoNoMappingName.setSourceDataStore(SOURCE_ID); dtoNoMappingName.setSourceTypeName(MAPPING_FILE); dtoNoMappingName.setTargetElementName(TARGET_ELEMENT_NAME);
@Override @SuppressWarnings("unchecked") public DataAccess<? extends FeatureType, ? extends Feature> buildDataStore( SourceDataStore dataStoreConfig, AppSchemaDataAccessDTO appSchemaConfig) { if (!(dataStoreConfig instanceof ComplexDataStoreConfig)) { // not an Apache Solr feature type mapping return null; } ComplexDataStoreConfig complexDataStoreConfig = (ComplexDataStoreConfig) dataStoreConfig; IndexesConfig indexesConfig = complexDataStoreConfig.getIndexesConfig(); // specify the index attributes we are interested in based on the App-Schema mappings file for (TypeMapping mapping : (Set<TypeMapping>) appSchemaConfig.getTypeMappings()) { // get all the attributes names used in the feature type mapping Set<String> attributes = extractAttributesNames(mapping); indexesConfig.addAttributes(mapping.getSourceTypeName(), attributes); if (isDenormalizedIndexMode(mapping, dataStoreConfig)) { // set as denormalizedIndexMode indexesConfig .getIndexConfig(getTypeName(mapping, dataStoreConfig)) .setDenormalizedIndexMode(true); } } // build the Apache Solr store return new SolrDataStore( complexDataStoreConfig.getUrl(), new SingleLayerMapper(), indexesConfig); }
private Set<String> parseSourceModeAttributes(TypeMapping mapping) { Set<String> attributes = new HashSet<>(); ((List<AttributeMapping>) mapping.getAttributeMappings()) .forEach( attributeMapping -> {
private boolean isDenormalizedIndexMode(TypeMapping mapping, SourceDataStore dataStoreConfig) { return dataStoreConfig.getId().equals(mapping.getIndexDataStore()); } }
private AttributeDescriptor getTargetDescriptor(TypeMapping dto, CoordinateReferenceSystem crs) throws IOException { String prefixedTargetName = dto.getTargetElementName(); Name targetNodeName = Types.degloseName(prefixedTargetName, namespaces); AttributeDescriptor targetDescriptor = typeRegistry.getDescriptor(targetNodeName, null, null, crs); if (targetDescriptor == null) { throw new NoSuchElementException("descriptor " + targetNodeName + " not found in parsed schema"); } return targetDescriptor; }
private FeatureSource<FeatureType, Feature> getFeatureSource(TypeMapping dto, Map<String, DataAccess<FeatureType, Feature>> sourceDataStores) throws IOException { String dsId = dto.getSourceDataStore(); String typeName = dto.getSourceTypeName(); DataAccess<FeatureType, Feature> sourceDataStore = sourceDataStores.get(dsId); if (sourceDataStore == null) { throw new DataSourceException("datastore " + dsId + " not found for type mapping " + dto); } AppSchemaDataAccessConfigurator.LOGGER.fine("asking datastore " + sourceDataStore + " for source type " + typeName); Name name = Types.degloseName(typeName, namespaces); FeatureSource fSource = sourceDataStore.getFeatureSource(name); if (fSource instanceof XmlFeatureSource) { ((XmlFeatureSource) fSource).setNamespaces(namespaces); } AppSchemaDataAccessConfigurator.LOGGER.fine("found feature source for " + typeName); return fSource; }
dtoMappingName = new TypeMapping(); dtoMappingName.setMappingName(MAPPING_NAME); dtoMappingName.setSourceDataStore(SOURCE_ID); dtoMappingName.setSourceTypeName(MAPPING_FILE); dtoMappingName.setTargetElementName(TARGET_ELEMENT_NAME); dtoNoMappingName = new TypeMapping(); dtoNoMappingName.setSourceDataStore(SOURCE_ID); dtoNoMappingName.setSourceTypeName(MAPPING_FILE); dtoNoMappingName.setTargetElementName(TARGET_ELEMENT_NAME);
private Set<String> extractAttributesNames(TypeMapping typeMapping) { Set<String> attributes = new HashSet<>(); List<AttributeMapping> attributesMappings = typeMapping.getAttributeMappings(); for (AttributeMapping attributeMapping : attributesMappings) {
TypeMapping duplicate = new TypeMapping(); duplicate.setMappingName(dtoMappingName.getTargetElementName()); duplicate.setSourceDataStore(dtoMappingName.getSourceDataStore()); duplicate.setSourceTypeName(dtoMappingName.getSourceTypeName()); duplicate.setTargetElementName(dtoMappingName.getTargetElementName()); mappings.add(dtoMappingName); mappings.add(duplicate);
TypeMapping duplicate = new TypeMapping(); duplicate.setMappingName(dtoMappingName.getMappingName()); duplicate.setSourceDataStore(dtoMappingName.getSourceDataStore()); duplicate.setSourceTypeName(dtoMappingName.getSourceTypeName()); duplicate.setTargetElementName(dtoMappingName.getTargetElementName()); mappings.add(dtoMappingName); mappings.add(duplicate); duplicate = new TypeMapping(); duplicate.setMappingName(dtoNoMappingName.getTargetElementName()); duplicate.setSourceDataStore(dtoNoMappingName.getSourceDataStore()); duplicate.setSourceTypeName(dtoNoMappingName.getSourceTypeName()); duplicate.setTargetElementName(dtoNoMappingName.getTargetElementName()); mappings.clear(); mappings.add(duplicate); duplicate = new TypeMapping(); duplicate.setSourceDataStore(dtoNoMappingName.getSourceDataStore()); duplicate.setSourceTypeName(dtoNoMappingName.getSourceTypeName()); duplicate.setTargetElementName(dtoNoMappingName.getTargetElementName()); mappings.clear(); mappings.add(duplicate);
TypeMapping duplicate = new TypeMapping(); duplicate.setMappingName(dtoMappingName.getTargetElementName()); duplicate.setSourceDataStore(dtoMappingName.getSourceDataStore()); duplicate.setSourceTypeName(dtoMappingName.getSourceTypeName()); duplicate.setTargetElementName(dtoMappingName.getTargetElementName()); mappings.add(dtoMappingName); mappings.add(duplicate);