From 1877291fba05de2bce774b7554648cf77bb2869a Mon Sep 17 00:00:00 2001 From: Luca Frosini Date: Fri, 12 Mar 2021 12:44:01 +0100 Subject: [PATCH] Patched the upperBound calculation --- .../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 e8fc751..03545fc 100644 --- a/src/main/java/org/gcube/gcat/oldutils/Validator.java +++ b/src/main/java/org/gcube/gcat/oldutils/Validator.java @@ -147,8 +147,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, @@ -167,7 +171,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