2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2021-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
9 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 * SPDX-License-Identifier: Apache-2.0
18 * ============LICENSE_END=========================================================
22 package org.onap.cps.ncmp.api.impl.yangmodels;
24 import com.fasterxml.jackson.annotation.JsonInclude;
25 import com.fasterxml.jackson.annotation.JsonInclude.Include;
26 import com.fasterxml.jackson.annotation.JsonProperty;
27 import java.util.ArrayList;
28 import java.util.List;
30 import lombok.AllArgsConstructor;
32 import lombok.EqualsAndHashCode;
34 import lombok.NoArgsConstructor;
36 import org.apache.commons.lang3.StringUtils;
37 import org.onap.cps.ncmp.api.impl.inventory.CompositeState;
38 import org.onap.cps.ncmp.api.impl.operations.RequiredDmiService;
39 import org.onap.cps.ncmp.api.models.NcmpServiceCmHandle;
42 * Cm Handle which follows the Yang resource dmi registry model when persisting data to DMI or the DB.
48 @JsonInclude(Include.NON_NULL)
49 @EqualsAndHashCode(onlyExplicitlyIncluded = true)
50 public class YangModelCmHandle {
52 @EqualsAndHashCode.Include
55 @JsonProperty("dmi-service-name")
56 private String dmiServiceName;
58 @JsonProperty("dmi-data-service-name")
59 private String dmiDataServiceName;
61 @JsonProperty("state")
62 private CompositeState compositeState;
64 @JsonProperty("dmi-model-service-name")
65 private String dmiModelServiceName;
67 @JsonProperty("module-set-tag")
68 private String moduleSetTag;
70 @JsonProperty("alternate-id")
71 private String alternateId;
73 @JsonProperty("data-producer-identifier")
74 private String dataProducerIdentifier;
76 @JsonProperty("additional-properties")
77 private List<Property> dmiProperties;
79 @JsonProperty("public-properties")
80 private List<Property> publicProperties;
83 * Creates a deep copy of Yang Model Cm Handle.
85 * @param original Yang Model Cm Handle
86 * @return instance of yangModelCmHandle
88 public static YangModelCmHandle deepCopyOf(final YangModelCmHandle original) {
89 final YangModelCmHandle copy = new YangModelCmHandle();
90 copy.id = original.getId();
91 copy.dmiServiceName = original.getDmiServiceName();
92 copy.dmiDataServiceName = original.getDmiDataServiceName();
93 copy.dmiModelServiceName = original.getDmiModelServiceName();
95 original.getCompositeState() == null ? null : new CompositeState(original.getCompositeState());
96 copy.dmiProperties = original.getDmiProperties() == null ? null : new ArrayList<>(original.getDmiProperties());
97 copy.publicProperties =
98 original.getPublicProperties() == null ? null : new ArrayList<>(original.getPublicProperties());
99 copy.moduleSetTag = original.getModuleSetTag();
100 copy.alternateId = original.getAlternateId();
101 copy.dataProducerIdentifier = original.getDataProducerIdentifier();
106 * Create a yangModelCmHandle.
108 * @param dmiServiceName dmi service name
109 * @param dmiDataServiceName dmi data service name
110 * @param dmiModelServiceName dmi model service name
111 * @param ncmpServiceCmHandle the cm handle
112 * @param moduleSetTag moduleSetTag
113 * @param alternateId alternateId
114 * @param dataProducerIdentifier dataProducerIdentifier
115 * @return instance of yangModelCmHandle
117 public static YangModelCmHandle toYangModelCmHandle(final String dmiServiceName,
118 final String dmiDataServiceName,
119 final String dmiModelServiceName,
120 final NcmpServiceCmHandle ncmpServiceCmHandle,
121 final String moduleSetTag,
122 final String alternateId,
123 final String dataProducerIdentifier) {
124 final YangModelCmHandle yangModelCmHandle = new YangModelCmHandle();
125 yangModelCmHandle.setId(ncmpServiceCmHandle.getCmHandleId());
126 yangModelCmHandle.setDmiServiceName(dmiServiceName);
127 yangModelCmHandle.setDmiDataServiceName(dmiDataServiceName);
128 yangModelCmHandle.setDmiModelServiceName(dmiModelServiceName);
129 yangModelCmHandle.setModuleSetTag(moduleSetTag == null ? StringUtils.EMPTY : moduleSetTag);
130 yangModelCmHandle.setAlternateId(alternateId == null ? StringUtils.EMPTY : alternateId);
131 yangModelCmHandle.setDataProducerIdentifier(
132 dataProducerIdentifier == null ? StringUtils.EMPTY : dataProducerIdentifier);
133 yangModelCmHandle.setDmiProperties(asYangModelCmHandleProperties(ncmpServiceCmHandle.getDmiProperties()));
134 yangModelCmHandle.setPublicProperties(asYangModelCmHandleProperties(
135 ncmpServiceCmHandle.getPublicProperties()));
136 yangModelCmHandle.setCompositeState(ncmpServiceCmHandle.getCompositeState());
137 return yangModelCmHandle;
141 * Resolve a dmi service name.
143 * @param requiredService indicates what typo of service is required
144 * @return dmi service name
146 public String resolveDmiServiceName(final RequiredDmiService requiredService) {
147 if (StringUtils.isBlank(dmiServiceName)) {
148 if (RequiredDmiService.DATA.equals(requiredService)) {
149 return dmiDataServiceName;
151 return dmiModelServiceName;
153 return dmiServiceName;
156 private static List<Property> asYangModelCmHandleProperties(final Map<String, String> propertiesAsMap) {
157 final List<Property> yangModelCmHandleProperties = new ArrayList<>(propertiesAsMap.size());
158 for (final Map.Entry<String, String> entry : propertiesAsMap.entrySet()) {
159 yangModelCmHandleProperties.add(new YangModelCmHandle.Property(entry.getKey(), entry.getValue()));
161 return yangModelCmHandleProperties;
166 public static class Property {
169 private final String name;
172 private final String value;