From 4fdf22e710f9efac605288650976e0b8d25af8e2 Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Wed, 12 Dec 2012 22:09:05 +0100 Subject: [PATCH] [#2000] Add Record.reset(), reset(Field), reset(int), reset(String) to restore original values in a record --- .../jooq/test/_/testcases/RecordTests.java | 26 +++++++++++++++++++ .../src/org/jooq/test/jOOQAbstractTest.java | 5 ++++ jOOQ/src/main/java/org/jooq/Record.java | 24 +++++++++++++++++ .../java/org/jooq/impl/AbstractRecord.java | 22 ++++++++++++++++ jOOQ/src/main/java/org/jooq/impl/Value.java | 5 ++++ 5 files changed, 82 insertions(+) diff --git a/jOOQ-test/src/org/jooq/test/_/testcases/RecordTests.java b/jOOQ-test/src/org/jooq/test/_/testcases/RecordTests.java index 645634f1f7..8d29fd3c0d 100644 --- a/jOOQ-test/src/org/jooq/test/_/testcases/RecordTests.java +++ b/jOOQ-test/src/org/jooq/test/_/testcases/RecordTests.java @@ -145,4 +145,30 @@ extends BaseTestfalse. + */ + void reset(); + + /** + * Reset a given value to its {@link #original(Field)} value and its + * {@link #changed(Field)} flag to false. + */ + void reset(Field field); + + /** + * Reset a given value to its {@link #original(int)} value and its + * {@link #changed(int)} flag to false. + */ + void reset(int fieldIndex); + + /** + * Reset a given value to its {@link #original(String)} value and its + * {@link #changed(String)} flag to false. + */ + void reset(String fieldName); + /** * Convert this record into an array. *

diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java b/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java index 5ad90bdae4..e35b767a54 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java @@ -422,6 +422,28 @@ abstract class AbstractRecord extends AbstractStore implements Record { changed(changed, getIndex(fieldName)); } + @Override + public final void reset() { + for (Value value : getValues()) { + value.reset(); + } + } + + @Override + public final void reset(Field field) { + reset(getIndex(field)); + } + + @Override + public final void reset(int fieldIndex) { + getValue0(fieldIndex).reset(); + } + + @Override + public final void reset(String fieldName) { + reset(getIndex(fieldName)); + } + @Override public final Object[] intoArray() { return into(Object[].class); diff --git a/jOOQ/src/main/java/org/jooq/impl/Value.java b/jOOQ/src/main/java/org/jooq/impl/Value.java index f3e10fcf96..7685918280 100644 --- a/jOOQ/src/main/java/org/jooq/impl/Value.java +++ b/jOOQ/src/main/java/org/jooq/impl/Value.java @@ -114,6 +114,11 @@ class Value implements Serializable { } } + final void reset() { + isChanged = false; + value = original; + } + // ------------------------------------------------------------------------ // XXX: Object API // ------------------------------------------------------------------------