diff options
Diffstat (limited to 'models/src/main')
11 files changed, 239 insertions, 180 deletions
diff --git a/models/src/main/java/org/onap/policy/clamp/models/acm/concepts/ParticipantInformation.java b/models/src/main/java/org/onap/policy/clamp/models/acm/concepts/ParticipantInformation.java new file mode 100644 index 000000000..c2f61aa74 --- /dev/null +++ b/models/src/main/java/org/onap/policy/clamp/models/acm/concepts/ParticipantInformation.java @@ -0,0 +1,52 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021 Nordix Foundation. + * ================================================================================ + * 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. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.clamp.models.acm.concepts; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +/** + * Class to represent details of a running participant instance. + */ +@NoArgsConstructor +@Data +@EqualsAndHashCode +public class ParticipantInformation { + @NonNull + private Participant participant; + + private Map<UUID, AutomationCompositionElementDefinition> acElementDefinitionMap = new HashMap<>(); + private Map<UUID, AutomationCompositionElement> acElementInstanceMap = new HashMap<>(); + + /** + * Copy constructor. + * + * @param otherInfo the participant information to copy from + */ + public ParticipantInformation(ParticipantInformation otherInfo) { + this.participant = otherInfo.participant; + } +} diff --git a/models/src/main/java/org/onap/policy/clamp/models/acm/messages/rest/commissioning/AcTypeStateUpdate.java b/models/src/main/java/org/onap/policy/clamp/models/acm/messages/rest/commissioning/AcTypeStateUpdate.java new file mode 100644 index 000000000..b5f242804 --- /dev/null +++ b/models/src/main/java/org/onap/policy/clamp/models/acm/messages/rest/commissioning/AcTypeStateUpdate.java @@ -0,0 +1,34 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021-2022 Nordix Foundation. + * ================================================================================ + * 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. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.clamp.models.acm.messages.rest.commissioning; + +import lombok.Data; + +@Data +public class AcTypeStateUpdate { + public enum PrimeOrder { + NONE, + PRIME, + DEPRIME + } + + private PrimeOrder primeOrder; +} diff --git a/models/src/main/java/org/onap/policy/clamp/models/acm/messages/rest/instantiation/AcInstanceStateUpdate.java b/models/src/main/java/org/onap/policy/clamp/models/acm/messages/rest/instantiation/AcInstanceStateUpdate.java new file mode 100644 index 000000000..ed83a494a --- /dev/null +++ b/models/src/main/java/org/onap/policy/clamp/models/acm/messages/rest/instantiation/AcInstanceStateUpdate.java @@ -0,0 +1,41 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2021-2022 Nordix Foundation. + * ================================================================================ + * 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. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.clamp.models.acm.messages.rest.instantiation; + +import lombok.Data; + +@Data +public class AcInstanceStateUpdate { + private enum DeployOrder { + NONE, + UNDEPLOY, + DEPLOYED + } + + private enum LockOrder { + NONE, + UNLOCK, + LOCK + } + + private DeployOrder deployOrder; + private LockOrder lockOrder; +} diff --git a/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/concepts/JpaAutomationComposition.java b/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/concepts/JpaAutomationComposition.java index b87bad4e0..f9cc880d0 100644 --- a/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/concepts/JpaAutomationComposition.java +++ b/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/concepts/JpaAutomationComposition.java @@ -20,19 +20,21 @@ package org.onap.policy.clamp.models.acm.persistence.concepts; +import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; -import java.util.Map; import java.util.UUID; import javax.persistence.CascadeType; import javax.persistence.Column; -import javax.persistence.EmbeddedId; import javax.persistence.Entity; import javax.persistence.FetchType; +import javax.persistence.ForeignKey; +import javax.persistence.Id; import javax.persistence.Index; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; -import javax.persistence.ManyToMany; +import javax.persistence.JoinColumn; +import javax.persistence.OneToMany; import javax.persistence.Table; import lombok.Data; import lombok.EqualsAndHashCode; @@ -44,12 +46,9 @@ import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionState; import org.onap.policy.common.parameters.annotations.NotNull; import org.onap.policy.common.parameters.annotations.Valid; import org.onap.policy.models.base.PfAuthorative; -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.validation.annotations.VerifyKey; +import org.onap.policy.models.base.Validated; /** * Class to represent a automation composition in the database. @@ -61,17 +60,20 @@ import org.onap.policy.models.base.validation.annotations.VerifyKey; @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) @Data @EqualsAndHashCode(callSuper = false) -public class JpaAutomationComposition extends PfConcept implements PfAuthorative<AutomationComposition> { - private static final long serialVersionUID = -4725410933242154805L; +public class JpaAutomationComposition extends Validated + implements PfAuthorative<AutomationComposition>, Comparable<JpaAutomationComposition> { - @Column + @Id @NotNull private String instanceId; - @EmbeddedId - @VerifyKey @NotNull - private PfConceptKey key; + @Column + private String name; + + @NotNull + @Column + private String version; @Column @NotNull @@ -88,20 +90,20 @@ public class JpaAutomationComposition extends PfConcept implements PfAuthorative @Column private String description; - @Column + @Column(columnDefinition = "TINYINT DEFAULT 1") private Boolean primed; - @ManyToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) @NotNull - private Map<@NotNull UUID, @NotNull @Valid JpaAutomationCompositionElement> elements; - // @formatter:on + @OneToMany(fetch = FetchType.EAGER, cascade = CascadeType.ALL) + @JoinColumn(name = "instanceId", foreignKey = @ForeignKey(name = "ac_element_fk")) + private List<@NotNull @Valid JpaAutomationCompositionElement> elements; /** * The Default Constructor creates a {@link JpaAutomationComposition} object with a null key. */ public JpaAutomationComposition() { this(UUID.randomUUID().toString(), new PfConceptKey(), UUID.randomUUID().toString(), - AutomationCompositionState.UNINITIALISED, new LinkedHashMap<>()); + AutomationCompositionState.UNINITIALISED, new ArrayList<>()); } /** @@ -115,9 +117,10 @@ public class JpaAutomationComposition extends PfConcept implements PfAuthorative */ public JpaAutomationComposition(@NonNull final String instanceId, @NonNull final PfConceptKey key, @NonNull final String compositionId, @NonNull final AutomationCompositionState state, - @NonNull final Map<UUID, JpaAutomationCompositionElement> elements) { + @NonNull final List<JpaAutomationCompositionElement> elements) { this.instanceId = instanceId; - this.key = key; + this.name = key.getName(); + this.version = key.getVersion(); this.compositionId = compositionId; this.state = state; this.elements = elements; @@ -129,15 +132,14 @@ public class JpaAutomationComposition extends PfConcept implements PfAuthorative * @param copyConcept the concept to copy from */ public JpaAutomationComposition(@NonNull final JpaAutomationComposition copyConcept) { - super(copyConcept); this.instanceId = copyConcept.instanceId; - this.key = new PfConceptKey(copyConcept.key); + this.name = copyConcept.name; + this.version = copyConcept.version; this.compositionId = copyConcept.compositionId; this.state = copyConcept.state; this.orderedState = copyConcept.orderedState; this.description = copyConcept.description; - this.elements = - PfUtils.mapMap(copyConcept.elements, JpaAutomationCompositionElement::new, new LinkedHashMap<>(0)); + this.elements = PfUtils.mapList(copyConcept.elements, JpaAutomationCompositionElement::new); this.primed = copyConcept.primed; } @@ -155,15 +157,17 @@ public class JpaAutomationComposition extends PfConcept implements PfAuthorative var automationComposition = new AutomationComposition(); automationComposition.setInstanceId(UUID.fromString(instanceId)); - automationComposition.setName(getKey().getName()); - automationComposition.setVersion(getKey().getVersion()); + automationComposition.setName(name); + automationComposition.setVersion(version); automationComposition.setCompositionId(UUID.fromString(compositionId)); automationComposition.setState(state); automationComposition.setOrderedState(orderedState != null ? orderedState : state.asOrderedState()); automationComposition.setDescription(description); - automationComposition.setElements( - PfUtils.mapMap(elements, JpaAutomationCompositionElement::toAuthorative, new LinkedHashMap<>(0))); automationComposition.setPrimed(primed); + automationComposition.setElements(new LinkedHashMap<>(this.elements.size())); + for (var element : this.elements) { + automationComposition.getElements().put(UUID.fromString(element.getElementId()), element.toAuthorative()); + } return automationComposition; } @@ -171,66 +175,43 @@ public class JpaAutomationComposition extends PfConcept implements PfAuthorative @Override public void fromAuthorative(@NonNull final AutomationComposition automationComposition) { this.instanceId = automationComposition.getInstanceId().toString(); - if (this.key == null || this.getKey().isNullKey()) { - this.setKey(new PfConceptKey(automationComposition.getName(), automationComposition.getVersion())); - } - + this.name = automationComposition.getName(); + this.version = automationComposition.getVersion(); this.compositionId = automationComposition.getCompositionId().toString(); this.state = automationComposition.getState(); this.orderedState = automationComposition.getOrderedState(); this.description = automationComposition.getDescription(); this.primed = automationComposition.getPrimed(); - this.elements = new LinkedHashMap<>(automationComposition.getElements().size()); + this.elements = new ArrayList<>(automationComposition.getElements().size()); for (var elementEntry : automationComposition.getElements().entrySet()) { - var jpaAutomationCompositionElement = new JpaAutomationCompositionElement(); - jpaAutomationCompositionElement - .setKey(new PfReferenceKey(getKey(), elementEntry.getValue().getId().toString())); + var jpaAutomationCompositionElement = + new JpaAutomationCompositionElement(elementEntry.getKey().toString(), this.instanceId); jpaAutomationCompositionElement.fromAuthorative(elementEntry.getValue()); - this.elements.put(elementEntry.getKey(), jpaAutomationCompositionElement); + this.elements.add(jpaAutomationCompositionElement); } } @Override - public List<PfKey> getKeys() { - var keyList = getKey().getKeys(); - - for (var element : elements.values()) { - keyList.addAll(element.getKeys()); - } - - return keyList; - } - - @Override - public void clean() { - key.clean(); - description = (description == null ? null : description.trim()); - - for (var element : elements.values()) { - element.clean(); - } - } - - @Override - public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { + public int compareTo(final JpaAutomationComposition other) { + if (other == null) { return -1; } - if (this == otherConcept) { + if (this == other) { return 0; } - if (getClass() != otherConcept.getClass()) { - return this.getClass().getName().compareTo(otherConcept.getClass().getName()); - } - final var other = (JpaAutomationComposition) otherConcept; var result = ObjectUtils.compare(instanceId, other.instanceId); if (result != 0) { return result; } - result = key.compareTo(other.key); + result = ObjectUtils.compare(name, other.name); + if (result != 0) { + return result; + } + + result = ObjectUtils.compare(version, other.version); if (result != 0) { return result; } diff --git a/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/concepts/JpaAutomationCompositionElement.java b/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/concepts/JpaAutomationCompositionElement.java index d8e4237b7..79576f6eb 100644 --- a/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/concepts/JpaAutomationCompositionElement.java +++ b/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/concepts/JpaAutomationCompositionElement.java @@ -23,15 +23,14 @@ package org.onap.policy.clamp.models.acm.persistence.concepts; import java.util.LinkedHashMap; -import java.util.List; import java.util.Map; import java.util.UUID; import java.util.function.UnaryOperator; import javax.persistence.AttributeOverride; import javax.persistence.Column; import javax.persistence.Convert; -import javax.persistence.EmbeddedId; import javax.persistence.Entity; +import javax.persistence.Id; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; import javax.persistence.Lob; @@ -46,11 +45,9 @@ import org.onap.policy.clamp.models.acm.concepts.AutomationCompositionState; import org.onap.policy.common.parameters.annotations.NotNull; import org.onap.policy.common.parameters.annotations.Valid; import org.onap.policy.models.base.PfAuthorative; -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.Validated; import org.onap.policy.models.base.validation.annotations.VerifyKey; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; @@ -64,13 +61,16 @@ import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; @Inheritance(strategy = InheritanceType.TABLE_PER_CLASS) @Data @EqualsAndHashCode(callSuper = false) -public class JpaAutomationCompositionElement extends PfConcept implements PfAuthorative<AutomationCompositionElement> { - private static final long serialVersionUID = -1791732273187890213L; +public class JpaAutomationCompositionElement extends Validated + implements PfAuthorative<AutomationCompositionElement>, Comparable<JpaAutomationCompositionElement> { - @EmbeddedId - @VerifyKey + @Id @NotNull - private PfReferenceKey key; + private String elementId; + + @Column + @NotNull + private String instanceId; // @formatter:off @VerifyKey @@ -112,29 +112,33 @@ public class JpaAutomationCompositionElement extends PfConcept implements PfAuth * The Default Constructor creates a {@link JpaAutomationCompositionElement} object with a null key. */ public JpaAutomationCompositionElement() { - this(new PfReferenceKey()); + this(UUID.randomUUID().toString(), UUID.randomUUID().toString()); } /** * The Key Constructor creates a {@link JpaAutomationCompositionElement} object with the given concept key. * - * @param key the key + * @param elementId The id of the automation composition instance Element + * @param instanceId The id of the automation composition instance */ - public JpaAutomationCompositionElement(@NonNull final PfReferenceKey key) { - this(key, new PfConceptKey(), new PfConceptKey(), AutomationCompositionState.UNINITIALISED); + public JpaAutomationCompositionElement(@NonNull final String elementId, @NonNull final String instanceId) { + this(elementId, instanceId, new PfConceptKey(), new PfConceptKey(), AutomationCompositionState.UNINITIALISED); } /** * The Key Constructor creates a {@link JpaAutomationCompositionElement} object with all mandatory fields. * - * @param key the key + * @param elementId The id of the automation composition instance Element + * @param instanceId The id of the automation composition instance * @param definition the TOSCA definition of the automation composition element * @param participantType the TOSCA definition of the participant running the automation composition element * @param state the state of the automation composition */ - public JpaAutomationCompositionElement(@NonNull final PfReferenceKey key, @NonNull final PfConceptKey definition, - @NonNull final PfConceptKey participantType, @NonNull final AutomationCompositionState state) { - this.key = key; + public JpaAutomationCompositionElement(@NonNull final String elementId, @NonNull final String instanceId, + @NonNull final PfConceptKey definition, @NonNull final PfConceptKey participantType, + @NonNull final AutomationCompositionState state) { + this.elementId = elementId; + this.instanceId = instanceId; this.definition = definition; this.participantType = participantType; this.state = state; @@ -146,8 +150,8 @@ public class JpaAutomationCompositionElement extends PfConcept implements PfAuth * @param copyConcept the concept to copy from */ public JpaAutomationCompositionElement(@NonNull final JpaAutomationCompositionElement copyConcept) { - super(copyConcept); - this.key = new PfReferenceKey(copyConcept.key); + this.elementId = copyConcept.elementId; + this.instanceId = copyConcept.instanceId; this.definition = new PfConceptKey(copyConcept.definition); this.participantType = new PfConceptKey(copyConcept.participantType); this.participantId = new PfConceptKey(copyConcept.participantId); @@ -170,7 +174,7 @@ public class JpaAutomationCompositionElement extends PfConcept implements PfAuth public AutomationCompositionElement toAuthorative() { var element = new AutomationCompositionElement(); - element.setId(UUID.fromString(getKey().getLocalName())); + element.setId(UUID.fromString(elementId)); element.setDefinition(new ToscaConceptIdentifier(definition)); element.setParticipantType(new ToscaConceptIdentifier(participantType)); element.setParticipantId(new ToscaConceptIdentifier(participantId)); @@ -184,11 +188,6 @@ public class JpaAutomationCompositionElement extends PfConcept implements PfAuth @Override public void fromAuthorative(@NonNull final AutomationCompositionElement element) { - if (this.key == null || this.getKey().isNullKey()) { - this.setKey(new PfReferenceKey()); - getKey().setLocalName(element.getId().toString()); - } - this.definition = element.getDefinition().asConceptKey(); this.participantType = element.getParticipantType().asConceptKey(); this.participantId = element.getParticipantId().asConceptKey(); @@ -199,42 +198,20 @@ public class JpaAutomationCompositionElement extends PfConcept implements PfAuth } @Override - public List<PfKey> getKeys() { - List<PfKey> keyList = getKey().getKeys(); - - keyList.add(definition); - keyList.add(participantType); - keyList.add(participantId); - - return keyList; - } - - @Override - public void clean() { - key.clean(); - definition.clean(); - participantType.clean(); - participantId.clean(); - - if (description != null) { - description = description.trim(); - } - } - - @Override - public int compareTo(final PfConcept otherConcept) { - if (otherConcept == null) { + public int compareTo(final JpaAutomationCompositionElement other) { + if (other == null) { return -1; } - if (this == otherConcept) { + if (this == other) { return 0; } - if (getClass() != otherConcept.getClass()) { - return this.getClass().getName().compareTo(otherConcept.getClass().getName()); + + var result = ObjectUtils.compare(elementId, other.elementId); + if (result != 0) { + return result; } - final JpaAutomationCompositionElement other = (JpaAutomationCompositionElement) otherConcept; - int result = key.compareTo(other.key); + result = ObjectUtils.compare(instanceId, other.instanceId); if (result != 0) { return result; } diff --git a/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/concepts/StringToMapConverter.java b/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/concepts/StringToMapConverter.java index 5dccd0862..1e06cb16d 100644 --- a/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/concepts/StringToMapConverter.java +++ b/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/concepts/StringToMapConverter.java @@ -44,6 +44,7 @@ public class StringToMapConverter implements AttributeConverter<Map<String, Obje } } + @SuppressWarnings("unchecked") @Override public Map<String, Object> convertToEntityAttribute(String dbData) { if (dbData == null) { diff --git a/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/provider/AutomationCompositionProvider.java b/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/provider/AutomationCompositionProvider.java index 8c39f6e2b..21efc66d3 100644 --- a/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/provider/AutomationCompositionProvider.java +++ b/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/provider/AutomationCompositionProvider.java @@ -25,7 +25,6 @@ package org.onap.policy.clamp.models.acm.persistence.provider; import java.util.List; import java.util.Optional; import java.util.UUID; -import javax.persistence.EntityNotFoundException; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.Status; import lombok.AllArgsConstructor; @@ -33,9 +32,9 @@ import lombok.NonNull; import org.onap.policy.clamp.models.acm.concepts.AutomationComposition; import org.onap.policy.clamp.models.acm.persistence.concepts.JpaAutomationComposition; import org.onap.policy.clamp.models.acm.persistence.repository.AutomationCompositionRepository; -import org.onap.policy.models.base.PfConceptKey; import org.onap.policy.models.base.PfModelRuntimeException; import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifier; +import org.springframework.data.domain.Example; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -57,7 +56,7 @@ public class AutomationCompositionProvider { */ @Transactional(readOnly = true) public AutomationComposition getAutomationComposition(final UUID instanceId) { - var result = automationCompositionRepository.findByInstanceId(instanceId.toString()); + var result = automationCompositionRepository.findById(instanceId.toString()); if (result.isEmpty()) { throw new PfModelRuntimeException(Status.NOT_FOUND, "AutomationComposition not found"); } @@ -65,21 +64,6 @@ public class AutomationCompositionProvider { } /** - * Get automation composition. - * - * @param automationCompositionId the ID of the automation composition to get - * @return the automation composition found - */ - @Transactional(readOnly = true) - public AutomationComposition getAutomationComposition(final ToscaConceptIdentifier automationCompositionId) { - try { - return automationCompositionRepository.getById(automationCompositionId.asConceptKey()).toAuthorative(); - } catch (EntityNotFoundException e) { - throw new PfModelRuntimeException(Status.NOT_FOUND, "AutomationComposition not found", e); - } - } - - /** * Find automation composition. * * @param instanceId the ID of the automation composition to get @@ -87,7 +71,7 @@ public class AutomationCompositionProvider { */ @Transactional(readOnly = true) public Optional<AutomationComposition> findAutomationComposition(final UUID instanceId) { - var result = automationCompositionRepository.findByInstanceId(instanceId.toString()); + var result = automationCompositionRepository.findById(instanceId.toString()); return result.stream().map(JpaAutomationComposition::toAuthorative).findFirst(); } @@ -100,11 +84,9 @@ public class AutomationCompositionProvider { @Transactional(readOnly = true) public Optional<AutomationComposition> findAutomationComposition( final ToscaConceptIdentifier automationCompositionId) { - return findAutomationComposition(automationCompositionId.asConceptKey()); - } - - private Optional<AutomationComposition> findAutomationComposition(@NonNull final PfConceptKey key) { - return automationCompositionRepository.findById(key).map(JpaAutomationComposition::toAuthorative); + return automationCompositionRepository + .findOne(createExample(null, automationCompositionId.getName(), automationCompositionId.getVersion())) + .map(JpaAutomationComposition::toAuthorative); } /** @@ -156,10 +138,24 @@ public class AutomationCompositionProvider { * @return the automation compositions found */ @Transactional(readOnly = true) - public List<AutomationComposition> getAutomationCompositions(final String name, final String version) { + public List<AutomationComposition> getAutomationCompositions(final UUID compositionId, final String name, + final String version) { + + return ProviderUtils + .asEntityList(automationCompositionRepository.findAll(createExample(compositionId, name, version))); + } - return ProviderUtils.asEntityList( - automationCompositionRepository.getFiltered(JpaAutomationComposition.class, name, version)); + private Example<JpaAutomationComposition> createExample(final UUID compositionId, final String name, + final String version) { + var example = new JpaAutomationComposition(); + example.setCompositionId(compositionId != null ? compositionId.toString() : null); + example.setName(name); + example.setVersion(version); + example.setInstanceId(null); + example.setElements(null); + example.setState(null); + + return Example.of(example); } /** @@ -169,14 +165,14 @@ public class AutomationCompositionProvider { * @return the automation composition deleted */ public AutomationComposition deleteAutomationComposition(@NonNull final UUID instanceId) { - var jpaDeleteAutomationComposition = automationCompositionRepository.findByInstanceId(instanceId.toString()); + var jpaDeleteAutomationComposition = automationCompositionRepository.findById(instanceId.toString()); if (jpaDeleteAutomationComposition.isEmpty()) { var errorMessage = "delete of automation composition \"" + instanceId + "\" failed, automation composition does not exist"; throw new PfModelRuntimeException(Response.Status.NOT_FOUND, errorMessage); } - automationCompositionRepository.deleteById(jpaDeleteAutomationComposition.get().getKey()); + automationCompositionRepository.deleteById(instanceId.toString()); return jpaDeleteAutomationComposition.get().toAuthorative(); } diff --git a/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/provider/ProviderUtils.java b/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/provider/ProviderUtils.java index 9dc07ae72..871aa8902 100644 --- a/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/provider/ProviderUtils.java +++ b/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/provider/ProviderUtils.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation. + * Copyright (C) 2021-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -29,7 +29,6 @@ import lombok.AccessLevel; import lombok.NoArgsConstructor; import org.onap.policy.common.parameters.BeanValidationResult; import org.onap.policy.models.base.PfAuthorative; -import org.onap.policy.models.base.PfConcept; import org.onap.policy.models.base.PfModelRuntimeException; import org.onap.policy.models.base.Validated; @@ -44,7 +43,7 @@ public final class ProviderUtils { * @param conceptDescription the description used for validation result * @return the list of Jpa objects */ - public static <A, J extends PfConcept & PfAuthorative<A>> List<J> getJpaAndValidateList( + public static <A, J extends Validated & PfAuthorative<A>> List<J> getJpaAndValidateList( List<A> authorativeConceptList, Supplier<J> jpaSupplier, String conceptDescription) { var validationResult = new BeanValidationResult(conceptDescription + " List", authorativeConceptList); diff --git a/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/repository/AutomationCompositionRepository.java b/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/repository/AutomationCompositionRepository.java index aba752667..bb8b3e6d9 100644 --- a/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/repository/AutomationCompositionRepository.java +++ b/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/repository/AutomationCompositionRepository.java @@ -21,17 +21,14 @@ package org.onap.policy.clamp.models.acm.persistence.repository; import java.util.List; -import java.util.Optional; import org.onap.policy.clamp.models.acm.persistence.concepts.JpaAutomationComposition; -import org.onap.policy.models.base.PfConceptKey; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.repository.query.QueryByExampleExecutor; import org.springframework.stereotype.Repository; @Repository public interface AutomationCompositionRepository - extends JpaRepository<JpaAutomationComposition, PfConceptKey>, FilterRepository { - - Optional<JpaAutomationComposition> findByInstanceId(String instanceId); + extends JpaRepository<JpaAutomationComposition, String>, QueryByExampleExecutor<JpaAutomationComposition> { List<JpaAutomationComposition> findByCompositionId(String compositionId); } diff --git a/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/repository/FilterRepository.java b/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/repository/FilterRepository.java index cdedc5eb5..fb4c0bc48 100644 --- a/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/repository/FilterRepository.java +++ b/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/repository/FilterRepository.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation. + * Copyright (C) 2021-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,7 +22,6 @@ package org.onap.policy.clamp.models.acm.persistence.repository; import java.util.List; import org.onap.policy.models.base.PfConcept; -import org.onap.policy.models.dao.PfFilterParametersIntfc; public interface FilterRepository { @@ -33,18 +32,6 @@ public interface FilterRepository { * @param someClass the class of the object to get, a subclass of {@link PfConcept}, if name is null, all concepts * of type T are returned, if name is not null and version is null, all versions of that concept matching the * name are returned. - * @param filterParams filter parameters - * @return the objects that was retrieved from the database - */ - <T extends PfConcept> List<T> getFiltered(Class<T> someClass, PfFilterParametersIntfc filterParams); - - /** - * Get an object from the database, referred to by concept key. - * - * @param <T> the type of the object to get, a subclass of {@link PfConcept} - * @param someClass the class of the object to get, a subclass of {@link PfConcept}, if name is null, all concepts - * of type T are returned, if name is not null and version is null, all versions of that concept matching the - * name are returned. * @param name the name of the object to get, null returns all objects * @param version the version the object to get, null returns all objects for a specified name * @return the objects that was retrieved from the database diff --git a/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/repository/FilterRepositoryImpl.java b/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/repository/FilterRepositoryImpl.java index d7e81d4da..470f05379 100644 --- a/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/repository/FilterRepositoryImpl.java +++ b/models/src/main/java/org/onap/policy/clamp/models/acm/persistence/repository/FilterRepositoryImpl.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2021 Nordix Foundation. + * Copyright (C) 2021-2022 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -25,7 +25,6 @@ import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import org.onap.policy.models.base.PfConcept; import org.onap.policy.models.dao.PfDao; -import org.onap.policy.models.dao.PfFilterParametersIntfc; import org.onap.policy.models.dao.impl.ProxyDao; import org.springframework.stereotype.Repository; @@ -40,11 +39,6 @@ public class FilterRepositoryImpl implements FilterRepository { } @Override - public <T extends PfConcept> List<T> getFiltered(Class<T> someClass, PfFilterParametersIntfc filterParams) { - return getPfDao().getFiltered(someClass, filterParams); - } - - @Override public <T extends PfConcept> List<T> getFiltered(Class<T> someClass, String name, String version) { return getPfDao().getFiltered(someClass, name, version); } |