diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/AbstractMemoryAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/AbstractMemoryAction.java index 435d0cf3..4922398b 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/AbstractMemoryAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/AbstractMemoryAction.java @@ -26,6 +26,8 @@ import java.io.Serializable; import com.kingsrook.qqq.backend.core.actions.interfaces.QActionInterface; import com.kingsrook.qqq.backend.core.model.data.QRecord; import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData; +import com.kingsrook.qqq.backend.core.utils.StringUtils; +import com.kingsrook.qqq.backend.core.utils.ValueUtils; /******************************************************************************* @@ -36,15 +38,22 @@ public abstract class AbstractMemoryAction implements QActionInterface /******************************************************************************* ** If the table has a field with the given name, then set the given value in the - ** given record. + ** given record - flag added to control overwriting value. *******************************************************************************/ - protected void setValueIfTableHasField(QRecord record, QTableMetaData table, String fieldName, Serializable value) + protected void setValueIfTableHasField(QRecord record, QTableMetaData table, String fieldName, Serializable value, boolean overwriteIfSet) { try { if(table.getFields().containsKey(fieldName)) { - record.setValue(fieldName, value); + /////////////////////////////////////////////////////////////////////// + // always set value if boolean to overwrite is true, otherwise, // + // only set the value if there is currently no content for the field // + /////////////////////////////////////////////////////////////////////// + if(overwriteIfSet || !StringUtils.hasContent(ValueUtils.getValueAsString(table.getField(fieldName)))) + { + record.setValue(fieldName, value); + } } } catch(Exception e) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/MemoryInsertAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/MemoryInsertAction.java index 77ee9635..401c4ab8 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/MemoryInsertAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/MemoryInsertAction.java @@ -53,8 +53,8 @@ public class MemoryInsertAction extends AbstractMemoryAction implements InsertIn /////////////////////////////////////////// // todo .. better (not hard-coded names) // /////////////////////////////////////////// - setValueIfTableHasField(record, table, "createDate", now); - setValueIfTableHasField(record, table, "modifyDate", now); + setValueIfTableHasField(record, table, "createDate", now, false); + setValueIfTableHasField(record, table, "modifyDate", now, false); } InsertOutput insertOutput = new InsertOutput(); diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/MemoryUpdateAction.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/MemoryUpdateAction.java index 68f91a01..543be5ef 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/MemoryUpdateAction.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/modules/backend/implementations/memory/MemoryUpdateAction.java @@ -53,7 +53,7 @@ public class MemoryUpdateAction extends AbstractMemoryAction implements UpdateIn /////////////////////////////////////////// // todo .. better (not hard-coded names) // /////////////////////////////////////////// - setValueIfTableHasField(record, table, "modifyDate", now); + setValueIfTableHasField(record, table, "modifyDate", now, false); } UpdateOutput updateOutput = new UpdateOutput();