package arcade.database; import java.io.IOException; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.logging.FileHandler; import java.util.logging.Logger; /** * Establishes connection to the database * @author Natalia Carvalho * @editor Joshua Waldman */ public class DatabaseConnection { private static final String URL = "jdbc:postgresql://cgi.cs.duke.edu/nrc10"; private static final String USER = "nrc10"; private static final String PASSWORD = "aUsg5xj2f"; private Connection myConnection; private PreparedStatement myPreparedStatement; private ResultSet myResultSet; private FileHandler myDatabaseErrorLog; private Logger myLogger; /** * Constructor for DatabaseConnection that establishes connection to database */ public DatabaseConnection() { establishConnectionToDatabase(); try { myDatabaseErrorLog = new FileHandler(System.getProperty("user.dir") + "/src/arcade/resources/logs/ErrorLog.log"); myLogger = Logger.getLogger(Table.class.getName()); myLogger.addHandler(myDatabaseErrorLog); } catch (IOException e) { System.err.println("File not found"); } } private void establishConnectionToDatabase() { try { Class.forName("org.postgresql.Driver"); } catch (ClassNotFoundException e) { logError("Class not found for Database in DatabaseConnection.java"); } myConnection = null; try { myConnection = DriverManager.getConnection(URL, USER, PASSWORD); } catch (SQLException e) { logError("SQL Error connection to database in DatabaseConnection.java"); } myResultSet = null; myPreparedStatement = null; } /** * Closes Connection, ResultSet, and PreparedStatements once done with database */ public void closeConnection() { try { if (myPreparedStatement != null) { myPreparedStatement.close(); } if (myResultSet != null) { myResultSet.close(); } if (myConnection != null) { myConnection.close(); } } catch (SQLException e) { logError("Error closing connection in DatabaseConnection.java"); } } /** * Returns established connection */ public Connection getConnection() { return myConnection; } /** * Returns established ResultSet */ public ResultSet getResultSet() { return myResultSet; } /** * Returns established prepared statement */ public PreparedStatement getPreparedStatement() { return myPreparedStatement; } /** * Logs an error in the logger file * @param errorToBeLogged is error that's logged */ public void logError(String errorToBeLogged) { myLogger.info(errorToBeLogged); } }