package somiba.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public abstract class AbstractDatabaseDao {

    //private String jndiName = "java:comp/env/jdbc/somiba";	
    private static String driverClassName = "com.mysql.jdbc.Driver";
    private static String url = "jdbc:mysql://localhost:3306/somiba";

    static {
    	try {
    		Class.forName(driverClassName);
    	} catch (ClassNotFoundException ex) {
    		System.out.println(ex);
    	}
    }

    protected Connection getConnection() throws DataAccessException {
    	Connection con = null;
    	try {
    		con = DriverManager.getConnection(url, "chwalter", "skeeve");
    	} catch (SQLException ex) {
    		throw new DataAccessException(ex.getMessage());
    	}
        return con;
    }

    protected String getLastInsertIdSql() {
        return "SELECT @@IDENTITY";
    }

    protected Long getLastInsertId(Connection connection)
            throws DataAccessException {
        try {
            Statement stmt = connection.createStatement();
            try {
                ResultSet rs = stmt.executeQuery(this.getLastInsertIdSql());
                try {
                    if (rs.next()) {
                        return rs.getLong(1);
                    } else {
                        throw new DataAccessException(
                                "Last insert key id is missing");
                    }
                } finally {
                    rs.close();
                }
            } finally {
                stmt.close();
            }
        } catch (SQLException e) {
            throw new DataAccessException("Failed to get last insert id", e);
        }
    }
}
