Merge pull request #215 from Kitzanos/fixed-table-validation-issue-prod

Cherry-pick (Fixed table validation issue)
This commit is contained in:
Rinaldo
2025-02-14 09:46:21 +01:00
committed by GitHub

View File

@@ -160,7 +160,7 @@ public class FieldValidator {
public FieldValidator validateCustomTableValidation(String value, String customRule, String fieldId, ContentResponseBean contentResponseBean) {
if (customRule == null || value == null) {
if (customRule == null ) {
return this; // No custom rule to validate
}
@@ -168,6 +168,7 @@ public class FieldValidator {
case GepafinConstant.NON_EMPTY_TABLES:
try {
checkTableValidation(value, fieldId, contentResponseBean, errors);
} catch (Exception e) {
throw new RuntimeException(e);
@@ -186,6 +187,7 @@ public class FieldValidator {
.findFirst() // Get the first matching result
.orElse(null); // Default to null if no match
if (tableType!=null){
try {
Object object = PdfUtils.extractRows(value);;
@@ -224,31 +226,47 @@ public class FieldValidator {
return;
}
for (int rowIndex = 0; rowIndex < fieldValueList.size(); rowIndex++) {
Map<String, Object> field = fieldValueList.get(rowIndex);
// for (int rowIndex = 0; rowIndex < fieldValueList.size(); rowIndex++) {
// Map<String, Object> field = fieldValueList.get(rowIndex);
//
// boolean hasSingleNonNullPredefinedFalse = false;
//
// for (Map.Entry<String, Boolean> entry : stateFieldMap.entrySet()) {
// String stateKey = entry.getKey();
// Boolean isPredefinedFalse = Boolean.FALSE.equals(entry.getValue());
//
// if (isPredefinedFalse) {
// Object fieldValue = field.get(stateKey);
// if (fieldValue != null && !StringUtils.isEmpty(fieldValue.toString())) {
// hasSingleNonNullPredefinedFalse = true;
// break;
// }
// }
// }
//
// if (!hasSingleNonNullPredefinedFalse) {
// errors.add(MessageFormat.format(
// Translator.toLocale(GepafinConstant.VALIDATION_IN_TABLE),
// fieldId));
// break;
// }
//
// }
boolean hasSingleNonNullPredefinedFalse = false;
for (Map.Entry<String, Boolean> entry : stateFieldMap.entrySet()) {
String stateKey = entry.getKey();
Boolean isPredefinedFalse = Boolean.FALSE.equals(entry.getValue());
boolean hasAtLeastOneNonEmptyPredefinedFalse = fieldValueList.stream()
.anyMatch(field -> stateFieldMap.entrySet().stream()
.filter(entry -> Boolean.FALSE.equals(entry.getValue())) // Check only predefined: false fields
.anyMatch(entry -> {
Object fieldValue = field.get(entry.getKey());
return fieldValue != null && !StringUtils.isEmpty(fieldValue.toString());
})
);
if (isPredefinedFalse) {
Object fieldValue = field.get(stateKey);
if (fieldValue != null && !StringUtils.isEmpty(fieldValue.toString())) {
hasSingleNonNullPredefinedFalse = true;
break;
}
}
}
if (!hasSingleNonNullPredefinedFalse) {
if (!hasAtLeastOneNonEmptyPredefinedFalse) {
errors.add(MessageFormat.format(
Translator.toLocale(GepafinConstant.VALIDATION_IN_TABLE),
fieldId));
break;
}
}
} catch (Exception e) {