From 543963f22d4996a41ff26e8dcd729746983c408e Mon Sep 17 00:00:00 2001 From: nisha Date: Mon, 7 Oct 2024 20:11:30 +0530 Subject: [PATCH] Updated request body for form data --- .../tendermanagement/dao/ApplicationDao.java | 27 ++++++++---- .../gepafin/tendermanagement/dao/FormDao.java | 35 ++++++++++++--- .../ApplicationFormFieldRequestBean.java | 2 +- .../gepafin/tendermanagement/util/Utils.java | 43 +++++++++++++++++++ .../db/changelog/db.changelog-1.0.0.xml | 7 ++- 5 files changed, 98 insertions(+), 16 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index a76b9de3..3d1f7de7 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -323,9 +323,13 @@ public class ApplicationDao { } } Utils.setIfUpdated(applicationFormFieldEntity::getFieldId, applicationFormFieldEntity::setFieldId, applicationFormFieldRequestBean.getFieldId()); - if(applicationFormFieldRequestBean.getFieldValue() ==null || Boolean.FALSE.equals(applicationFormFieldRequestBean.getFieldValue().isEmpty())) { - applicationFormFieldEntity.setFieldValue(applicationFormFieldRequestBean.getFieldValue()); + + if(applicationFormFieldRequestBean.getFieldValue() !=null ) { + applicationFormFieldEntity.setFieldValue(Utils.convertObjectToJsonString(applicationFormFieldRequestBean.getFieldValue())); } + if(applicationFormFieldRequestBean.getFieldValue() ==null ) { + applicationFormFieldEntity.setFieldValue(null); + } return applicationFormFieldRepository.save(applicationFormFieldEntity); } @@ -333,10 +337,15 @@ public class ApplicationDao { List documentIds=null; List contentResponseBeans=Utils.convertJsonStringToList(formEntity.getContent(),ContentResponseBean.class); for (ContentResponseBean contentResponseBean:contentResponseBeans){ - if(Boolean.TRUE.equals(contentResponseBean.getName().equals("fileupload"))){ - if(contentResponseBean.getId().equals(applicationFormFieldRequestBean.getFieldId())) { - String documentId = applicationFormFieldRequestBean.getFieldValue(); - documentIds = validateDocumentIds(documentId); + if(Boolean.TRUE.equals(contentResponseBean.getName().equals("fileupload"))) { + if (contentResponseBean.getId().equals(applicationFormFieldRequestBean.getFieldId())) { + Object fieldValueObject = applicationFormFieldRequestBean.getFieldValue(); + if (fieldValueObject instanceof String) { + // Safely cast the object to a string + String documentId = (String) fieldValueObject; + // Now you can use documentId as needed + documentIds = validateDocumentIds(documentId); + } } } } @@ -377,7 +386,9 @@ public class ApplicationDao { ApplicationFormFieldResponseBean applicationFormFieldResponseBean = new ApplicationFormFieldResponseBean(); applicationFormFieldResponseBean.setApplicationFormId(applicationFormId); applicationFormFieldResponseBean.setFieldId(applicationFormFieldEntity.getFieldId()); - applicationFormFieldResponseBean.setFieldValue(applicationFormFieldEntity.getFieldValue()); + if(applicationFormFieldEntity.getFieldValue() != null) { + applicationFormFieldResponseBean.setFieldValue(Utils.getFieldValueAsObject(applicationFormFieldEntity.getFieldValue())); + } applicationFormFieldResponseBean.setId(applicationFormFieldEntity.getId()); applicationFormFieldResponseBean.setCreatedDate(applicationFormFieldEntity.getCreatedDate()); applicationFormFieldResponseBean.setUpdatedDate(applicationFormFieldEntity.getUpdatedDate()); @@ -447,7 +458,7 @@ public class ApplicationDao { } private ApplicationGetResponseBean createApplicationGetResponseBean(ApplicationEntity applicationEntity, List formEntities, List formApplicationResponses) { - ApplicationGetResponseBean applicationGetResponseBean =createApplicationGetResponseBean(applicationEntity); + ApplicationGetResponseBean applicationGetResponseBean = createApplicationGetResponseBean(applicationEntity); applicationGetResponseBean.setForm(formApplicationResponses); return applicationGetResponseBean; } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/FormDao.java b/src/main/java/net/gepafin/tendermanagement/dao/FormDao.java index 9cdf3fed..bee7885c 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/FormDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/FormDao.java @@ -205,12 +205,14 @@ public class FormDao { public void validateFormField(List applicationFormFieldRequestList, ApplicationEntity applicationEntity, FormEntity formEntity) { Map formFieldMap = new LinkedHashMap(); for(ApplicationFormFieldRequestBean applicationFormFieldRequestBean:applicationFormFieldRequestList) { - if(applicationFormFieldRequestBean.getFieldValue()==null || applicationFormFieldRequestBean.getFieldValue().isEmpty()) + if(applicationFormFieldRequestBean.getFieldValue()==null ) continue; - formFieldMap.put(applicationFormFieldRequestBean.getFieldId(),applicationFormFieldRequestBean.getFieldValue()); - } + if (applicationFormFieldRequestBean.getFieldValue() != null ) { + Object fieldValue = applicationFormFieldRequestBean.getFieldValue(); + checkObjectData(applicationFormFieldRequestBean.getFieldId(), fieldValue, formFieldMap); + }} - FormResponseBean formResponseBean = convertFormEntityToFormResponseBean(formEntity); + FormResponseBean formResponseBean = convertFormEntityToFormResponseBean(formEntity); ApplicationFormEntity applicationFormEntity=applicationFormRepository.findByApplicationIdAndFormId(applicationEntity.getId(),formEntity.getId()); Boolean isApplicationFormExist= getApplicationFormExist(applicationFormEntity); FieldValidator validator = FieldValidator.create(); @@ -238,6 +240,27 @@ public class FormDao { validator.validate(); } + private void checkObjectData(String fieldId, Object fieldValue, Map formFieldMap) { + if (fieldValue instanceof List) { + List list = (List) fieldValue; + + // Only map if the list is not empty and contains Strings + if (!list.isEmpty() && list.get(0) instanceof String) { + for (Object value : list) { + setFormFieldMap(fieldId, fieldValue, formFieldMap, value); + } + } + } + else setFormFieldMap(fieldId, fieldValue, formFieldMap, fieldValue); + } + + private void setFormFieldMap(String fieldId, Object fieldValue, Map formFieldMap, Object value) { + if (value instanceof String) { + if(fieldValue !=null && ((String) fieldValue).isEmpty()) + formFieldMap.put(fieldId, value); + } + } + private Boolean getApplicationFormExist(ApplicationFormEntity applicationFormEntity) { if(applicationFormEntity !=null) { return true; @@ -249,8 +272,8 @@ public class FormDao { Map formFieldMap = new LinkedHashMap(); for(ApplicationFormFieldEntity applicationFormFieldEntity:applicationFormFieldEntityList) { formFieldMap.put(applicationFormFieldEntity.getFieldId(),applicationFormFieldEntity.getFieldValue()); - } - + } + FormResponseBean formResponseBean = convertFormEntityToFormResponseBean(formEntity); FieldValidator validator = FieldValidator.create(); formResponseBean.getContent().forEach(contentResponseBean -> { diff --git a/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationFormFieldRequestBean.java b/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationFormFieldRequestBean.java index 029eb470..993fc7e4 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationFormFieldRequestBean.java +++ b/src/main/java/net/gepafin/tendermanagement/model/request/ApplicationFormFieldRequestBean.java @@ -9,6 +9,6 @@ public class ApplicationFormFieldRequestBean { private String fieldId; - private String fieldValue; + private Object fieldValue; } diff --git a/src/main/java/net/gepafin/tendermanagement/util/Utils.java b/src/main/java/net/gepafin/tendermanagement/util/Utils.java index af0bc684..0c76c78c 100644 --- a/src/main/java/net/gepafin/tendermanagement/util/Utils.java +++ b/src/main/java/net/gepafin/tendermanagement/util/Utils.java @@ -227,4 +227,47 @@ public class Utils { Pattern pattern = Pattern.compile(EMAIL_REGEX); return pattern.matcher(email).matches(); } + public static String convertObjectToJsonString(Object object) { + try { + // Check if the object is a string + if (object instanceof String) { + String str = (String) object; + // Return null if the string is null or empty + if (str != null && !str.trim().isEmpty()) { + return str; // Return the non-empty string + } else { + return null; // Return null for null or empty string + } + } else if (object != null) { + // Convert non-string objects (arrays, objects) to JSON strings + return mapper.writeValueAsString(object); + } + return null; // Return null if the object is null + } catch (JsonProcessingException e) { + log.error("Error while converting object to string: {}", e.getMessage(), e); + return null; // Return null in case of exception + } + } + + + public static Object getFieldValueAsObject(String fieldValue) { + ObjectMapper mapper = new ObjectMapper(); + try { + // Check if the string is a valid JSON object, array, or simple string + if (fieldValue.startsWith("{")) { + // Convert to a Map (representing an object) + return mapper.readValue(fieldValue, Map.class); + } else if (fieldValue.startsWith("[")) { + // Convert to a List (representing an array) + return mapper.readValue(fieldValue, List.class); + } else { + // Return the raw string (it's a simple value) + return fieldValue; + } + } catch (JsonProcessingException e) { + log.error("Error while converting string to object: {}", e.getMessage(), e); + return fieldValue; // If there's an error, return the raw string + } + } + } diff --git a/src/main/resources/db/changelog/db.changelog-1.0.0.xml b/src/main/resources/db/changelog/db.changelog-1.0.0.xml index d067df71..85054439 100644 --- a/src/main/resources/db/changelog/db.changelog-1.0.0.xml +++ b/src/main/resources/db/changelog/db.changelog-1.0.0.xml @@ -879,5 +879,10 @@ - + + +