X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=common-be%2Fsrc%2Fmain%2Fjava%2Forg%2Fopenecomp%2Fsdc%2Fbe%2Fdatatypes%2Felements%2FPropertyDataDefinition.java;h=ee5cd0ec962177efd6421c49b7ed886d56830716;hb=1f7c6cccdd3a9544a7760db9a305403def4e5365;hp=e669d66c508e8ace83ea75f08755bba99ea24b22;hpb=4d97d5fac309ce0d66938e5ccd0349e2660d4e23;p=sdc.git diff --git a/common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/PropertyDataDefinition.java b/common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/PropertyDataDefinition.java index e669d66c50..ee5cd0ec96 100644 --- a/common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/PropertyDataDefinition.java +++ b/common-be/src/main/java/org/openecomp/sdc/be/datatypes/elements/PropertyDataDefinition.java @@ -7,9 +7,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -20,350 +20,329 @@ package org.openecomp.sdc.be.datatypes.elements; -import java.io.Serializable; +import static org.apache.commons.collections.CollectionUtils.isNotEmpty; + +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; - +import java.util.Set; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.MapUtils; import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields; import org.openecomp.sdc.be.datatypes.tosca.ToscaDataDefinition; +import org.openecomp.sdc.be.datatypes.tosca.ToscaGetFunctionType; + +@EqualsAndHashCode(callSuper = false) +@Data +public class PropertyDataDefinition extends ToscaDataDefinition { + + private boolean definition = false; + private Boolean hidden = Boolean.FALSE; + private String uniqueId; + // "boolean", "string", "float", "integer", "version" }) + private String type; + private Boolean required = Boolean.FALSE; + private String defaultValue; + private String description; + private SchemaDefinition schema; + private boolean password; + private String name; + private String value; + private String label; + private Boolean immutable = Boolean.FALSE; + private Boolean mappedToComponentProperty = Boolean.TRUE; + /** + * @deprecated use {@link #toscaFunction} instead + */ + @Deprecated + private ToscaGetFunctionType toscaGetFunctionType; + /** + * @deprecated use {@link #toscaFunction} instead + */ + @Deprecated + private ToscaGetFunctionDataDefinition toscaGetFunction; + private ToscaFunction toscaFunction; + private Collection subPropertyToscaFunctions; + + private String inputPath; + private String status; + private String inputId; + private String instanceUniqueId; + private String model; + private String propertyId; + private String parentPropertyType; + private String subPropertyInputPath; + private List annotations; + private List getInputValues; + private Boolean isDeclaredListInput = Boolean.FALSE; + private List getPolicyValues; + private List propertyConstraints; + private Map metadata; + private boolean userCreated; + + public PropertyDataDefinition() { + super(); + } + + public PropertyDataDefinition(Map pr) { + super(pr); + } -import fj.data.Either; + public PropertyDataDefinition(final PropertyDataDefinition propertyDataDefinition) { + super(); + this.setUniqueId(propertyDataDefinition.getUniqueId()); + this.setRequired(propertyDataDefinition.isRequired()); + this.setDefaultValue(propertyDataDefinition.getDefaultValue()); + this.setDefinition(propertyDataDefinition.getDefinition()); + this.setDescription(propertyDataDefinition.getDescription()); + if (propertyDataDefinition.getSchema() != null) { + this.setSchema(new SchemaDefinition(propertyDataDefinition.getSchema())); + } + this.setPassword(propertyDataDefinition.isPassword()); + this.setType(propertyDataDefinition.getType()); + this.setName(propertyDataDefinition.getName()); + this.setValue(propertyDataDefinition.getValue()); + this.setHidden(propertyDataDefinition.isHidden()); + this.setLabel(propertyDataDefinition.getLabel()); + this.setImmutable(propertyDataDefinition.isImmutable()); + this.setMappedToComponentProperty(propertyDataDefinition.isMappedToComponentProperty()); + this.setParentUniqueId(propertyDataDefinition.getParentUniqueId()); + this.setOwnerId(propertyDataDefinition.getOwnerId()); + this.setGetInputValues(propertyDataDefinition.getGetInputValues()); + this.setGetPolicyValues(propertyDataDefinition.getGetPolicyValues()); + this.setInputPath(propertyDataDefinition.getInputPath()); + this.setStatus(propertyDataDefinition.getStatus()); + this.setInputId(propertyDataDefinition.getInputId()); + this.setInstanceUniqueId(propertyDataDefinition.getInstanceUniqueId()); + this.setModel(propertyDataDefinition.getModel()); + this.setPropertyId(propertyDataDefinition.getPropertyId()); + this.setToscaGetFunction(propertyDataDefinition.getToscaGetFunction()); + this.setToscaGetFunctionType(propertyDataDefinition.getToscaGetFunctionType()); + this.setToscaFunction(propertyDataDefinition.getToscaFunction()); + this.parentPropertyType = propertyDataDefinition.getParentPropertyType(); + this.subPropertyInputPath = propertyDataDefinition.getSubPropertyInputPath(); + this.subPropertyToscaFunctions = propertyDataDefinition.getSubPropertyToscaFunctions(); + if (isNotEmpty(propertyDataDefinition.annotations)) { + this.setAnnotations(propertyDataDefinition.annotations); + } + if (MapUtils.isNotEmpty(propertyDataDefinition.getMetadata())) { + setMetadata(new HashMap<>(propertyDataDefinition.getMetadata())); + } + if (isNotEmpty(propertyDataDefinition.getPropertyConstraints())) { + setPropertyConstraints(new ArrayList<>(propertyDataDefinition.getPropertyConstraints())); + } + this.setIsDeclaredListInput(propertyDataDefinition.getIsDeclaredListInput()); + this.setUserCreated(propertyDataDefinition.isUserCreated()); + } + public boolean isDefinition() { + return true; + } -public class PropertyDataDefinition extends ToscaDataDefinition implements Serializable { + public boolean getDefinition() { + return definition; + } - /** - * - */ - private static final long serialVersionUID = 5798685557528432389L; + public Boolean isRequired() { + return required; + } - private String uniqueId; + public void setSchemaType(String schemaType) { + if (schema != null && schema.getProperty() != null) { + schema.getProperty().setType(schemaType); + } + } - // "boolean", "string", "float", "integer", "version" }) - private String type; + public String getSchemaType() { + if (schema != null && schema.getProperty() != null) { + return schema.getProperty().getType(); + } + return null; + } - private Boolean required = Boolean.FALSE; + public PropertyDataDefinition getSchemaProperty() { + if (schema != null) { + return schema.getProperty(); + } + return null; + } - protected boolean definition = false; + public ToscaGetFunctionType getToscaGetFunctionType() { + if (isToscaGetFunction() && toscaFunction != null) { + return ((ToscaGetFunctionDataDefinition) toscaFunction).getFunctionType(); + } - private String defaultValue; + return null; + } - private String description; + public Boolean isHidden() { + return hidden; + } - private SchemaDefinition schema; + public Boolean isImmutable() { + return immutable; + } - private boolean password; + public Boolean isMappedToComponentProperty() { + return mappedToComponentProperty; + } - private String name; + /** + * The resource id which this property belongs to + */ + public String getParentUniqueId() { + return getOwnerId(); + } - private String value; + public void setParentUniqueId(String parentUniqueId) { + setOwnerId(parentUniqueId); + } - private String label; - protected Boolean hidden = Boolean.FALSE; - private Boolean immutable = Boolean.FALSE; - - private String inputPath; - private String status; + public List safeGetGetPolicyValues() { + return CollectionUtils.isEmpty(getPolicyValues) ? new ArrayList<>() : getPolicyValues; + } + + public boolean typeEquals(Object obj) { + if (this == obj) { + return true; + } + if (obj == null) { + return false; + } + if (getClass() != obj.getClass()) { + return false; + } + PropertyDataDefinition other = (PropertyDataDefinition) obj; + if (this.getType() == null) { + return other.getType() == null; + } + if (!this.type.equals(other.type)) { + return false; + } + String thisSchemaType = this.getSchemaType(); + String otherSchemaType = other.getSchemaType(); + if (thisSchemaType == null) { + return otherSchemaType == null; + } + return thisSchemaType.equals(otherSchemaType); + } + + @Override + public Object getToscaPresentationValue(JsonPresentationFields field) { + switch (field) { + case NAME: + return name; + case UNIQUE_ID: + return uniqueId; + case PASSWORD: + return password; + case TYPE: + return type; + case DEFINITION: + return definition; + case VALUE: + return value; + case DEFAULT_VALUE: + return defaultValue; + default: + return super.getToscaPresentationValue(field); + } + } + + @Override + public void setToscaPresentationValue(JsonPresentationFields name, Object value) { + switch (name) { + case NAME: + setName((String) value); + break; + case UNIQUE_ID: + setUniqueId((String) value); + break; + case PASSWORD: + setPassword((Boolean) value); + break; + case TYPE: + setType((String) value); + break; + case DEFINITION: + setDefinition((Boolean) value); + break; + case VALUE: + setValue((String) value); + break; + case DEFAULT_VALUE: + setDefaultValue((String) value); + break; + default: + super.setToscaPresentationValue(name, value); + break; + } + } + + private boolean compareSchemaType(T other) { + return !"list".equals(type) && !"map".equals(type) || this.getSchema().getProperty().getType() + .equals(((PropertyDataDefinition) other).getSchema().getProperty().getType()); + } + + @Override + public T mergeFunction(T other, boolean allowDefaultValueOverride) { + if (this.getType() != null && this.getType().equals(other.getToscaPresentationValue(JsonPresentationFields.TYPE)) && compareSchemaType( + other)) { + other.setOwnerId(getOwnerId()); + if (allowDefaultValueOverride && getDefaultValue() != null && !getDefaultValue().isEmpty()) { + other.setToscaPresentationValue(JsonPresentationFields.DEFAULT_VALUE, getDefaultValue()); + } + return other; + } + return null; + } + + public void convertPropertyDataToInstancePropertyData() { + if (null != value) { + defaultValue = value; + } + } + + public boolean isGetInputProperty() { + return this.getGetInputValues() != null && !this.getGetInputValues().isEmpty(); + } - /** - * The resource id which this property belongs to - */ - private String parentUniqueId; - - - private List getInputValues; - - public PropertyDataDefinition() { - super(); - } - - public PropertyDataDefinition(Map pr) { - super(pr); - - } - - public PropertyDataDefinition(PropertyDataDefinition p) { - - super(); - this.setUniqueId(p.getUniqueId()); - this.setRequired(p.isRequired()); - this.setDefaultValue(p.getDefaultValue()); - this.setDescription(p.getDescription()); - this.setSchema(p.getSchema()); - this.setPassword(p.isPassword()); - this.setType(p.getType()); - this.setName(p.getName()); - this.setValue(p.getValue()); - this.setRequired(p.isRequired()); - this.setHidden(p.isHidden()); - this.setLabel(p.getLabel()); - this.setImmutable(p.isImmutable()); - this.setParentUniqueId(p.getParentUniqueId()); - this.setOwnerId(p.getOwnerId()); - this.setGetInputValues(p.getInputValues); - this.setInputPath(p.getInputPath()); - this.setStatus(p.getStatus()); - - } - - public String getInputPath() { - return inputPath; - } - - public void setInputPath(String inputPath) { - this.inputPath = inputPath; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - - // @Override - public boolean isDefinition() { - return true; - } - - public void setDefinition(boolean definition) { - this.definition = definition; - } - - public String getType() { - return type; - } - - public String getDefaultValue() { - return defaultValue; - } - - public void setDefaultValue(String defaultValue) { - this.defaultValue = defaultValue; - } - - public void setType(String type) { - this.type = type; - } - - public Boolean isRequired() { - return required; - } - - public void setRequired(Boolean required) { - this.required = required; - } - - public String getDescription() { - return description; - } - - public void setDescription(String description) { - this.description = description; - } - - public boolean isPassword() { - return password; - } - - public void setPassword(boolean password) { - this.password = password; - } - - public String getUniqueId() { - return uniqueId; - } - - public void setUniqueId(String uniqueId) { - this.uniqueId = uniqueId; - } - - public SchemaDefinition getSchema() { - return schema; - } - - public void setSchema(SchemaDefinition entrySchema) { - this.schema = entrySchema; - } - - public String getLabel() { - return label; - } - - public void setLabel(String label) { - this.label = label; - } - - public Boolean isHidden() { - return hidden; - } - - public void setHidden(Boolean hidden) { - this.hidden = hidden; - } - - public Boolean isImmutable() { - return immutable; - } - - public void setImmutable(Boolean immutable) { - this.immutable = immutable; - } - - - public String getParentUniqueId() { - return getOwnerId(); - } - - public void setParentUniqueId(String parentUniqueId) { - setOwnerId(parentUniqueId); - } - - - public List getGetInputValues() { - return getInputValues; - } - - public void setGetInputValues(List getInputValues) { - this.getInputValues = getInputValues; - } - - public String getStatus() { - return status; + public void setAnnotations(List newAnnotations) { + Set annotationSet = isNotEmpty(newAnnotations) ? new HashSet<>(newAnnotations) : new HashSet<>(); + //We would to prioritize the new valid annotations over the old ones if the same one existed. + if (this.annotations != null) { + annotationSet.addAll(this.annotations); + } + this.annotations = new ArrayList<>(annotationSet); + setToscaPresentationValue(JsonPresentationFields.ANNOTATIONS, this.annotations); } - public void setStatus(String status) { - this.status = status; - } - - @Override - public String toString() { - return "PropertyDataDefinition [uniqueId=" + uniqueId + ", type=" + type + ", required=" + required + ", defaultValue=" + defaultValue + ", description=" + description + ", entrySchema=" + schema + ", parentUniqueId=" + parentUniqueId + ", password=" + password + "]"; - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((defaultValue == null) ? 0 : defaultValue.hashCode()); - result = prime * result + (definition ? 1231 : 1237); - result = prime * result + ((description == null) ? 0 : description.hashCode()); - result = prime * result + (password ? 1231 : 1237); - result = prime * result + ((required == null) ? 0 : required.hashCode()); - result = prime * result + ((schema == null) ? 0 : schema.hashCode()); - result = prime * result + ((type == null) ? 0 : type.hashCode()); - result = prime * result + ((uniqueId == null) ? 0 : uniqueId.hashCode()); - result = prime * result + ((parentUniqueId == null) ? 0 : parentUniqueId.hashCode()); - result = prime * result + ((status == null) ? 0 : status.hashCode()); - return result; - } - - @Override - public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - PropertyDataDefinition other = (PropertyDataDefinition) obj; - if (defaultValue == null) { - if (other.defaultValue != null) - return false; - } else if (!defaultValue.equals(other.defaultValue)) - return false; - if (definition != other.definition) - return false; - if (description == null) { - if (other.description != null) - return false; - } else if (!description.equals(other.description)) - return false; - if (password != other.password) - return false; - if (required == null) { - if (other.required != null) - return false; - } else if (!required.equals(other.required)) - return false; - if (schema == null) { - if (other.schema != null) - return false; - } else if (!schema.equals(other.schema)) - return false; - if (type == null) { - if (other.type != null) - return false; - } else if (!type.equals(other.type)) - return false; - if (parentUniqueId == null) { - if (other.parentUniqueId != null) - return false; - } else if (!parentUniqueId.equals(other.parentUniqueId)) - return false; - if (uniqueId == null) { - if (other.uniqueId != null) - return false; - } else if (!uniqueId.equals(other.uniqueId)) - return false; - if (status == null) { - if (other.status != null) - return false; - } else if (!status.equals(other.status)) - return false; - return true; - } - - @Override - public Object getToscaPresentationValue(JsonPresentationFields field) { - switch (field) { - case NAME: - return name; - case UNIQUE_ID: - return uniqueId; - case PASSWORD: - return password; - case TYPE: - return type; - case DEFINITION: - return definition; - case VALUE: - return value; - case DEFAULT_VALUE: - return defaultValue; - default: - return super.getToscaPresentationValue(field); - } - } - - private boolean compareSchemaType(T other){ - return !"list".equals(type) && !"map".equals(type) || this.getSchema().getProperty().getType().equals(((PropertyDataDefinition)other).getSchema().getProperty().getType()); - } - - - @Override - public T mergeFunction(T other, boolean allowDefaultValueOverride){ - if(this.getType().equals(other.getToscaPresentationValue(JsonPresentationFields.TYPE)) && compareSchemaType(other)){ - other.setOwnerId(getOwnerId()); - if(allowDefaultValueOverride) - other.setToscaPresentationValue(JsonPresentationFields.DEFAULT_VALUE, getDefaultValue()); - return other; - } - return null; - } - + public List getAnnotations() { + return (List) getToscaPresentationValue(JsonPresentationFields.ANNOTATIONS); + } + @JsonIgnoreProperties + public boolean isToscaFunction() { + return this.toscaGetFunctionType != null || this.toscaFunction != null; + } + @JsonIgnoreProperties + public boolean isToscaGetFunction() { + return this.toscaFunction != null + && (this.toscaFunction.getType() == ToscaFunctionType.GET_ATTRIBUTE + || this.toscaFunction.getType() == ToscaFunctionType.GET_INPUT + || this.toscaFunction.getType() == ToscaFunctionType.GET_PROPERTY); + } + + @JsonIgnoreProperties + public boolean hasToscaFunction() { + return this.toscaFunction != null; + } }