view artifact-database/src/main/java/org/dive4elements/artifactdatabase/db/SQLExecutor.java @ 473:d0ac790a6c89 dive4elements-move

Moved directories to org.dive4elements
author Sascha L. Teichmann <teichmann@intevation.de>
date Thu, 25 Apr 2013 10:57:18 +0200
parents artifact-database/src/main/java/de/intevation/artifactdatabase/db/SQLExecutor.java@f33401ea2a6c
children 415df0fc4fa1
line wrap: on
line source
package de.intevation.artifactdatabase.db;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.apache.log4j.Logger;

public class SQLExecutor
{
    private static Logger logger = Logger.getLogger(SQLExecutor.class);

    public class Instance {

        public Connection        conn;
        public PreparedStatement stmnt;
        public ResultSet         result;

        public Instance() {
        }

        public void reset() throws SQLException {
            if (result != null) {
                result.close();
                result = null;
            }
            if (stmnt != null) {
                result = null;
                stmnt.close();
            }
        }

        public PreparedStatement prepareStatement(String query)
        throws SQLException {
            return stmnt = conn.prepareStatement(query);
        }

        public void close() {
            if (result != null) {
                try { result.close(); }
                catch (SQLException sqle) {}
            }
            if (stmnt != null) {
                try { stmnt.close(); }
                catch (SQLException sqle) {}
            }
            if (conn != null) {
                try { conn.close(); }
                catch (SQLException sqle) {}
            }
        }

        public boolean runWrite() {
            DataSource dataSource = dbConnection.getDataSource();
            try {
                conn = dataSource.getConnection();
                try {
                    conn.setAutoCommit(false);
                    return doIt();
                }
                catch (SQLException sqle) {
                    conn.rollback();
                    throw sqle;
                }
            }
            catch (SQLException sqle) {
                logger.error(sqle.getLocalizedMessage(), sqle);
            }
            finally {
                close();
            }
            return false;
        }

        public boolean runRead() {
            DataSource dataSource = dbConnection.getDataSource();
            try {
                conn = dataSource.getConnection();
                return doIt();
            }
            catch (SQLException sqle) {
                logger.error(sqle.getLocalizedMessage(), sqle);
            }
            finally {
                close();
            }
            return false;
        }

        public boolean doIt() throws SQLException {
            return true;
        }
    } // class Instance

    protected DBConnection dbConnection;

    public SQLExecutor() {
    }

    public SQLExecutor(DBConnection dbConnection) {
        this.dbConnection = dbConnection;
    }

    public DBConnection getDBConnection() {
        return dbConnection;
    }
}
// vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :

http://dive4elements.wald.intevation.org