From 662fefea1999e26a0592e585fff1ecd2d6eb0443 Mon Sep 17 00:00:00 2001 From: Tim Chamberlain Date: Fri, 28 Oct 2022 11:09:35 -0500 Subject: [PATCH] sprint-14: put json data into backend details --- .../qqq/backend/core/model/data/QRecord.java | 9 ++++- .../LoadViaInsertOrUpdateStep.java | 12 +++++- .../qqq/backend/core/utils/JsonUtils.java | 40 ++++--------------- .../module/api/actions/BaseAPIActionUtil.java | 3 +- 4 files changed, 29 insertions(+), 35 deletions(-) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QRecord.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QRecord.java index 5e3772e1..c3fa8116 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QRecord.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/model/data/QRecord.java @@ -64,6 +64,8 @@ public class QRecord implements Serializable private Map backendDetails = new LinkedHashMap<>(); private List errors = new ArrayList<>(); + public final static String BACKEND_DETAILS_TYPE_JSON_SOURCE_OBJECT = "jsonSourceObject"; + /******************************************************************************* @@ -455,6 +457,11 @@ public class QRecord implements Serializable *******************************************************************************/ public Serializable getBackendDetail(String key) { + if(!this.backendDetails.containsKey(key)) + { + return (null); + } + return this.backendDetails.get(key); } @@ -466,7 +473,7 @@ public class QRecord implements Serializable *******************************************************************************/ public String getBackendDetailString(String key) { - return (String) this.backendDetails.get(key); + return (String) getBackendDetail(key); } 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 914066f2..b75c9edb 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 @@ -62,8 +62,18 @@ 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)); evaluateRecords(runBackendStepInput); + insertAndUpdateRecords(runBackendStepInput, runBackendStepOutput); + } + + + + /******************************************************************************* + ** + *******************************************************************************/ + public void insertAndUpdateRecords(RunBackendStepInput runBackendStepInput, RunBackendStepOutput runBackendStepOutput) throws QException + { + QTableMetaData tableMetaData = runBackendStepInput.getInstance().getTable(runBackendStepInput.getValueString(FIELD_DESTINATION_TABLE)); if(CollectionUtils.nullSafeHasContents(recordsToInsert)) { diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/JsonUtils.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/JsonUtils.java index b1f2b9a3..919526f2 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/JsonUtils.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/utils/JsonUtils.java @@ -231,29 +231,7 @@ public class JsonUtils ** Convert a json object into a QRecord ** *******************************************************************************/ - public static QRecord parseQRecordStrict(JSONObject jsonObject, Map fields) - { - return (parseQRecord(jsonObject, fields, true)); - } - - - - /******************************************************************************* - ** Convert a json object into a QRecord - ** - *******************************************************************************/ - public static QRecord parseQRecordLenient(JSONObject jsonObject, Map fields) - { - return (parseQRecord(jsonObject, fields, false)); - } - - - - /******************************************************************************* - ** Convert a json object into a QRecord - ** - *******************************************************************************/ - private static QRecord parseQRecord(JSONObject jsonObject, Map fields, boolean strict) + public static QRecord parseQRecord(JSONObject jsonObject, Map fields, boolean useBackendFieldNames) { QRecord record = new QRecord(); @@ -264,7 +242,12 @@ public class JsonUtils try { QFieldMetaData metaData = fields.get(fieldName); - String backendName = metaData.getBackendName() != null ? metaData.getBackendName() : fieldName; + String backendName = fieldName; + if(useBackendFieldNames) + { + backendName = metaData.getBackendName() != null ? metaData.getBackendName() : fieldName; + } + originalBackendName = backendName; ///////////////////////////////////////////////////////////////////////////////////////////////// @@ -327,14 +310,7 @@ public class JsonUtils } catch(Exception e) { - if(strict) - { - throw e; - } - else - { - LOG.debug("Caught exception parsing field [" + fieldName + "] as [" + originalBackendName + "]", e); - } + LOG.debug("Caught exception parsing field [" + fieldName + "] as [" + originalBackendName + "]", e); } } 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 b9f4f935..bd718f3d 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 @@ -274,7 +274,8 @@ public class BaseAPIActionUtil *******************************************************************************/ protected QRecord jsonObjectToRecord(JSONObject jsonObject, Map fields) throws IOException { - QRecord record = JsonUtils.parseQRecordLenient(jsonObject, fields); + QRecord record = JsonUtils.parseQRecord(jsonObject, fields, true); + record.getBackendDetails().put(QRecord.BACKEND_DETAILS_TYPE_JSON_SOURCE_OBJECT, jsonObject.toString()); return (record); }