public IDatasourceSummary serializeJoins( MultiTableDatasourceDTO dto, IDatabaseConnection connection )
throws DatasourceServiceException {
try {
ModelerService modelerService = new ModelerService();
modelerService.initKettle();
DSWDatasourceServiceImpl datasourceService = new DSWDatasourceServiceImpl();
GeoContext geoContext = datasourceService.getGeoContext();
DatabaseMeta databaseMeta = this.getDatabaseMeta( connection );
MultiTableModelerSource multiTable =
new MultiTableModelerSource( databaseMeta, dto.getSchemaModel(), dto.getDatasourceName(),
dto.getSelectedTables(), geoContext );
Domain domain = multiTable.generateDomain( dto.isDoOlap() );
String modelState = serializeModelState( dto );
for ( LogicalModel lm : domain.getLogicalModels() ) {
lm.setProperty( "datasourceModel", modelState );
lm.setProperty( "DatasourceType", "MULTI-TABLE-DS" );
applySecurity( lm );
}
modelerService.serializeModels( domain, dto.getDatasourceName(), dto.isDoOlap() );
QueryDatasourceSummary summary = new QueryDatasourceSummary();
summary.setDomain( domain );
return summary;
} catch ( Exception e ) {
logger.error( "Error serializing joins", e );
throw new DatasourceServiceException( e );
}
}