package org.genedb.db.loading.auxiliary;
import org.apache.commons.dbcp.BasicDataSource;
import org.apache.log4j.Logger;
/**
*
* Because chado_load can inject database configurations from the command line, this class makes sure that these properties are used instead of the ones in the property file,
* when these properties are present.
*
* @author gv1
*
*/
public class SystemPropertyOverridingDataSource extends BasicDataSource {
private static final Logger logger = Logger.getLogger(SystemPropertyOverridingDataSource.class);
@Override public void setUrl(String url) {
String dbhost = System.getProperty("dbhost");
String dbport = System.getProperty("dbport");
String dbname = System.getProperty("dbname");
if (dbhost != null && dbname != null) {
logger.warn("Overriding url with system property");
if (dbport != null) {
url = String.format("jdbc:postgresql://%s:%s/%s", dbhost, dbport, dbname);
} else {
url = String.format("jdbc:postgresql://%s/%s", dbhost, dbname);
}
}
this.url = url;
}
@Override public void setUsername(String username) {
if (System.getProperty("dbuser") != null) {
logger.warn("Overriding user with system property");
username = System.getProperty("dbuser");
}
this.username = username;
}
@Override public void setPassword(String password) {
if (System.getProperty("dbpassword") != null) {
logger.warn("Overriding password with system property");
password = System.getProperty("dbpassword");
}
this.password = password;
}
}