* @return the data source
*
* @throws GeoEngineException the geo engine exception
*/
public static DataSource getDataSource(SourceBean confSB) throws GeoEngineException {
DataSource dataSource = null;
SourceBean datasourceSB = (SourceBean)confSB.getAttribute(GeoEngineConstants.DATASOURCE_TAG);
if(datasourceSB == null) {
logger.warn("Cannot find datasource configuration settings: tag name " + GeoEngineConstants.DATASOURCE_TAG);
logger.info("Datasource configuration settings must be injected at execution time");
return null;
}
dataSource = new DataSource();
String type = (String)datasourceSB.getAttribute(GeoEngineConstants.DATASET_TYPE_ATTRIBUTE);
if("connection".equalsIgnoreCase(type)) {
dataSource.setJndi( (String)datasourceSB.getAttribute(GeoEngineConstants.DATASET_NAME_ATTRIBUTE) );
dataSource.setDriver( (String)datasourceSB.getAttribute(GeoEngineConstants.DATASET_DRIVER_ATTRIBUTER) );
dataSource.setPwd( (String)datasourceSB.getAttribute(GeoEngineConstants.DATASET_PWD_ATTRIBUTE) );
dataSource.setUser( (String)datasourceSB.getAttribute(GeoEngineConstants.DATASET_USER_ATTRIBUTE) );
dataSource.setUrlConnection( (String)datasourceSB.getAttribute(GeoEngineConstants.DATASET_URL_ATTRIBUTE) );
}
logger.debug("Datasource jndi name: " + dataSource.getJndi());
logger.debug("Datasource driver: " + dataSource.getDriver());
logger.debug("Datasource password: " + dataSource.getPwd());
logger.debug("Datasource user: " + dataSource.getUser());
logger.debug("Datasource url: " + dataSource.getUrlConnection());
if(dataSource.getJndi() != null) {
logger.info("Datasource is of type jndi connection. Referenced jndi resource is " + dataSource.getJndi());
} else if (dataSource.getDriver() == null || dataSource.getUrlConnection() == null){
logger.error("Missing driver name or url in datasource configuration settings");
throw new GeoEngineException("Missing driver name or url in datasource configuration settings");
}
return dataSource;