aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/io/trygvis/esper/testing/DatabaseAccess.java
diff options
context:
space:
mode:
authorTrygve Laugstøl <trygvis@inamo.no>2012-12-19 23:42:12 +0100
committerTrygve Laugstøl <trygvis@inamo.no>2012-12-19 23:42:12 +0100
commit79c6c1d042fdad06294f4db57c5b8c91b6a0e5d0 (patch)
tree815da28b8238bbe3bf44ef126fb79c0ffaf41de6 /src/main/java/io/trygvis/esper/testing/DatabaseAccess.java
parent4abc880c4b9ce6888acab85c815514f3dd195fa4 (diff)
downloadesper-testing-79c6c1d042fdad06294f4db57c5b8c91b6a0e5d0.tar.gz
esper-testing-79c6c1d042fdad06294f4db57c5b8c91b6a0e5d0.tar.bz2
esper-testing-79c6c1d042fdad06294f4db57c5b8c91b6a0e5d0.tar.xz
esper-testing-79c6c1d042fdad06294f4db57c5b8c91b6a0e5d0.zip
o Adding a basic web app.
Diffstat (limited to 'src/main/java/io/trygvis/esper/testing/DatabaseAccess.java')
-rw-r--r--src/main/java/io/trygvis/esper/testing/DatabaseAccess.java49
1 files changed, 49 insertions, 0 deletions
diff --git a/src/main/java/io/trygvis/esper/testing/DatabaseAccess.java b/src/main/java/io/trygvis/esper/testing/DatabaseAccess.java
new file mode 100644
index 0000000..6979b66
--- /dev/null
+++ b/src/main/java/io/trygvis/esper/testing/DatabaseAccess.java
@@ -0,0 +1,49 @@
+package io.trygvis.esper.testing;
+
+import org.slf4j.*;
+
+import javax.sql.*;
+import java.sql.*;
+
+public class DatabaseAccess {
+
+ private final Logger logger = LoggerFactory.getLogger(getClass());
+
+ private final DataSource dataSource;
+
+ public static interface DaosCallback<A> {
+ A run(Daos daos) throws SQLException;
+ }
+
+ public DatabaseAccess(DataSource dataSource) {
+ this.dataSource = dataSource;
+ }
+
+ public <A> A inTransaction(DaosCallback<A> callback) throws SQLException {
+ try {
+ Connection c = dataSource.getConnection();
+
+ try {
+// try (PreparedStatement s = c.prepareStatement("set application_name = 'Actor: " + name + "';")) {
+// s.executeUpdate();
+// s.close();
+// }
+
+ Daos daos = new Daos(c);
+ A a = callback.run(daos);
+ daos.commit();
+
+ return a;
+ } catch (SQLException e) {
+ c.rollback();
+ throw e;
+ } finally {
+ c.close();
+ }
+ } catch (Throwable e) {
+ logger.warn("Exception in thread " + Thread.currentThread().getName());
+// e.printStackTrace(System.out);
+ throw e;
+ }
+ }
+}