From e62db11f01d5db93f7848b1ddeaf6be68a457be8 Mon Sep 17 00:00:00 2001 From: rob bygrave Date: Tue, 2 Jul 2019 23:41:01 +1200 Subject: [PATCH] #1747 - Refactor extract common code for SaveManyElementCollection preElementCollectionUpdate() --- .../server/persist/SaveManyBase.java | 7 +++++++ .../persist/SaveManyElementCollection.java | 16 ++-------------- .../persist/SaveManyElementCollectionMap.java | 13 ++----------- 3 files changed, 11 insertions(+), 25 deletions(-) diff --git a/src/main/java/io/ebeaninternal/server/persist/SaveManyBase.java b/src/main/java/io/ebeaninternal/server/persist/SaveManyBase.java index 2c7bde442..3c8ab0777 100644 --- a/src/main/java/io/ebeaninternal/server/persist/SaveManyBase.java +++ b/src/main/java/io/ebeaninternal/server/persist/SaveManyBase.java @@ -41,6 +41,13 @@ abstract class SaveManyBase { */ abstract void save(); + void preElementCollectionUpdate(Object parentId) { + if (!insertedParent) { + request.preElementCollectionUpdate(); + server.execute(many.deleteByParentId(parentId, null), transaction); + } + } + void resetModifyState() { if (value instanceof BeanCollection) { modifyListenReset((BeanCollection) value); diff --git a/src/main/java/io/ebeaninternal/server/persist/SaveManyElementCollection.java b/src/main/java/io/ebeaninternal/server/persist/SaveManyElementCollection.java index 94097fd81..18f070556 100644 --- a/src/main/java/io/ebeaninternal/server/persist/SaveManyElementCollection.java +++ b/src/main/java/io/ebeaninternal/server/persist/SaveManyElementCollection.java @@ -2,7 +2,6 @@ package io.ebeaninternal.server.persist; import io.ebean.SqlUpdate; import io.ebean.bean.EntityBean; -import io.ebeaninternal.api.SpiEbeanServer; import io.ebeaninternal.server.core.PersistRequestBean; import io.ebeaninternal.server.deploy.BeanCollectionUtil; import io.ebeaninternal.server.deploy.BeanPropertyAssocMany; @@ -27,26 +26,15 @@ class SaveManyElementCollection extends SaveManyBase { } Object parentId = request.getBeanId(); - SpiEbeanServer server = request.getServer(); - - if (!insertedParent) { - request.preElementCollectionUpdate(); - SqlUpdate sqlDelete = many.deleteByParentId(parentId, null); - server.execute(sqlDelete, transaction); - } + preElementCollectionUpdate(parentId); transaction.depth(+1); - - String insert = many.insertElementCollection(); - SqlUpdate sqlInsert = server.createSqlUpdate(insert); - + SqlUpdate sqlInsert = server.createSqlUpdate(many.insertElementCollection()); for (Object value : collection) { - sqlInsert.setNextParameter(parentId); many.bindElementValue(sqlInsert, value); server.execute(sqlInsert, transaction); } - transaction.depth(-1); resetModifyState(); postElementCollectionUpdate(); diff --git a/src/main/java/io/ebeaninternal/server/persist/SaveManyElementCollectionMap.java b/src/main/java/io/ebeaninternal/server/persist/SaveManyElementCollectionMap.java index f61ac4e0f..6da9b5c2c 100644 --- a/src/main/java/io/ebeaninternal/server/persist/SaveManyElementCollectionMap.java +++ b/src/main/java/io/ebeaninternal/server/persist/SaveManyElementCollectionMap.java @@ -2,7 +2,6 @@ package io.ebeaninternal.server.persist; import io.ebean.SqlUpdate; import io.ebean.bean.EntityBean; -import io.ebeaninternal.api.SpiEbeanServer; import io.ebeaninternal.server.core.PersistRequestBean; import io.ebeaninternal.server.deploy.BeanCollectionUtil; import io.ebeaninternal.server.deploy.BeanPropertyAssocMany; @@ -29,18 +28,10 @@ class SaveManyElementCollectionMap extends SaveManyBase { } Object parentId = request.getBeanId(); - SpiEbeanServer server = request.getServer(); - if (!insertedParent) { - request.preElementCollectionUpdate(); - SqlUpdate sqlDelete = many.deleteByParentId(parentId, null); - server.execute(sqlDelete, transaction); - } + preElementCollectionUpdate(parentId); transaction.depth(+1); - - String insert = many.insertElementCollection(); - SqlUpdate sqlInsert = server.createSqlUpdate(insert); - + SqlUpdate sqlInsert = server.createSqlUpdate(many.insertElementCollection()); for (Map.Entry entry : entries) { sqlInsert.setNextParameter(parentId); sqlInsert.setNextParameter(entry.getKey());