X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=catalog-model%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Fsdc%2Fbe%2Fmodel%2Ftosca%2Fconstraints%2FInRangeConstraint.java;h=2256f7d31196c653b306b597c1e8b962ba9c4f59;hb=be7ba43b95f13bb390cdd77a15c35072781e5546;hp=ad871e50875615d3110b57adaf327e4b158365a4;hpb=1336da0b9a713b9d6cf1e3f6ea709c50be43d4ab;p=sdc.git diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/InRangeConstraint.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/InRangeConstraint.java index ad871e5087..2256f7d311 100644 --- a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/InRangeConstraint.java +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/constraints/InRangeConstraint.java @@ -22,6 +22,10 @@ package org.openecomp.sdc.be.model.tosca.constraints; import com.google.common.collect.Lists; import java.util.List; import javax.validation.constraints.NotNull; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.NonNull; +import lombok.Setter; import org.openecomp.sdc.be.datatypes.enums.ConstraintType; import org.openecomp.sdc.be.model.PropertyConstraint; import org.openecomp.sdc.be.model.tosca.ToscaType; @@ -30,19 +34,20 @@ import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintValueDoN import org.openecomp.sdc.be.model.tosca.constraints.exception.ConstraintViolationException; import org.openecomp.sdc.be.model.tosca.constraints.exception.PropertyConstraintException; +@NoArgsConstructor +@Getter +@Setter public class InRangeConstraint extends AbstractPropertyConstraint { - private List inRange; + @NonNull + private List inRange; private Comparable min; private Comparable max; - public InRangeConstraint(List inRange) { + public InRangeConstraint(List inRange) { this.inRange = inRange; } - public InRangeConstraint() { - } - @Override public void initialize(ToscaType propertyType) throws ConstraintValueDoNotMatchPropertyTypeException { // Perform verification that the property type is supported for @@ -52,8 +57,8 @@ public class InRangeConstraint extends AbstractPropertyConstraint { if (inRange == null || inRange.size() != 2) { throw new ConstraintValueDoNotMatchPropertyTypeException("In range constraint must have two elements."); } - String minRawText = inRange.get(0); - String maxRawText = inRange.get(1); + String minRawText = String.valueOf(inRange.get(0)); + String maxRawText = String.valueOf(inRange.get(1)); if (!propertyType.isValidValue(minRawText)) { throw new ConstraintValueDoNotMatchPropertyTypeException( "Invalid min value for in range constraint [" + minRawText + "] as it does not follow the property type [" + propertyType + "]"); @@ -90,7 +95,7 @@ public class InRangeConstraint extends AbstractPropertyConstraint { } @NotNull - public String getRangeMinValue() { + public Object getRangeMinValue() { if (inRange != null) { return inRange.get(0); } else { @@ -98,16 +103,16 @@ public class InRangeConstraint extends AbstractPropertyConstraint { } } - public void setRangeMinValue(String minValue) { + public void setRangeMinValue(Object minValue) { if (inRange == null) { - inRange = Lists.newArrayList(minValue, ""); + inRange = Lists.newArrayList(minValue, null); } else { inRange.set(0, minValue); } } @NotNull - public String getRangeMaxValue() { + public Object getRangeMaxValue() { if (inRange != null) { return inRange.get(1); } else { @@ -115,9 +120,9 @@ public class InRangeConstraint extends AbstractPropertyConstraint { } } - public void setRangeMaxValue(String maxValue) { + public void setRangeMaxValue(Object maxValue) { if (inRange == null) { - inRange = Lists.newArrayList("", maxValue); + inRange = Lists.newArrayList(null, maxValue); } else { inRange.set(1, maxValue); } @@ -128,4 +133,32 @@ public class InRangeConstraint extends AbstractPropertyConstraint { return getErrorMessage(toscaType, e, propertyName, "%s property value must be between >= [%s] and <= [%s]", String.valueOf(min), String.valueOf(max)); } + + public boolean validateValueType(String propertyType) throws ConstraintValueDoNotMatchPropertyTypeException { + ToscaType toscaType = ToscaType.getToscaType(propertyType); + if (toscaType == null) { + throw new ConstraintValueDoNotMatchPropertyTypeException( + "inRange constraint has invalid values <" + inRange + "> property type is <" + propertyType + ">"); + } + if (inRange == null) { + throw new ConstraintValueDoNotMatchPropertyTypeException( + "inRange constraint has invalid value <> property type is <" + propertyType + ">"); + } + for (Object value : inRange) { + if (!toscaType.isValueTypeValid(value)) { + return false; + } + } + return true; + } + + public void changeConstraintValueTypeTo(String propertyType) throws ConstraintValueDoNotMatchPropertyTypeException { + ToscaType toscaType = ToscaType.getToscaType(propertyType); + try { + inRange.replaceAll(obj -> toscaType.convert(String.valueOf(obj))); + } catch (Exception e) { + throw new ConstraintValueDoNotMatchPropertyTypeException( + "inRange constraint has invalid values <" + inRange + "> property type is <" + propertyType + ">"); + } + } }