teichmann@475: package org.dive4elements.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: tom@570: import org.apache.logging.log4j.Logger; tom@570: import org.apache.logging.log4j.LogManager; sascha@305: sascha@305: public class SQLExecutor sascha@305: { tom@570: private static Logger logger = LogManager.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: teichmann@541: public boolean runWriteNoRollback() { andre@544: DataSource dataSource = dbConnection.getDataSource(); teichmann@541: try { andre@544: conn = dataSource.getConnection(); teichmann@541: try { andre@544: conn.setAutoCommit(false); andre@544: return doIt(); teichmann@541: } teichmann@541: catch (SQLException sqle) { andre@544: throw sqle; teichmann@541: } andre@544: } andre@544: catch (SQLException sqle) { andre@544: logger.error(sqle.getLocalizedMessage(), sqle); teichmann@541: } teichmann@541: finally { andre@544: close(); teichmann@541: } andre@544: return false; teichmann@541: } teichmann@541: sascha@305: public boolean runWrite() { andre@544: DataSource dataSource = dbConnection.getDataSource(); sascha@305: try { andre@544: conn = dataSource.getConnection(); sascha@305: try { andre@544: conn.setAutoCommit(false); andre@544: return doIt(); teichmann@540: } teichmann@540: catch (SQLException sqle) { andre@544: conn.rollback(); andre@544: throw sqle; teichmann@540: } andre@544: } andre@544: catch (SQLException sqle) { andre@544: logger.error(sqle.getLocalizedMessage(), sqle); teichmann@540: } teichmann@540: finally { andre@544: close(); teichmann@540: } andre@544: return false; teichmann@540: } teichmann@540: teichmann@540: public boolean runRead() { andre@544: DataSource dataSource = dbConnection.getDataSource(); teichmann@540: try { andre@544: conn = dataSource.getConnection(); andre@544: return doIt(); andre@544: } andre@544: catch (SQLException sqle) { andre@544: logger.error(sqle.getLocalizedMessage(), sqle); sascha@305: } sascha@305: finally { andre@544: close(); sascha@305: } andre@544: 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: teichmann@540: protected DBConnection dbConnection; sascha@305: sascha@305: public SQLExecutor() { sascha@305: } sascha@305: sascha@305: public SQLExecutor(DBConnection dbConnection) { teichmann@540: this(); 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 :