From 2f5885579bd95e5ab6fc9af4d165c44e576b0dac Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Fri, 12 Mar 2021 12:52:19 +0100 Subject: [PATCH] Ported patch from branch feature/20965 --- .../org/gcube/gcat/oldutils/Validator.java | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/gcube/gcat/oldutils/Validator.java b/src/main/java/org/gcube/gcat/oldutils/Validator.java index 4d16ed2..df5633b 100644 --- a/src/main/java/org/gcube/gcat/oldutils/Validator.java +++ b/src/main/java/org/gcube/gcat/oldutils/Validator.java @@ -148,8 +148,12 @@ public class Validator { // now validate fields int metadataIndex = 0; + + Map metadataFieldMap = new HashMap<>(); for(MetadataField metadataField : metadataFields) { + metadataFieldMap.put(metadataField.getFieldName(), metadataField); + int categoryIdIndex = categoriesIds.indexOf(metadataField.getCategoryRef()); logger.debug("Found index for category " + metadataField.getCategoryRef() + " " + categoryIdIndex); List validCFs = validateAgainstMetadataField(metadataIndex, categoryIdIndex, @@ -168,7 +172,20 @@ public class Validator { Map.Entry entry = (Map.Entry) iteratorLowerBounds .next(); int lowerBound = entry.getValue(); - int upperBound = fieldsMandatoryUpperBoundMap.get(entry.getKey()); + + // int upperBound = fieldsMandatoryUpperBoundMap.get(entry.getKey()); + String maxOccurs = metadataFieldMap.get(entry.getKey()).getMaxOccurs(); + int upperBound = Integer.MAX_VALUE; + if(maxOccurs.compareTo("*")==0) { + upperBound = Integer.MAX_VALUE; + }else { + try { + upperBound = Integer.valueOf(maxOccurs); + }catch (Exception e) { + + } + } + int inserted = numberFieldsMandatorySameKeyMap.get(entry.getKey()); logger.info("Field with key '" + entry.getKey() + "' has been found " + inserted