9caefe238103f8e4fe6ef49578dbeead4f03d71d
[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.util.ArrayList;
24 import java.util.LinkedHashMap;
25 import java.util.List;
26 import java.util.Map;
27 import lombok.Data;
28 import lombok.EqualsAndHashCode;
29 import lombok.NoArgsConstructor;
30 import lombok.ToString;
31 import org.onap.policy.common.parameters.annotations.NotNull;
32 import org.onap.policy.models.base.PfUtils;
33 import org.onap.policy.models.tosca.authorative.concepts.ToscaCapabilityAssignment;
34
35 @Data
36 @EqualsAndHashCode(callSuper = true)
37 @NoArgsConstructor
38 @ToString(callSuper = true)
39 public class DocToscaCapabilityAssignment extends DocToscaWithTypeAndStringProperties<ToscaCapabilityAssignment> {
40
41     private static final long serialVersionUID = 1L;
42
43     private Map<@NotNull String, @NotNull Object> attributes;
44     private List<@NotNull Object> occurrences;
45
46     /**
47      * Authorative constructor.
48      *
49      * @param authorativeConcept the authorative concept to copy from
50      */
51     public DocToscaCapabilityAssignment(final ToscaCapabilityAssignment authorativeConcept) {
52         fromAuthorative(authorativeConcept);
53     }
54
55     /**
56      * Copy constructor.
57      *
58      * @param copyConcept the concept to copy from
59      */
60     public DocToscaCapabilityAssignment(final DocToscaCapabilityAssignment copyConcept) {
61         super(copyConcept);
62         this.attributes = copyConcept.attributes == null ? null : new LinkedHashMap<>(copyConcept.attributes);
63         this.occurrences = copyConcept.occurrences == null ? null : new ArrayList<>(copyConcept.occurrences);
64     }
65
66     @Override
67     public ToscaCapabilityAssignment toAuthorative() {
68         var toscaCapabilityAssignment = new ToscaCapabilityAssignment();
69         super.setToscaEntity(toscaCapabilityAssignment);
70         super.toAuthorative();
71
72         toscaCapabilityAssignment.setAttributes(PfUtils.mapMap(attributes, attribute -> attribute));
73         toscaCapabilityAssignment.setOccurrences(PfUtils.mapList(occurrences, occurrence -> occurrence));
74
75         return toscaCapabilityAssignment;
76     }
77
78     @Override
79     public void fromAuthorative(ToscaCapabilityAssignment toscaCapabilityAssignment) {
80         super.fromAuthorative(toscaCapabilityAssignment);
81
82         attributes = PfUtils.mapMap(toscaCapabilityAssignment.getAttributes(), attribute -> attribute);
83         occurrences = PfUtils.mapList(toscaCapabilityAssignment.getOccurrences(), occurrence -> occurrence);
84     }
85
86     @Override
87     public int compareTo(DocToscaEntity<ToscaCapabilityAssignment> otherConcept) {
88         if (this == otherConcept) {
89             return 0;
90         }
91
92         int result = super.compareTo(otherConcept);
93         if (result != 0) {
94             return result;
95         }
96
97         final var other = (DocToscaCapabilityAssignment) otherConcept;
98
99         result = PfUtils.compareMaps(attributes, other.attributes);
100         if (result != 0) {
101             return result;
102         }
103
104         return PfUtils.compareCollections(occurrences, other.occurrences);
105     }
106 }