e675e2387422f80847cb93e949940bd4db233ae4
[policy/clamp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2022,2024 Nordix Foundation.
4  * ================================================================================
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.policy.clamp.models.acm.document.concepts;
22
23 import java.io.Serial;
24 import java.util.ArrayList;
25 import java.util.LinkedHashMap;
26 import java.util.List;
27 import java.util.Map;
28 import lombok.Data;
29 import lombok.EqualsAndHashCode;
30 import lombok.NoArgsConstructor;
31 import lombok.ToString;
32 import org.onap.policy.common.parameters.annotations.NotNull;
33 import org.onap.policy.models.base.PfUtils;
34 import org.onap.policy.models.tosca.authorative.concepts.ToscaCapabilityAssignment;
35
36 @Data
37 @EqualsAndHashCode(callSuper = true)
38 @NoArgsConstructor
39 @ToString(callSuper = true)
40 public class DocToscaCapabilityAssignment extends DocToscaWithTypeAndStringProperties<ToscaCapabilityAssignment> {
41
42     @Serial
43     private static final long serialVersionUID = 1L;
44
45     @SuppressWarnings("squid:S1948")
46     private Map<@NotNull String, @NotNull Object> attributes;
47
48     @SuppressWarnings("squid:S1948")
49     private List<@NotNull Object> occurrences;
50
51     /**
52      * Authorative constructor.
53      *
54      * @param authorativeConcept the authorative concept to copy from
55      */
56     public DocToscaCapabilityAssignment(final ToscaCapabilityAssignment authorativeConcept) {
57         fromAuthorative(authorativeConcept);
58     }
59
60     /**
61      * Copy constructor.
62      *
63      * @param copyConcept the concept to copy from
64      */
65     public DocToscaCapabilityAssignment(final DocToscaCapabilityAssignment copyConcept) {
66         super(copyConcept);
67         this.attributes = copyConcept.attributes == null ? null : new LinkedHashMap<>(copyConcept.attributes);
68         this.occurrences = copyConcept.occurrences == null ? null : new ArrayList<>(copyConcept.occurrences);
69     }
70
71     @Override
72     public ToscaCapabilityAssignment toAuthorative() {
73         var toscaCapabilityAssignment = new ToscaCapabilityAssignment();
74         super.setToscaEntity(toscaCapabilityAssignment);
75         super.toAuthorative();
76
77         toscaCapabilityAssignment.setAttributes(PfUtils.mapMap(attributes, attribute -> attribute));
78         toscaCapabilityAssignment.setOccurrences(PfUtils.mapList(occurrences, occurrence -> occurrence));
79
80         return toscaCapabilityAssignment;
81     }
82
83     @Override
84     public void fromAuthorative(ToscaCapabilityAssignment toscaCapabilityAssignment) {
85         super.fromAuthorative(toscaCapabilityAssignment);
86
87         attributes = PfUtils.mapMap(toscaCapabilityAssignment.getAttributes(), attribute -> attribute);
88         occurrences = PfUtils.mapList(toscaCapabilityAssignment.getOccurrences(), occurrence -> occurrence);
89     }
90
91     @Override
92     public int compareTo(DocToscaEntity<ToscaCapabilityAssignment> otherConcept) {
93         if (this == otherConcept) {
94             return 0;
95         }
96
97         int result = super.compareTo(otherConcept);
98         if (result != 0) {
99             return result;
100         }
101
102         final var other = (DocToscaCapabilityAssignment) otherConcept;
103
104         result = PfUtils.compareMaps(attributes, other.attributes);
105         if (result != 0) {
106             return result;
107         }
108
109         return PfUtils.compareCollections(occurrences, other.occurrences);
110     }
111 }