diff options
author | Trygve Laugstøl <trygvis@inamo.no> | 2013-06-09 15:15:46 +0200 |
---|---|---|
committer | Trygve Laugstøl <trygvis@inamo.no> | 2013-06-09 15:15:46 +0200 |
commit | 33e3be55dc2d815cbd0208bf59d12a7e727f3105 (patch) | |
tree | a464f750d2cbdd6cdd805e574dd0aa66fa7027fd /src/main/java/io/trygvis/async/SqlEffectExecutor.java | |
parent | 7465fdb9aa847d29dacc56adbe473f1c1ceb298e (diff) | |
download | quartz-based-queue-33e3be55dc2d815cbd0208bf59d12a7e727f3105.tar.gz quartz-based-queue-33e3be55dc2d815cbd0208bf59d12a7e727f3105.tar.bz2 quartz-based-queue-33e3be55dc2d815cbd0208bf59d12a7e727f3105.tar.xz quartz-based-queue-33e3be55dc2d815cbd0208bf59d12a7e727f3105.zip |
wip
Diffstat (limited to 'src/main/java/io/trygvis/async/SqlEffectExecutor.java')
-rw-r--r-- | src/main/java/io/trygvis/async/SqlEffectExecutor.java | 55 |
1 files changed, 50 insertions, 5 deletions
diff --git a/src/main/java/io/trygvis/async/SqlEffectExecutor.java b/src/main/java/io/trygvis/async/SqlEffectExecutor.java index c8abbd3..e03cf5e 100644 --- a/src/main/java/io/trygvis/async/SqlEffectExecutor.java +++ b/src/main/java/io/trygvis/async/SqlEffectExecutor.java @@ -12,22 +12,67 @@ public class SqlEffectExecutor { this.dataSource = dataSource; } - public <A> A execute(SqlEffect<A> effect) { + public <A> A transaction(SqlEffect<A> effect) { +/* + int pid; + try (Connection c = dataSource.getConnection()) { - return effect.doInConnection(c); + + try (Statement statement = c.createStatement()) { + ResultSet rs = statement.executeQuery("SELECT pg_backend_pid()"); + rs.next(); + pid = rs.getInt(1); + } + + System.out.println("pid = " + pid); + + try { + effect.doInConnection(c); + c.commit(); + } catch (SQLException e) { + c.rollback(); + e.printStackTrace(); + } finally { + System.out.println("Closing pid=" + pid); + try { + c.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } } catch (SQLException e) { + e.printStackTrace(); throw new SqlExecutionException(e); } - } +*/ - public void execute(SqlEffect.Void effect) { try (Connection c = dataSource.getConnection()) { - effect.doInConnection(c); + boolean ok = false; + try { + A a = effect.doInConnection(c); + c.commit(); + ok = true; + return a; + } finally { + if (!ok) { + c.rollback(); + } + } } catch (SQLException e) { throw new SqlExecutionException(e); } } + public void transaction(final SqlEffect.Void effect) { + transaction(new SqlEffect<Object>() { + @Override + public Object doInConnection(Connection c) throws SQLException { + effect.doInConnection(c); + return null; + } + }); + } + public static class SqlExecutionException extends RuntimeException { public final SQLException exception; |