2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2021 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.models;
24 import com.fasterxml.jackson.annotation.JsonProperty;
25 import com.google.common.base.Strings;
26 import java.util.ArrayList;
27 import java.util.Collections;
28 import java.util.List;
30 import lombok.AllArgsConstructor;
33 import lombok.NoArgsConstructor;
35 import org.onap.cps.ncmp.api.impl.operations.RequiredDmiService;
43 public class PersistenceCmHandle {
47 @JsonProperty("dmi-service-name")
48 private String dmiServiceName;
50 @JsonProperty("dmi-data-service-name")
51 private String dmiDataServiceName;
53 @JsonProperty("dmi-model-service-name")
54 private String dmiModelServiceName;
56 @JsonProperty("additional-properties")
57 private List<AdditionalProperty> additionalProperties;
60 * Create a persistenceCmHandle.
61 * @param dmiServiceName dmi service name
62 * @param dmiDataServiceName dmi data service name
63 * @param dmiModelServiceName dmi model service name
64 * @param cmHandle the cm handle
65 * @return instance of persistenceCmHandle
67 public static PersistenceCmHandle toPersistenceCmHandle(final String dmiServiceName,
68 final String dmiDataServiceName,
69 final String dmiModelServiceName,
70 final CmHandle cmHandle) {
71 final PersistenceCmHandle persistenceCmHandle = new PersistenceCmHandle();
72 persistenceCmHandle.setId(cmHandle.getCmHandleID());
73 persistenceCmHandle.setDmiServiceName(dmiServiceName);
74 persistenceCmHandle.setDmiDataServiceName(dmiDataServiceName);
75 persistenceCmHandle.setDmiModelServiceName(dmiModelServiceName);
76 if (cmHandle.getCmHandleProperties() == null) {
77 persistenceCmHandle.asAdditionalProperties(Collections.emptyMap());
79 persistenceCmHandle.asAdditionalProperties(cmHandle.getCmHandleProperties());
81 return persistenceCmHandle;
85 * Set Additional Properties map, key and value pair.
86 * @param additionalPropertiesAsMap Map of Additional Properties
88 public void asAdditionalProperties(final Map<String, String> additionalPropertiesAsMap) {
89 additionalProperties = new ArrayList<>(additionalPropertiesAsMap.size());
90 for (final Map.Entry<String, String> entry : additionalPropertiesAsMap.entrySet()) {
91 additionalProperties.add(new AdditionalProperty(entry.getKey(), entry.getValue()));
96 * Resolve a dmi service name.
97 * @param requiredService indicates what typo of service is required
98 * @return dmi service name
100 public String resolveDmiServiceName(final RequiredDmiService requiredService) {
101 if (isNullEmptyOrBlank(dmiServiceName)) {
102 if (RequiredDmiService.DATA.equals(requiredService)) {
103 return dmiDataServiceName;
105 return dmiModelServiceName;
107 return dmiServiceName;
110 private static boolean isNullEmptyOrBlank(final String serviceName) {
111 return Strings.isNullOrEmpty(serviceName) || serviceName.isBlank();
116 public static class AdditionalProperty {
119 private final String name;
122 private final String value;