From 1595f096905295c915ffc36932f32cffe04affdd Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Mon, 5 Aug 2013 15:53:37 +0200 Subject: [PATCH] [#2010] Implemented INSERT, UPDATE, STORE lifecycle events --- .../test/_/testcases/RecordListenerTests.java | 20 ++++++ .../src/org/jooq/test/jOOQAbstractTest.java | 5 ++ .../org/jooq/impl/UpdatableRecordImpl.java | 63 ++++++++++++++++--- 3 files changed, 78 insertions(+), 10 deletions(-) diff --git a/jOOQ-test/src/org/jooq/test/_/testcases/RecordListenerTests.java b/jOOQ-test/src/org/jooq/test/_/testcases/RecordListenerTests.java index 4cd8cae8e0..9c9f4871de 100644 --- a/jOOQ-test/src/org/jooq/test/_/testcases/RecordListenerTests.java +++ b/jOOQ-test/src/org/jooq/test/_/testcases/RecordListenerTests.java @@ -112,6 +112,26 @@ extends BaseTest> extends TableReco @Override public final int store() { + final int[] result = new int[1]; + + delegate(configuration(), (Record) this, STORE) + .operate(new RecordOperation() { + + @Override + public Record operate(Record record) throws RuntimeException { + result[0] = store0(); + return record; + } + }); + + return result[0]; + } + + @Override + public final int insert() { + final int[] result = new int[1]; + + delegate(configuration(), (Record) this, INSERT) + .operate(new RecordOperation() { + + @Override + public Record operate(Record record) throws RuntimeException { + result[0] = storeInsert(); + return record; + } + }); + + return result[0]; + } + + @Override + public final int update() { + final int[] result = new int[1]; + + delegate(configuration(), (Record) this, UPDATE) + .operate(new RecordOperation() { + + @Override + public Record operate(Record record) throws RuntimeException { + result[0] = storeUpdate(getPrimaryKey().getFieldsArray()); + return record; + } + }); + + return result[0]; + } + + private final int store0() { TableField[] keys = getPrimaryKey().getFieldsArray(); boolean executeUpdate = false; @@ -140,16 +193,6 @@ public class UpdatableRecordImpl> extends TableReco return result; } - @Override - public final int insert() { - return storeInsert(); - } - - @Override - public final int update() { - return storeUpdate(getPrimaryKey().getFieldsArray()); - } - private final int storeInsert() { DSLContext create = create(); InsertQuery insert = create.insertQuery(getTable());