/** * */ package org.jhuapl.edu.sages.etl; import java.io.File; import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; import org.apache.log4j.Logger; /** * Creates connections to databases. * Fully supported dbms: Postgresql (includes transactions and savepoints) * In progress supported dbms: MS Access (transactions and savepoints not implemented) * * @author POKUAM1 * @created Oct 28, 2011 */ public class ConnectionFactory { private static final Logger log = Logger.getLogger(ConnectionFactory.class); /** * Constructor for {@link ConnectionFactory} */ public ConnectionFactory(){ } /** * Establishes database connection to the target database * @param dbmsType - String with value postgresql (not fully implemented are: msaccess, mysql) * @param serverName * @param dbName * @param user * @param password * @param portNumber - int value * @return Connection * @throws SQLException */ public static Connection createConnection(String dbmsType, String serverName, String dbName, String user, String password, int portNumber) throws SQLException{ Connection con = null; Properties connectionProps = new Properties(); connectionProps.put("user", user); connectionProps.put("password", password); if (ETLProperties.dbid_mysql.equals(dbmsType)) { try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { throw new SQLException("Driver could not be loaded"); } con = DriverManager.getConnection("jdbc:" + dbmsType + "://" + serverName + ":" + portNumber + "/", connectionProps); } else if (ETLProperties.dbid_msaccess.equals(dbmsType)) { //http://www.javaworld.com/javaworld/javaqa/2000-09/03-qa-0922-access.html // jdbc:odbc:<NAME> try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); } catch (ClassNotFoundException e) { e.printStackTrace(); } //http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=2691&lngWId=2 //String url = "C:\\Documents and Settings\\POKUAM1\\My Documents\\mdbtestdjib.mdb"; String url = "C:\\Documents and Settings\\POKUAM1\\My Documents\\testdjib.accdb"; File file = new File(url); String fileTypes = "*.mdb"; //String jdbcUrl = "jdbc:odbc:Driver={Microsoft Access Driver (" + fileTypes + ")};DBQ=" + file.getAbsolutePath(); String jdbcUrl = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" + file.getAbsolutePath(); log.info("jdbcurl: " + jdbcUrl); con = DriverManager.getConnection(jdbcUrl); } else if (ETLProperties.dbid_postgresql.equals(dbmsType)) { con = DriverManager.getConnection("jdbc:" + dbmsType + "://" + serverName + ":" + portNumber + "/" + dbName, connectionProps); } log.info("Connected to database"); con.setAutoCommit(false); log.info("Auto Commit is OFF"); return con; } }