sascha@174: /* sascha@174: * Copyright (c) 2011 by Intevation GmbH sascha@174: * sascha@174: * This program is free software under the LGPL (>=v2.1) sascha@174: * Read the file LGPL.txt coming with the software for details sascha@174: * or visit http://www.gnu.org/licenses/ if it does not exist. sascha@174: */ sascha@174: package de.intevation.artifactdatabase; sascha@174: sascha@174: import java.sql.Connection; sascha@174: import java.sql.PreparedStatement; sascha@174: import java.sql.ResultSet; sascha@174: import java.sql.SQLException; sascha@174: sascha@174: import javax.sql.DataSource; sascha@174: sascha@174: import org.apache.log4j.Logger; sascha@174: sascha@174: public class SQLExecutor { sascha@174: sascha@174: private static Logger logger = Logger.getLogger(SQLExecutor.class); sascha@174: sascha@174: public Connection conn; sascha@174: public PreparedStatement stmnt; sascha@174: public ResultSet result; sascha@174: sascha@174: public SQLExecutor() { sascha@174: } sascha@174: sascha@174: public void reset() throws SQLException { sascha@174: if (result != null) { sascha@174: result.close(); sascha@174: result = null; sascha@174: } sascha@174: if (stmnt != null) { sascha@174: result = null; sascha@174: stmnt.close(); sascha@174: } sascha@174: } sascha@174: sascha@174: public PreparedStatement prepareStatement(String query) sascha@174: throws SQLException { sascha@174: return stmnt = conn.prepareStatement(query); sascha@174: } sascha@174: sascha@174: public void close() { sascha@174: if (result != null) { sascha@174: try { result.close(); } sascha@174: catch (SQLException sqle) {} sascha@174: } sascha@174: if (stmnt != null) { sascha@174: try { stmnt.close(); } sascha@174: catch (SQLException sqle) {} sascha@174: } sascha@174: if (conn != null) { sascha@174: try { conn.close(); } sascha@174: catch (SQLException sqle) {} sascha@174: } sascha@174: } sascha@174: sascha@174: public boolean runWrite() { sascha@174: DataSource dataSource = DBConnection.getDataSource(); sascha@174: try { sascha@174: conn = dataSource.getConnection(); sascha@174: try { sascha@174: conn.setAutoCommit(false); sascha@174: return doIt(); sascha@174: } sascha@174: catch (SQLException sqle) { sascha@174: conn.rollback(); sascha@174: throw sqle; sascha@174: } sascha@174: } sascha@174: catch (SQLException sqle) { sascha@174: logger.error(sqle.getLocalizedMessage(), sqle); sascha@174: } sascha@174: finally { sascha@174: close(); sascha@174: } sascha@174: return false; sascha@174: } sascha@174: sascha@174: public boolean runRead() { sascha@174: DataSource dataSource = DBConnection.getDataSource(); sascha@174: try { sascha@174: conn = dataSource.getConnection(); sascha@174: return doIt(); sascha@174: } sascha@174: catch (SQLException sqle) { sascha@174: logger.error(sqle.getLocalizedMessage(), sqle); sascha@174: } sascha@174: finally { sascha@174: close(); sascha@174: } sascha@174: return false; sascha@174: } sascha@174: sascha@174: public boolean doIt() throws SQLException { sascha@174: return true; sascha@174: } sascha@174: } sascha@174: // vim:set ts=4 sw=4 si et sta sts=4 fenc=utf8 :