From bb6187a908839c378dbc331d5dc0ca9f05c135cb Mon Sep 17 00:00:00 2001 From: nisha Date: Mon, 3 Feb 2025 12:28:12 +0530 Subject: [PATCH] Fixed table validation issue --- .../gepafin/tendermanagement/dao/FormDao.java | 4 +- .../tendermanagement/util/FieldValidator.java | 44 ++++++++++++++++++- 2 files changed, 45 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/gepafin/tendermanagement/dao/FormDao.java b/src/main/java/net/gepafin/tendermanagement/dao/FormDao.java index 5e5cfdef..3f558574 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/FormDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/FormDao.java @@ -471,7 +471,9 @@ public class FormDao { FieldValidatorBean fieldValidatorBean = Utils.convertSourceObjectToDestinationObject(contentResponseBean.getValidators(), FieldValidatorBean.class); String fieldValue = getFieldValue(contentResponseBean); - validator.isRequired(value, fieldValidatorBean.getIsRequired(), fieldValue); + + validator.isRequired(value, fieldValidatorBean.getIsRequired(), fieldValue) + .validateCustomTableValidation(value,fieldValidatorBean.getCustom(),fieldValue,contentResponseBean); }); if (Boolean.TRUE.equals(isSendValidationError)) { validator.validate(); diff --git a/src/main/java/net/gepafin/tendermanagement/util/FieldValidator.java b/src/main/java/net/gepafin/tendermanagement/util/FieldValidator.java index a9b5ad9a..ffcdfcac 100644 --- a/src/main/java/net/gepafin/tendermanagement/util/FieldValidator.java +++ b/src/main/java/net/gepafin/tendermanagement/util/FieldValidator.java @@ -147,11 +147,51 @@ public class FieldValidator { return this; } - private static void checkTableValidation(String value, String fieldId, ContentResponseBean contentResponseBean, List errors) { + + + public FieldValidator validateCustomTableValidation(String value, String customRule, String fieldId, ContentResponseBean contentResponseBean) { + if (customRule == null || value == null) { + return this; // No custom rule to validate + } + + switch (customRule) { + + case GepafinConstant.NON_EMPTY_TABLES: + try { + checkTableValidation(value, fieldId, contentResponseBean, errors); + } catch (Exception e) { + throw new RuntimeException(e); + } + break; + + default: + // If the custom rule is unknown, just log or add an error (optional) + errors.add(MessageFormat.format(Translator.toLocale(GepafinConstant.VALIDATION_FIELD_CUSTOM), fieldId, customRule)); + break; + } + + return this; + } + + private static void checkTableValidation(String value, String fieldId, ContentResponseBean contentResponseBean, List errors) throws Exception { Map stateFieldMap= new HashMap<>(); + String tableType = contentResponseBean.getSettings().stream() + .filter(setting ->GepafinConstant.CRITERIA_TABLE_COLUMNS.equals(setting.getName())) // Check for "table_columns" + .map(SettingResponseBean::getName) // Extract the name + .findFirst() // Get the first matching result + .orElse(null); // Default to null if no match + + if (tableType!=null){ + try { + Object object = PdfUtils.extractRows(value);; + value= Utils.convertToString(object); + } catch (Exception e) { + throw new RuntimeException(e); + } + } contentResponseBean.getSettings().stream() - .filter(setting -> "table_columns".equals(setting.getName())) // Check for "table_columns" + .filter(setting -> "table_columns".equals(setting.getName()) || GepafinConstant.CRITERIA_TABLE_COLUMNS.equals(setting.getName())) // Check for "table_columns" .map(SettingResponseBean::getValue) .filter(Objects::nonNull) // Ensure value is not null .filter(settingValue -> settingValue instanceof Map) // Ensure value is a Map