package proj.zoie.dataprovider.jdbc; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import proj.zoie.dataprovider.jdbc.JDBCConnectionFactory; public class OracleJDBCConnectionFactory implements JDBCConnectionFactory { private static final String ORACLE_JDBC_URL_PREFIX = "jdbc:oracle:thin:@"; private static final String ORACLE_DRIVER_NAME = "oracle.jdbc.OracleDriver"; private final String _username; private final String _password; private final String _url; private Connection _conn = null; public OracleJDBCConnectionFactory(String hostname, int port, String SID, String username, String password) { this(hostname + ":" + port + ":" + SID, username, password); } public OracleJDBCConnectionFactory(String database, String username, String password) { _url = ORACLE_JDBC_URL_PREFIX + database; _username = username; _password = password; } public synchronized Connection getConnection() throws SQLException { if (_conn == null) { try { Class.forName(ORACLE_DRIVER_NAME); } catch (Exception e) { throw new SQLException("unable to load driver: " + e.getMessage()); } _conn = DriverManager.getConnection(_url, _username, _password); } return _conn; } public synchronized void showndown() throws SQLException { if (_conn != null) { _conn.close(); } } }