X-Git-Url: https://gerrit.onap.org/r/gitweb?a=blobdiff_plain;f=models-tosca%2Fsrc%2Fmain%2Fjava%2Forg%2Fonap%2Fpolicy%2Fmodels%2Ftosca%2Fsimple%2Fconcepts%2FJpaToscaDataType.java;h=107fb3abc46f88ed0057449b3c006df58248364c;hb=938005505883cf7a636a8840e20e3dc8a0ad9176;hp=a44d7654cd99e57ec6505247a9d9cc5c50f9bef0;hpb=ba3a17c58088a016b3ed2948b0c33502fdbc84ec;p=policy%2Fmodels.git diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataType.java index a44d7654c..107fb3abc 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataType.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataType.java @@ -2,8 +2,8 @@ * ============LICENSE_START======================================================= * ONAP Policy Model * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2019-2020 Nordix Foundation. + * Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019-2020, 2023 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,40 +23,24 @@ package org.onap.policy.models.tosca.simple.concepts; +import jakarta.persistence.ElementCollection; +import jakarta.persistence.Entity; +import jakarta.persistence.Inheritance; +import jakarta.persistence.InheritanceType; +import jakarta.persistence.Table; +import java.io.Serial; import java.util.ArrayList; -import java.util.Collection; -import java.util.LinkedHashMap; -import java.util.LinkedHashSet; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import javax.persistence.ElementCollection; -import javax.persistence.Entity; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.Lob; -import javax.persistence.Table; - import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import lombok.NonNull; - -import org.apache.commons.collections4.CollectionUtils; -import org.onap.policy.models.base.PfAuthorative; +import org.onap.policy.common.parameters.annotations.NotNull; +import org.onap.policy.common.parameters.annotations.Valid; import org.onap.policy.models.base.PfConcept; import org.onap.policy.models.base.PfConceptKey; -import org.onap.policy.models.base.PfKey; -import org.onap.policy.models.base.PfReferenceKey; import org.onap.policy.models.base.PfUtils; -import org.onap.policy.models.base.PfValidationMessage; -import org.onap.policy.models.base.PfValidationResult; -import org.onap.policy.models.base.PfValidationResult.ValidationResult; -import org.onap.policy.models.tosca.authorative.concepts.ToscaConstraint; import org.onap.policy.models.tosca.authorative.concepts.ToscaDataType; -import org.onap.policy.models.tosca.authorative.concepts.ToscaProperty; -import org.onap.policy.models.tosca.utils.ToscaUtils; /** * Class to represent custom data type in TOSCA definition. @@ -69,22 +53,13 @@ import org.onap.policy.models.tosca.utils.ToscaUtils; @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) @Data @EqualsAndHashCode(callSuper = true) -public class JpaToscaDataType extends JpaToscaEntityType implements PfAuthorative { +@NoArgsConstructor +public class JpaToscaDataType extends JpaToscaWithToscaProperties { + @Serial private static final long serialVersionUID = -3922690413436539164L; @ElementCollection - private List constraints = new ArrayList<>(); - - @ElementCollection - @Lob - private Map properties = new LinkedHashMap<>(); - - /** - * The Default Constructor creates a {@link JpaToscaDataType} object with a null key. - */ - public JpaToscaDataType() { - this(new PfConceptKey()); - } + private List<@NotNull @Valid JpaToscaConstraint> constraints; /** * The Key Constructor creates a {@link JpaToscaDataType} object with the given concept key. @@ -104,7 +79,6 @@ public class JpaToscaDataType extends JpaToscaEntityType implemen super(copyConcept); // Constraints are immutable this.constraints = (copyConcept.constraints != null ? new ArrayList<>(copyConcept.constraints) : null); - this.properties = PfUtils.mapMap(copyConcept.properties, JpaToscaProperty::new); } /** @@ -113,34 +87,16 @@ public class JpaToscaDataType extends JpaToscaEntityType implemen * @param authorativeConcept the authorative concept to copy from */ public JpaToscaDataType(final ToscaDataType authorativeConcept) { - this.fromAuthorative(authorativeConcept); + super(authorativeConcept); } @Override public ToscaDataType toAuthorative() { - ToscaDataType toscaDataType = new ToscaDataType(); + var toscaDataType = new ToscaDataType(); super.setToscaEntity(toscaDataType); super.toAuthorative(); - if (constraints != null) { - List toscaConstraints = new ArrayList<>(); - - for (JpaToscaConstraint constraint : constraints) { - toscaConstraints.add(constraint.toAuthorative()); - } - - toscaDataType.setConstraints(toscaConstraints); - } - - if (properties != null) { - Map propertyMap = new LinkedHashMap<>(); - - for (Entry entry : properties.entrySet()) { - propertyMap.put(entry.getKey(), entry.getValue().toAuthorative()); - } - - toscaDataType.setProperties(propertyMap); - } + toscaDataType.setConstraints(PfUtils.mapList(constraints, JpaToscaConstraint::toAuthorative)); return toscaDataType; } @@ -149,153 +105,22 @@ public class JpaToscaDataType extends JpaToscaEntityType implemen public void fromAuthorative(final ToscaDataType toscaDataType) { super.fromAuthorative(toscaDataType); - if (toscaDataType.getConstraints() != null) { - constraints = new ArrayList<>(); - - for (ToscaConstraint toscaConstraint : toscaDataType.getConstraints()) { - constraints.add(JpaToscaConstraint.newInstance(toscaConstraint)); - } - } - - if (toscaDataType.getProperties() != null) { - properties = new LinkedHashMap<>(); - for (Entry toscaPropertyEntry : toscaDataType.getProperties().entrySet()) { - JpaToscaProperty jpaProperty = new JpaToscaProperty(toscaPropertyEntry.getValue()); - jpaProperty.setKey(new PfReferenceKey(getKey(), toscaPropertyEntry.getKey())); - properties.put(toscaPropertyEntry.getKey(), jpaProperty); - } - } - } - - @Override - public List getKeys() { - final List keyList = super.getKeys(); - - if (properties != null) { - for (JpaToscaProperty property : properties.values()) { - keyList.addAll(property.getKeys()); - } - } - - return keyList; - } - - @Override - public void clean() { - super.clean(); - - if (properties != null) { - for (JpaToscaProperty property : properties.values()) { - property.clean(); - } - } - } - - @Override - public PfValidationResult validate(final PfValidationResult resultIn) { - PfValidationResult result = super.validate(resultIn); - - if (constraints != null) { - result = validateConstraints(result); - } - - if (properties != null) { - result = validateProperties(result); - } - - return result; - } - - /** - * Validate the constraints. - * - * @param result The result of validations up to now - * @return the validation result - */ - private PfValidationResult validateConstraints(@NonNull final PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - for (JpaToscaConstraint constraint : constraints) { - if (constraint == null) { - result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, - "data type constraint may not be null ")); - } - } - return result; - } - - /** - * Validate the properties. - * - * @param result The result of validations up to now - * @return the validation result - */ - private PfValidationResult validateProperties(final PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - for (JpaToscaProperty property : properties.values()) { - if (property == null) { - result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, - "data type property may not be null ")); - } else { - result = property.validate(result); - } - } - return result; + constraints = PfUtils.mapList(toscaDataType.getConstraints(), JpaToscaConstraint::newInstance); } @Override public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { - return -1; - } if (this == otherConcept) { return 0; } - if (getClass() != otherConcept.getClass()) { - return getClass().getName().compareTo(otherConcept.getClass().getName()); - } - final JpaToscaDataType other = (JpaToscaDataType) otherConcept; - if (!super.equals(other)) { - return super.compareTo(other); - } - - int result = PfUtils.compareObjects(constraints, other.constraints); + int result = super.compareTo(otherConcept); if (result != 0) { return result; } - result = PfUtils.compareObjects(properties, other.properties); - if (result != 0) { - return result; - } - - return 0; - } - - /** - * Get the data types referenced in a data type. - * - * @return the data types referenced in a data type - */ - public Collection getReferencedDataTypes() { - if (properties == null) { - return CollectionUtils.emptyCollection(); - } - - Set referencedDataTypes = new LinkedHashSet<>(); - - for (JpaToscaProperty property : properties.values()) { - referencedDataTypes.add(property.getType()); - - if (property.getEntrySchema() != null) { - referencedDataTypes.add(property.getEntrySchema().getType()); - } - } - - referencedDataTypes.removeAll(ToscaUtils.getPredefinedDataTypes()); + final JpaToscaDataType other = (JpaToscaDataType) otherConcept; - return referencedDataTypes; + return PfUtils.compareCollections(constraints, other.constraints); } }