package org.openecomp.sdc.be.datatypes.elements;
-import org.apache.commons.collections.CollectionUtils;
-import org.openecomp.sdc.be.datatypes.enums.JsonPresentationFields;
-import org.openecomp.sdc.be.datatypes.tosca.ToscaDataDefinition;
+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.Set;
import lombok.Data;
import lombok.EqualsAndHashCode;
-
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.MapUtils;
-import static org.apache.commons.collections.CollectionUtils.isNotEmpty;
+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;
-
- protected boolean definition = false;
-
private String defaultValue;
-
private String description;
-
private SchemaDefinition schema;
-
private boolean password;
-
private String name;
-
private String value;
-
private String label;
- protected Boolean hidden = Boolean.FALSE;
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<SubPropertyToscaFunction> 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<Annotation> annotations;
- /**
- * The resource id which this property belongs to
- */
- private String parentUniqueId;
-
private List<GetInputValueDataDefinition> getInputValues;
-
private Boolean isDeclaredListInput = Boolean.FALSE;
-
private List<GetPolicyValueDataDefinition> getPolicyValues;
-
private List<String> propertyConstraints;
-
private Map<String, String> metadata;
+ private boolean userCreated;
public PropertyDataDefinition() {
super();
super(pr);
}
- public PropertyDataDefinition(PropertyDataDefinition propertyDataDefinition) {
+ 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());
- this.setSchema(propertyDataDefinition.getSchema());
+ 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.setRequired(propertyDataDefinition.isRequired());
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.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())){
+ if (isNotEmpty(propertyDataDefinition.getPropertyConstraints())) {
setPropertyConstraints(new ArrayList<>(propertyDataDefinition.getPropertyConstraints()));
}
this.setIsDeclaredListInput(propertyDataDefinition.getIsDeclaredListInput());
+ this.setUserCreated(propertyDataDefinition.isUserCreated());
}
- // @Override
public boolean isDefinition() {
return true;
}
if (schema != null) {
return schema.getProperty();
}
+ return null;
+ }
+
+ public ToscaGetFunctionType getToscaGetFunctionType() {
+ if (isToscaGetFunction() && toscaFunction != null) {
+ return ((ToscaGetFunctionDataDefinition) toscaFunction).getFunctionType();
+ }
return null;
}
return immutable;
}
+ public Boolean isMappedToComponentProperty() {
+ return mappedToComponentProperty;
+ }
+
+ /**
+ * The resource id which this property belongs to
+ */
public String getParentUniqueId() {
return getOwnerId();
}
}
private <T extends ToscaDataDefinition> boolean compareSchemaType(T other) {
- return !"list".equals(type) && !"map".equals(type) || this.getSchema().getProperty().getType().equals(((PropertyDataDefinition) other).getSchema().getProperty().getType());
+ return !"list".equals(type) && !"map".equals(type) || this.getSchema().getProperty().getType()
+ .equals(((PropertyDataDefinition) other).getSchema().getProperty().getType());
}
@Override
public <T extends ToscaDataDefinition> T mergeFunction(T other, boolean allowDefaultValueOverride) {
- if (this.getType() != null
- && this.getType().equals(other.getToscaPresentationValue(JsonPresentationFields.TYPE))
- && compareSchemaType(other)) {
+ if (this.getType() != null && this.getType().equals(other.getToscaPresentationValue(JsonPresentationFields.TYPE)) && compareSchemaType(
+ other)) {
other.setOwnerId(getOwnerId());
- if (allowDefaultValueOverride
- && getDefaultValue() != null
- && !getDefaultValue().isEmpty()) {
+ if (allowDefaultValueOverride && getDefaultValue() != null && !getDefaultValue().isEmpty()) {
other.setToscaPresentationValue(JsonPresentationFields.DEFAULT_VALUE, getDefaultValue());
}
return other;
if (this.annotations != null) {
annotationSet.addAll(this.annotations);
}
-
this.annotations = new ArrayList<>(annotationSet);
setToscaPresentationValue(JsonPresentationFields.ANNOTATIONS, this.annotations);
}
public List<Annotation> getAnnotations() {
return (List<Annotation>) 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;
+ }
+
}