diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2012-12-19 23:42:12 +0100 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2012-12-19 23:42:12 +0100 |
commit | 79c6c1d042fdad06294f4db57c5b8c91b6a0e5d0 (patch) | |
tree | 815da28b8238bbe3bf44ef126fb79c0ffaf41de6 /src/main/java/io/trygvis/esper/testing/DatabaseAccess.java | |
parent | 4abc880c4b9ce6888acab85c815514f3dd195fa4 (diff) | |
download | esper-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.java | 49 |
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; + } + } +} |