572332eeb15be487de9485d05eec77438583dcea
[policy/clamp.git] /
1 /*-
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2022 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     private Map<@NotNull String, @NotNull Object> attributes;
46     private List<@NotNull Object> occurrences;
47
48     /**
49      * Authorative constructor.
50      *
51      * @param authorativeConcept the authorative concept to copy from
52      */
53     public DocToscaCapabilityAssignment(final ToscaCapabilityAssignment authorativeConcept) {
54         fromAuthorative(authorativeConcept);
55     }
56
57     /**
58      * Copy constructor.
59      *
60      * @param copyConcept the concept to copy from
61      */
62     public DocToscaCapabilityAssignment(final DocToscaCapabilityAssignment copyConcept) {
63         super(copyConcept);
64         this.attributes = copyConcept.attributes == null ? null : new LinkedHashMap<>(copyConcept.attributes);
65         this.occurrences = copyConcept.occurrences == null ? null : new ArrayList<>(copyConcept.occurrences);
66     }
67
68     @Override
69     public ToscaCapabilityAssignment toAuthorative() {
70         var toscaCapabilityAssignment = new ToscaCapabilityAssignment();
71         super.setToscaEntity(toscaCapabilityAssignment);
72         super.toAuthorative();
73
74         toscaCapabilityAssignment.setAttributes(PfUtils.mapMap(attributes, attribute -> attribute));
75         toscaCapabilityAssignment.setOccurrences(PfUtils.mapList(occurrences, occurrence -> occurrence));
76
77         return toscaCapabilityAssignment;
78     }
79
80     @Override
81     public void fromAuthorative(ToscaCapabilityAssignment toscaCapabilityAssignment) {
82         super.fromAuthorative(toscaCapabilityAssignment);
83
84         attributes = PfUtils.mapMap(toscaCapabilityAssignment.getAttributes(), attribute -> attribute);
85         occurrences = PfUtils.mapList(toscaCapabilityAssignment.getOccurrences(), occurrence -> occurrence);
86     }
87
88     @Override
89     public int compareTo(DocToscaEntity<ToscaCapabilityAssignment> otherConcept) {
90         if (this == otherConcept) {
91             return 0;
92         }
93
94         int result = super.compareTo(otherConcept);
95         if (result != 0) {
96             return result;
97         }
98
99         final var other = (DocToscaCapabilityAssignment) otherConcept;
100
101         result = PfUtils.compareMaps(attributes, other.attributes);
102         if (result != 0) {
103             return result;
104         }
105
106         return PfUtils.compareCollections(occurrences, other.occurrences);
107     }
108 }