From ff6d1142de9cad6574a14d152f1d0ecf6856933b Mon Sep 17 00:00:00 2001 From: harish Date: Sat, 9 Nov 2024 12:21:28 +0530 Subject: [PATCH] Updated code --- .../dao/ApplicationEvaluationDao.java | 60 ++++++++++++++++++- 1 file changed, 59 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java index e6c7eea9..81aa20a1 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationEvaluationDao.java @@ -203,6 +203,9 @@ public class ApplicationEvaluationDao { case "paragraph": handleParagraphField(applicationId, formField, contentBean, mappedField); break; + case "table": + handleTableField(applicationId, formField, contentBean, mappedField); + break; default: populateOptionFieldsAsFieldValue(mappedField, formFieldId, applicationForm, applicationId, contentBean); } @@ -710,6 +713,9 @@ public class ApplicationEvaluationDao { case "paragraph": handleParagraphField(applicationId, criteriaFormField, contentResponseBean, mappedField); break; + case "table": + handleTableField(applicationId, criteriaFormField, contentResponseBean, mappedField); + break; default: populateOptionFieldsAsFieldValue(mappedField, formFieldId, applicationForm, applicationId, contentResponseBean); @@ -993,7 +999,7 @@ public class ApplicationEvaluationDao { boolean isCheckbox = "checkboxes".equals(contentResponseBean.getName()); boolean isFileUpload = "fileupload".equals(contentResponseBean.getName()); boolean isParagraph = "paragraph".equals(contentResponseBean.getName()); - + boolean isTable = "table".equals(contentResponseBean.getName()); if (isFileUpload) { handleFileUpload(applicationId, criteriaFormField, mappedField); } else if (isCheckbox) { @@ -1001,11 +1007,63 @@ public class ApplicationEvaluationDao { } else if (isParagraph) { handleParagraphField(applicationId, criteriaFormField, contentResponseBean, mappedField); + } else if (isTable) { + handleTableField(applicationId, criteriaFormField, contentResponseBean, mappedField); } else { handleOtherFields(applicationId, criteriaFormField, contentResponseBean, mappedField); } } + private void handleTableField(Long applicationId, CriteriaFormFieldEntity criteriaFormField, + ContentResponseBean contentResponseBean, CriteriaMappedField mappedField) { + Map stateFieldMap = new HashMap<>(); + Map stateFieldBoolean = new HashMap<>(); + + contentResponseBean.getSettings().stream() + .filter(setting -> "table_columns".equals(setting.getName())) + .map(SettingResponseBean::getValue) + .filter(Objects::nonNull) + .filter(settingValue -> settingValue instanceof Map) + .map(settingValue -> (Map) settingValue) + .map(valueMap -> (List>) valueMap.get("stateFieldData")) + .filter(Objects::nonNull) + .flatMap(List::stream) + .forEach(fieldData -> { + String fieldName = (String) fieldData.get("name"); + String fieldLabel = (String) fieldData.get("label"); + Boolean predefined = (Boolean) fieldData.getOrDefault("predefined", false); + + if (fieldName != null) { + stateFieldMap.put(fieldName, fieldLabel); + stateFieldBoolean.put(fieldName, predefined); + } + }); + + findFormFieldValue(applicationId, criteriaFormField.getFormFieldId()).ifPresent(formField -> { + String fieldValue1 = formField.getFieldValue(); + ObjectMapper objectMapper = new ObjectMapper(); + + try { + List> rowsData = objectMapper.readValue(fieldValue1, new TypeReference>>() {}); + + List> tableData = new ArrayList<>(); + for (Map rowData : rowsData) { + Map mappedRow = new HashMap<>(); + rowData.forEach((fieldKey, fieldValue) -> { + String columnLabel = stateFieldMap.getOrDefault(fieldKey, fieldKey); + mappedRow.put(columnLabel, fieldValue); + }); + tableData.add(mappedRow); + } + + mappedField.setFieldValue(tableData); + } catch (Exception e) { + e.printStackTrace(); + } + }); + } + + private void handleParagraphField(Long applicationId, CriteriaFormFieldEntity criteriaFormField, ContentResponseBean contentResponseBean, CriteriaMappedField mappedField) { findFormFieldValue(applicationId, criteriaFormField.getFormFieldId()).ifPresent(formField -> { String paragraph = contentResponseBean.getSettings().stream()