sascha@305: package de.intevation.artifactdatabase.db; sascha@305: sascha@305: import java.sql.Connection; sascha@305: import java.sql.PreparedStatement; sascha@305: import java.sql.ResultSet; sascha@305: import java.sql.SQLException; sascha@305: sascha@305: import javax.sql.DataSource; sascha@305: sascha@305: import org.apache.log4j.Logger; sascha@305: sascha@305: public class SQLExecutor sascha@305: { sascha@305: private static Logger logger = Logger.getLogger(SQLExecutor.class); sascha@305: sascha@305: public class Instance { sascha@305: sascha@305: public Connection conn; sascha@305: public PreparedStatement stmnt; sascha@305: public ResultSet result; sascha@305: sascha@305: public Instance() { sascha@305: } sascha@305: sascha@305: public void reset() throws SQLException { sascha@305: if (result != null) { sascha@305: result.close(); sascha@305: result = null; sascha@305: } sascha@305: if (stmnt != null) { sascha@305: result = null; sascha@305: stmnt.close(); sascha@305: } sascha@305: } sascha@305: sascha@305: public PreparedStatement prepareStatement(String query) sascha@305: throws SQLException { sascha@305: return stmnt = conn.prepareStatement(query); sascha@305: } sascha@305: sascha@305: public void close() { sascha@305: if (result != null) { sascha@305: try { result.close(); } sascha@305: catch (SQLException sqle) {} sascha@305: } sascha@305: if (stmnt != null) { sascha@305: try { stmnt.close(); } sascha@305: catch (SQLException sqle) {} sascha@305: } sascha@305: if (conn != null) { sascha@305: try { conn.close(); } sascha@305: catch (SQLException sqle) {} sascha@305: } sascha@305: } sascha@305: sascha@305: public boolean runWrite() { sascha@305: DataSource dataSource = dbConnection.getDataSource(); sascha@305: try { sascha@305: conn = dataSource.getConnection(); sascha@305: try { sascha@305: conn.setAutoCommit(false); sascha@305: return doIt(); sascha@305: } sascha@305: catch (SQLException sqle) { sascha@305: conn.rollback(); sascha@305: throw sqle; sascha@305: } sascha@305: } sascha@305: catch (SQLException sqle) { sascha@305: logger.error(sqle.getLocalizedMessage(), sqle); sascha@305: } sascha@305: finally { sascha@305: close(); sascha@305: } sascha@305: return false; sascha@305: } sascha@305: sascha@305: public boolean runRead() { sascha@305: DataSource dataSource = dbConnection.getDataSource(); sascha@305: try { sascha@305: conn = dataSource.getConnection(); sascha@305: return doIt(); sascha@305: } sascha@305: catch (SQLException sqle) { sascha@305: logger.error(sqle.getLocalizedMessage(), sqle); sascha@305: } sascha@305: finally { sascha@305: close(); sascha@305: } sascha@305: return false; sascha@305: } sascha@305: sascha@305: public boolean doIt() throws SQLException { sascha@305: return true; sascha@305: } sascha@305: } // class Instance sascha@305: sascha@305: protected DBConnection dbConnection; sascha@305: sascha@305: public SQLExecutor() { sascha@305: } sascha@305: sascha@305: public SQLExecutor(DBConnection dbConnection) { sascha@305: this.dbConnection = dbConnection; sascha@305: } sascha@305: sascha@305: public DBConnection getDBConnection() { sascha@305: return dbConnection; sascha@305: } sascha@305: } sascha@305: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :