From a43082d1aaec46e2bb4cbc69cd2a553d7699512c Mon Sep 17 00:00:00 2001 From: Lukas Eder Date: Sun, 12 May 2013 10:34:46 +0200 Subject: [PATCH] [#2265] Removed delete again, for now. This seems to be very complex to get right. --- jOOQ/src/main/java/org/jooq/Record.java | 20 ++++---- .../main/java/org/jooq/UpdatableRecord.java | 1 - .../java/org/jooq/impl/AbstractRecord.java | 22 --------- .../org/jooq/impl/UpdatableRecordImpl.java | 49 +++++++++---------- 4 files changed, 32 insertions(+), 60 deletions(-) diff --git a/jOOQ/src/main/java/org/jooq/Record.java b/jOOQ/src/main/java/org/jooq/Record.java index c65a0cae36..88821d687b 100644 --- a/jOOQ/src/main/java/org/jooq/Record.java +++ b/jOOQ/src/main/java/org/jooq/Record.java @@ -1042,8 +1042,6 @@ public interface Record extends Attachable, Comparable { // Methods related to the underlying ResultSet (if applicable) // ------------------------------------------------------------------------- - int delete() throws DataAccessException; - /** * Refresh this record from the database. *

@@ -1068,11 +1066,12 @@ public interface Record extends Attachable, Comparable { * * @throws DataAccessException This exception is thrown if *

* @see UpdatableRecord#refresh() * @see ResultQuery#keepResultSet(KeepResultSetMode) @@ -1103,11 +1102,12 @@ public interface Record extends Attachable, Comparable { * * @throws DataAccessException This exception is thrown if *
    - *
  • something went wrong executing the query
  • the - * {@link #resultSet()} is not available, or is in + *
  • the underlying {@link #resultSet()} is in * {@link ResultSet#TYPE_FORWARD_ONLY} mode, such that - * refreshing is not possible.
  • the record does not exist - * anymore in the database
  • + * refreshing is not possible.
  • something went wrong + * executing the refresh SELECT statement, if this + * is an {@link UpdatableRecord}.
  • the record does not + * exist anymore in the database
  • *
* @see UpdatableRecord#refresh() * @see ResultQuery#keepResultSet(KeepResultSetMode) diff --git a/jOOQ/src/main/java/org/jooq/UpdatableRecord.java b/jOOQ/src/main/java/org/jooq/UpdatableRecord.java index fa2a1c7a57..a23ab7600a 100644 --- a/jOOQ/src/main/java/org/jooq/UpdatableRecord.java +++ b/jOOQ/src/main/java/org/jooq/UpdatableRecord.java @@ -298,7 +298,6 @@ public interface UpdatableRecord> extends TableReco * @throws DataChangedException If optimistic locking is enabled and the * record has already been changed/deleted in the database */ - @Override int delete() throws DataAccessException, DataChangedException; /** diff --git a/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java b/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java index 1f300857bd..4c469b731c 100644 --- a/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java +++ b/jOOQ/src/main/java/org/jooq/impl/AbstractRecord.java @@ -694,28 +694,6 @@ abstract class AbstractRecord extends AbstractStore implements Record { // XXX: Methods related to the underlying ResultSet (if applicable) // ------------------------------------------------------------------------- - /** - * {@inheritDoc} - *

- * Subclasses may override this - */ - @Override - public int delete() { - checkRsAvailable("Cannot delete record. No ResultSet available"); - - try { - - // [#2265] TODO: This code is prototypical. - rs.absolute(rsIndex - 1); - rs.deleteRow(); - - return 1; - } - catch (SQLException e) { - throw translate("Cannot delete record", e); - } - } - @Override public final void refresh() { refresh(fields.fields.fields); diff --git a/jOOQ/src/main/java/org/jooq/impl/UpdatableRecordImpl.java b/jOOQ/src/main/java/org/jooq/impl/UpdatableRecordImpl.java index 13b132534c..7dc295179e 100644 --- a/jOOQ/src/main/java/org/jooq/impl/UpdatableRecordImpl.java +++ b/jOOQ/src/main/java/org/jooq/impl/UpdatableRecordImpl.java @@ -302,40 +302,35 @@ public class UpdatableRecordImpl> extends TableReco @Override public final int delete() { - if (rs != null) { - return super.delete(); - } - else { - TableField[] keys = getPrimaryKey().getFieldsArray(); + TableField[] keys = getPrimaryKey().getFieldsArray(); - try { - DeleteQuery delete1 = create().deleteQuery(getTable()); - Utils.addConditions(delete1, this, keys); + try { + DeleteQuery delete1 = create().deleteQuery(getTable()); + Utils.addConditions(delete1, this, keys); - if (isExecuteWithOptimisticLocking()) { + if (isExecuteWithOptimisticLocking()) { - // [#1596] Add additional conditions for version and/or timestamp columns - if (isTimestampOrVersionAvailable()) { - addConditionForVersionAndTimestamp(delete1); - } - - // [#1547] Try fetching the Record again first, and compare this - // Record's original values with the ones in the database - else { - checkIfChanged(keys); - } + // [#1596] Add additional conditions for version and/or timestamp columns + if (isTimestampOrVersionAvailable()) { + addConditionForVersionAndTimestamp(delete1); } - int result = delete1.execute(); - checkIfChanged(result, null, null); - return result; + // [#1547] Try fetching the Record again first, and compare this + // Record's original values with the ones in the database + else { + checkIfChanged(keys); + } } - // [#673] If store() is called after delete(), a new INSERT should - // be executed and the record should be recreated - finally { - changed(true); - } + int result = delete1.execute(); + checkIfChanged(result, null, null); + return result; + } + + // [#673] If store() is called after delete(), a new INSERT should + // be executed and the record should be recreated + finally { + changed(true); } }