diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaInsertOrUpdateStep.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaInsertOrUpdateStep.java index 86a7e74a..914066f2 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaInsertOrUpdateStep.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/etl/streamedwithfrontend/LoadViaInsertOrUpdateStep.java @@ -37,6 +37,7 @@ import com.kingsrook.qqq.backend.core.model.actions.tables.update.UpdateInput; import com.kingsrook.qqq.backend.core.model.actions.tables.update.UpdateOutput; 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.CollectionUtils; /******************************************************************************* @@ -49,6 +50,9 @@ public class LoadViaInsertOrUpdateStep extends AbstractLoadStep { public static final String FIELD_DESTINATION_TABLE = "destinationTable"; + protected List recordsToInsert = null; + protected List recordsToUpdate = null; + /******************************************************************************* @@ -58,22 +62,10 @@ public class LoadViaInsertOrUpdateStep extends AbstractLoadStep @Override public void run(RunBackendStepInput runBackendStepInput, RunBackendStepOutput runBackendStepOutput) throws QException { - QTableMetaData tableMetaData = runBackendStepInput.getInstance().getTable(runBackendStepInput.getValueString(FIELD_DESTINATION_TABLE)); - List recordsToInsert = new ArrayList<>(); - List recordsToUpdate = new ArrayList<>(); - for(QRecord record : runBackendStepInput.getRecords()) - { - if(record.getValue(tableMetaData.getPrimaryKeyField()) == null) - { - recordsToInsert.add(record); - } - else - { - recordsToUpdate.add(record); - } - } + QTableMetaData tableMetaData = runBackendStepInput.getInstance().getTable(runBackendStepInput.getValueString(FIELD_DESTINATION_TABLE)); + evaluateRecords(runBackendStepInput); - if(!recordsToInsert.isEmpty()) + if(CollectionUtils.nullSafeHasContents(recordsToInsert)) { InsertInput insertInput = new InsertInput(runBackendStepInput.getInstance()); insertInput.setSession(runBackendStepInput.getSession()); @@ -84,7 +76,7 @@ public class LoadViaInsertOrUpdateStep extends AbstractLoadStep runBackendStepOutput.getRecords().addAll(insertOutput.getRecords()); } - if(!recordsToUpdate.isEmpty()) + if(CollectionUtils.nullSafeHasContents(recordsToUpdate)) { UpdateInput updateInput = new UpdateInput(runBackendStepInput.getInstance()); updateInput.setSession(runBackendStepInput.getSession()); @@ -110,4 +102,27 @@ public class LoadViaInsertOrUpdateStep extends AbstractLoadStep return (Optional.of(new InsertAction().openTransaction(insertInput))); } + + + + /******************************************************************************* + ** + *******************************************************************************/ + protected void evaluateRecords(RunBackendStepInput runBackendStepInput) throws QException + { + QTableMetaData tableMetaData = runBackendStepInput.getInstance().getTable(runBackendStepInput.getValueString(FIELD_DESTINATION_TABLE)); + recordsToInsert = new ArrayList<>(); + recordsToUpdate = new ArrayList<>(); + for(QRecord record : runBackendStepInput.getRecords()) + { + if(record.getValue(tableMetaData.getPrimaryKeyField()) == null) + { + recordsToInsert.add(record); + } + else + { + recordsToUpdate.add(record); + } + } + } } diff --git a/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java b/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java index 318257c7..a6abb0af 100644 --- a/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java +++ b/qqq-backend-module-api/src/main/java/com/kingsrook/qqq/backend/module/api/actions/BaseAPIActionUtil.java @@ -374,7 +374,7 @@ public class BaseAPIActionUtil /******************************************************************************* ** *******************************************************************************/ - private JSONObject getJsonObject(HttpResponse response) throws IOException + protected JSONObject getJsonObject(HttpResponse response) throws IOException { int statusCode = response.getStatusLine().getStatusCode(); LOG.debug(statusCode);