sascha@305: package de.intevation.artifactdatabase.db; sascha@305: sascha@305: import java.sql.SQLException; sascha@305: sascha@305: import javax.sql.DataSource; sascha@305: sascha@305: import java.io.File; sascha@305: sascha@305: import org.apache.commons.dbcp.BasicDataSource; sascha@305: sascha@305: import de.intevation.artifacts.common.utils.Config; sascha@305: sascha@305: public class DBConnection sascha@305: { sascha@305: public static final String DEFAULT_DRIVER = "org.h2.Driver"; sascha@305: public static final String DEFAULT_USER = ""; sascha@305: public static final String DEFAULT_PASSWORD = ""; sascha@305: public static final String DEFAULT_DATABASE_FILE = "artifacts.db"; sascha@305: public static final String DEFAULT_URL = getDefaultURL(); sascha@305: sascha@305: public static final String getDefaultURL() { sascha@305: File configDir = Config.getConfigDirectory(); sascha@305: File databaseFile = new File(configDir, DEFAULT_DATABASE_FILE); sascha@305: return "jdbc:h2:" + databaseFile; sascha@305: } sascha@305: sascha@305: protected BasicDataSource dataSource; sascha@305: sascha@305: protected String driver; sascha@305: protected String url; sascha@305: protected String user; sascha@305: protected String password; sascha@305: sascha@305: public DBConnection() { sascha@305: } sascha@305: sascha@305: public DBConnection( sascha@305: String driver, sascha@305: String url, sascha@305: String user, sascha@305: String password sascha@305: ) { sascha@305: this.driver = driver; sascha@305: this.url = url; sascha@305: this.user = user; sascha@305: this.password = password; sascha@305: } sascha@305: sascha@305: public String getUser() { sascha@305: return user; sascha@305: } sascha@305: sascha@305: public void setUser(String user) { sascha@305: this.user = user; sascha@305: } sascha@305: sascha@305: public String getPassword() { sascha@305: return password; sascha@305: } sascha@305: sascha@305: public void setPassword(String password) { sascha@305: this.password = password; sascha@305: } sascha@305: sascha@305: public String getDriver() { sascha@305: return driver; sascha@305: } sascha@305: sascha@305: public void setDriver(String driver) { sascha@305: this.driver = driver; sascha@305: } sascha@305: sascha@305: public String getUrl() { sascha@305: return url; sascha@305: } sascha@305: sascha@305: public void setUrl(String url) { sascha@305: this.url = url; sascha@305: } sascha@305: sascha@305: protected void addShutdownHook() { sascha@305: Runtime.getRuntime().addShutdownHook(new Thread() { sascha@305: @Override sascha@305: public void run() { sascha@305: if (dataSource != null) { sascha@305: try { sascha@305: dataSource.close(); sascha@305: } sascha@305: catch (SQLException sqle) { sascha@305: } sascha@305: dataSource = null; sascha@305: } sascha@305: } sascha@305: }); sascha@305: } sascha@305: sascha@305: public synchronized DataSource getDataSource() { sascha@305: if (dataSource == null) { sascha@305: dataSource = new BasicDataSource(); sascha@305: sascha@305: dataSource.setDriverClassName(driver); sascha@305: dataSource.setUsername(user); sascha@305: dataSource.setPassword(password); sascha@305: dataSource.setUrl(url); sascha@305: addShutdownHook(); sascha@305: } sascha@305: return dataSource; sascha@305: } sascha@305: } sascha@305: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :