diff 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 diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/artifact-database/src/main/java/org/dive4elements/artifactdatabase/db/SQLExecutor.java	Thu Apr 25 10:57:18 2013 +0200
@@ -0,0 +1,111 @@
+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