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%2FJpaToscaPolicyType.java;h=14502c64c66ceb2b50212f03b0c39e12af4de77a;hb=938005505883cf7a636a8840e20e3dc8a0ad9176;hp=fc982965c08fc55cd7c8707327f96fa6d6188ac3;hpb=5eacd4c059625788887dd49672f739485aa32cf2;p=policy%2Fmodels.git diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyType.java index fc982965c..14502c64c 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyType.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyType.java @@ -2,8 +2,9 @@ * ============LICENSE_START======================================================= * ONAP Policy Model * ================================================================================ - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2019 Nordix Foundation. + * Copyright (C) 2019-2021 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2019-2020, 2023 Nordix Foundation. + * Modifications Copyright (C) 2022 Bell Canada. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -23,34 +24,28 @@ package org.onap.policy.models.tosca.simple.concepts; -import java.util.ArrayList; -import java.util.LinkedHashMap; +import jakarta.persistence.CollectionTable; +import jakarta.persistence.ElementCollection; +import jakarta.persistence.Entity; +import jakarta.persistence.Inheritance; +import jakarta.persistence.InheritanceType; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.Lob; +import jakarta.persistence.Table; +import java.io.Serial; import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import javax.persistence.ElementCollection; -import javax.persistence.Entity; -import javax.persistence.Inheritance; -import javax.persistence.InheritanceType; -import javax.persistence.Table; - import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; import lombok.NonNull; - -import org.onap.policy.common.utils.validation.Assertions; -import org.onap.policy.models.base.PfAuthorative; +import org.onap.policy.common.parameters.BeanValidationResult; +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.ToscaPolicyType; -import org.onap.policy.models.tosca.authorative.concepts.ToscaProperty; /** * Class to represent the policy type in TOSCA definition. @@ -64,24 +59,21 @@ import org.onap.policy.models.tosca.authorative.concepts.ToscaProperty; @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) @Data @EqualsAndHashCode(callSuper = true) -public class JpaToscaPolicyType extends JpaToscaEntityType implements PfAuthorative { +@NoArgsConstructor +public class JpaToscaPolicyType extends JpaToscaWithToscaProperties { + @Serial private static final long serialVersionUID = -563659852901842616L; @ElementCollection - private Map properties; - - @ElementCollection - private List targets; + @CollectionTable(joinColumns = { + @JoinColumn(name = "toscaPolicyTypeName", referencedColumnName = "name"), + @JoinColumn(name = "toscaPolicyTypeVersion", referencedColumnName = "version") + }) + private List<@NotNull @Valid PfConceptKey> targets; @ElementCollection - private List triggers; - - /** - * The Default Constructor creates a {@link JpaToscaPolicyType} object with a null key. - */ - public JpaToscaPolicyType() { - this(new PfConceptKey()); - } + @Lob + private List<@NotNull @Valid JpaToscaTrigger> triggers; /** * The Key Constructor creates a {@link JpaToscaPolicyType} object with the given concept key. @@ -99,6 +91,8 @@ public class JpaToscaPolicyType extends JpaToscaEntityType impl */ public JpaToscaPolicyType(final JpaToscaPolicyType copyConcept) { super(copyConcept); + this.targets = PfUtils.mapList(copyConcept.targets, PfConceptKey::new); + this.triggers = PfUtils.mapList(copyConcept.triggers, JpaToscaTrigger::new); } /** @@ -107,24 +101,16 @@ public class JpaToscaPolicyType extends JpaToscaEntityType impl * @param authorativeConcept the authorative concept to copy from */ public JpaToscaPolicyType(final ToscaPolicyType authorativeConcept) { - this.fromAuthorative(authorativeConcept); + super(authorativeConcept); } @Override public ToscaPolicyType toAuthorative() { - ToscaPolicyType toscaPolicyType = new ToscaPolicyType(); + var toscaPolicyType = new ToscaPolicyType(); super.setToscaEntity(toscaPolicyType); super.toAuthorative(); - if (properties != null) { - Map propertyMap = new LinkedHashMap<>(); - - for (Entry entry : properties.entrySet()) { - propertyMap.put(entry.getKey(), entry.getValue().toAuthorative()); - } - - toscaPolicyType.setProperties(propertyMap); - } + // TODO need to copy targets & triggers? return toscaPolicyType; } @@ -133,27 +119,13 @@ public class JpaToscaPolicyType extends JpaToscaEntityType impl public void fromAuthorative(final ToscaPolicyType toscaPolicyType) { super.fromAuthorative(toscaPolicyType); - // Set properties - if (toscaPolicyType.getProperties() != null) { - properties = new LinkedHashMap<>(); - for (Entry toscaPropertyEntry : toscaPolicyType.getProperties().entrySet()) { - JpaToscaProperty jpaProperty = new JpaToscaProperty(toscaPropertyEntry.getValue()); - jpaProperty.setKey(new PfReferenceKey(getKey(), toscaPropertyEntry.getKey())); - properties.put(toscaPropertyEntry.getKey(), jpaProperty); - } - } + // TODO need to copy targets & triggers? } @Override public List getKeys() { final List keyList = super.getKeys(); - if (properties != null) { - for (JpaToscaProperty property : properties.values()) { - keyList.addAll(property.getKeys()); - } - } - if (targets != null) { keyList.addAll(targets); } @@ -171,12 +143,6 @@ public class JpaToscaPolicyType extends JpaToscaEntityType impl public void clean() { super.clean(); - if (properties != null) { - for (JpaToscaProperty property : properties.values()) { - property.clean(); - } - } - if (targets != null) { for (PfConceptKey target : targets) { target.clean(); @@ -191,152 +157,28 @@ public class JpaToscaPolicyType extends JpaToscaEntityType impl } @Override - public PfValidationResult validate(@NonNull final PfValidationResult resultIn) { - PfValidationResult result = super.validate(resultIn); - - if (properties != null) { - result = validateProperties(result); - } - - if (targets != null) { - result = validateTargets(result); - } - - if (triggers != null) { - result = validateTriggers(result); - } - - return result; - } - - /** - * Validate the policy 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, - "policy property may not be null ")); - } else { - result = property.validate(result); - } - } - return result; - } - - /** - * Validate the policy targets. - * - * @param result The result of validations up to now - * @return the validation result - */ - private PfValidationResult validateTargets(final PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - for (PfConceptKey target : targets) { - if (target == null) { - result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, - "policy target may not be null ")); - } else { - result = target.validate(result); - } - } - return result; - } - - /** - * Validate the policy triggers. - * - * @param result The result of validations up to now - * @return the validation result - */ - private PfValidationResult validateTriggers(final PfValidationResult resultIn) { - PfValidationResult result = resultIn; - - for (JpaToscaTrigger trigger : triggers) { - if (trigger == null) { - result.addValidationMessage(new PfValidationMessage(getKey(), this.getClass(), ValidationResult.INVALID, - "policy trigger may not be null ")); - } else { - result = trigger.validate(result); - } - } - return result; + public BeanValidationResult validate(@NonNull String fieldName) { + return validateWithKey(fieldName); } @Override public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { - return -1; - } if (this == otherConcept) { return 0; } - if (getClass() != otherConcept.getClass()) { - return this.hashCode() - otherConcept.hashCode(); - } - - final JpaToscaPolicyType other = (JpaToscaPolicyType) otherConcept; - if (!super.equals(other)) { - return super.compareTo(other); - } - - int retVal = PfUtils.compareObjects(properties, other.properties); - if (retVal != 0) { - return retVal; - } - - retVal = PfUtils.compareObjects(targets, other.targets); - if (retVal != 0) { - return retVal; - } - - return PfUtils.compareObjects(triggers, other.triggers); - } - - @Override - public PfConcept copyTo(@NonNull PfConcept target) { - final Object copyObject = target; - Assertions.instanceOf(copyObject, PfConcept.class); - final JpaToscaPolicyType copy = ((JpaToscaPolicyType) copyObject); - super.copyTo(target); - - if (properties == null) { - copy.setProperties(null); - } else { - final Map newProperties = new LinkedHashMap<>(); - for (final Entry propertyEntry : properties.entrySet()) { - newProperties.put(propertyEntry.getKey(), new JpaToscaProperty(propertyEntry.getValue())); - } - copy.setProperties(newProperties); + int result = super.compareTo(otherConcept); + if (result != 0) { + return result; } - if (targets == null) { - copy.setTargets(null); - } else { - final List newTargets = new ArrayList<>(); - for (final PfConceptKey oldTarget : targets) { - newTargets.add(new PfConceptKey(oldTarget)); - } - copy.setTargets(newTargets); - } + final JpaToscaPolicyType other = (JpaToscaPolicyType) otherConcept; - if (triggers == null) { - copy.setTargets(null); - } else { - final List newTriggers = new ArrayList<>(); - for (final JpaToscaTrigger trigger : triggers) { - newTriggers.add(new JpaToscaTrigger(trigger)); - } - copy.setTriggers(newTriggers); + result = PfUtils.compareCollections(targets, other.targets); + if (result != 0) { + return result; } - return copy; + return PfUtils.compareCollections(triggers, other.triggers); } }