package nebula.persistor.db; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class DbConfiguration { protected final String driverClass; protected final String url; protected final String userName; protected final String userPassword; protected Connection conn = null; public DbConfiguration(String driverClass, String url, String userName, String password) { this.driverClass = driverClass; this.url = url; this.userName = userName; this.userPassword = password; } private void openConnection(){ try { Class.forName(driverClass).newInstance(); conn = DriverManager.getConnection(this.url, this.userName, this.userPassword); //conn.setAutoCommit(false); } catch (Exception e) { throw new RuntimeException(e); } } // public static DbConfiguration getEngine(String driverClass, String url, // String userName, String password) { // String dbms = url.split(":")[1].toUpperCase(); // DbConfiguration dbEngine = null; // if ("DERBY".equals(dbms)) { // dbEngine = new DerbyConfiguration(driverClass, url, userName, password); // } else if ("ORACLE".equals(dbms)) { // dbEngine = new OracleConfiguration(driverClass, url, userName, password); // } else { // throw new UnsupportedOperationException(); // } // dbEngine.init(); // return dbEngine; // } public void shutdown() { try { if (conn != null) { conn.commit(); conn.close(); } } catch (SQLException e) { } } public Connection getConnection() { if(this.conn==null){ openConnection(); } return this.conn; } @Override protected void finalize() throws Throwable { this.shutdown(); } }