package binky.reportrunner.ui.actions.datasource;
import org.apache.commons.lang.StringUtils;
import org.apache.log4j.Logger;
import binky.reportrunner.data.RunnerDataSource;
import binky.reportrunner.service.DatasourceService;
import binky.reportrunner.service.misc.JDBCDriverDefinition;
import binky.reportrunner.ui.actions.base.StandardRunnerAction;
public class DriverDetail extends StandardRunnerAction {
/**
*
*/
private static final long serialVersionUID = 6471170147490083690L;
private DatasourceService dataSourceService;
private String jdbcUrl;
private String jdbcClass;
private String jdbcDriver;
private RunnerDataSource dataSource;
private static final Logger logger = Logger.getLogger(DriverDetail.class);
@Override
public String execute() throws Exception {
if (dataSource!=null) {
logger.debug("datasource name: " + dataSource.getDataSourceName());
} else {
logger.debug("dataSource is null");
super.addActionError("somehow the datasource object is null - this shouldn't happpen");
return INPUT;
}
JDBCDriverDefinition def= dataSourceService.getJDBCDriverDefinitions().getDefinitions().get(jdbcDriver);
this.jdbcClass=def.getDriverName();
this.jdbcUrl=def.getUrl();
RunnerDataSource ds =StringUtils.isNotBlank(dataSource.getDataSourceName())? dataSourceService.getDataSource(dataSource.getDataSourceName()):null;
if (ds!=null) {
logger.debug("got an existing datasource here - what to do: " + ds.getDataSourceName() );
String currentDriver="";
//hacky as hacky mchackerson of the clan mchackerson
for (JDBCDriverDefinition d : dataSourceService.getJDBCDriverDefinitions().getDefinitions().values()) {
if (d.getDriverName().equalsIgnoreCase(ds.getJdbcClass())) {
currentDriver=d.getLabel();
}
}
logger.debug("current driver: " + ds.getJdbcClass() + " selected driver " + this.jdbcDriver);
if (currentDriver.equals(this.jdbcDriver)) {
this.jdbcClass=ds.getJdbcClass();
this.jdbcUrl=ds.getJdbcUrl();
}
}
return SUCCESS;
}
public String getJdbcUrl() {
return jdbcUrl;
}
public String getJdbcClass() {
return jdbcClass;
}
public void setDataSourceService(DatasourceService dataSourceService) {
this.dataSourceService = dataSourceService;
}
public void setJdbcDriver(String jdbcDriver) {
this.jdbcDriver = jdbcDriver;
}
public void setDataSource(RunnerDataSource dataSource) {
this.dataSource = dataSource;
}
public DatasourceService getDataSourceService() {
return dataSourceService;
}
public String getJdbcDriver() {
return jdbcDriver;
}
public RunnerDataSource getDataSource() {
return dataSource;
}
public void setJdbcUrl(String jdbcUrl) {
this.jdbcUrl = jdbcUrl;
}
public void setJdbcClass(String jdbcClass) {
this.jdbcClass = jdbcClass;
}
}