schema = AbstractMappedSchemaBuilder.build( configURL.toString(), config, dialect, this.workspace ); } catch ( Exception t ) { throw new ResourceInitException( t.getMessage(), t );
protected List<TableJoin> buildJoinTable( TableName from, org.deegree.feature.persistence.sql.jaxb.Join join ) { if ( join != null ) { TableName target = createFromQualifiedName( join.getTable() ); if ( join.getFromColumns().size() != join.getToColumns().size() ) { throw new UnsupportedOperationException( "Joins must use same number of from and to columns." ); } if ( join.getFromColumns().isEmpty() ) { throw new UnsupportedOperationException( "Joins must use at least a single column." ); } boolean isNumbered = join.isNumbered() == null ? false : join.isNumbered(); Map<SQLIdentifier, IDGenerator> keyColumnToGenerator = new HashMap<SQLIdentifier, IDGenerator>(); for ( AutoKeyColumn keyColumn : join.getAutoKeyColumn() ) { SQLIdentifier columnName = new SQLIdentifier( keyColumn.getName() ); IDGenerator idGenerator = buildGenerator( keyColumn.getAbstractIDGenerator() ); keyColumnToGenerator.put( columnName, idGenerator ); } if ( keyColumnToGenerator.isEmpty() ) { // defaulting keyColumnToGenerator.put( new SQLIdentifier( "id" ), new AutoIDGenerator() ); } TableJoin tj = new TableJoin( from, target, join.getFromColumns(), join.getToColumns(), join.getOrderColumns(), isNumbered, keyColumnToGenerator ); return Collections.singletonList( tj ); } return null; }
public static MappedAppSchema build( String configURL, SQLFeatureStoreJAXB config, SQLDialect dialect, Workspace workspace ) throws SQLException, FeatureStoreException { boolean deleteCascadingByDB = true; if ( config.getJoinTableDeletePropagation() != null ) { deleteCascadingByDB = config.getJoinTableDeletePropagation().equals( "db" ); } AbstractMappedSchemaBuilder builder = null; if ( config.getGMLSchema() == null || config.getGMLSchema().isEmpty() ) { LOG.debug( "Table-driven mode configuration" ); if ( config.getFeatureType() != null && !config.getFeatureType().isEmpty() ) { builder = new MappedSchemaBuilderTableOld( config.getJDBCConnId().getValue(), config.getFeatureType(), dialect, deleteCascadingByDB, workspace ); } else { builder = new MappedSchemaBuilderTable( config.getJDBCConnId().getValue(), config.getFeatureTypeMapping(), dialect, deleteCascadingByDB, workspace ); } } else { LOG.debug( "Schema-driven mode configuration" ); List<String> gmlSchemas = config.getGMLSchema(); StorageCRS storageCRS = config.getStorageCRS(); List<NamespaceHint> nsHints = config.getNamespaceHint(); BLOBMapping blobConf = config.getBLOBMapping(); List<FeatureTypeMappingJAXB> ftMappingConfs = config.getFeatureTypeMapping(); builder = new MappedSchemaBuilderGML( configURL, gmlSchemas, storageCRS, nsHints, blobConf, ftMappingConfs, deleteCascadingByDB ); } return builder.getMappedSchema(); }