Allow separate registration of DMIDataPlugin and DmiModelPugin
[cps.git] / cps-ncmp-service / src / main / java / org / onap / cps / ncmp / api / impl / operations / DmiOperations.java
diff --git a/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiOperations.java b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiOperations.java
new file mode 100644 (file)
index 0000000..5097280
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+ *  ============LICENSE_START=======================================================
+ *  Copyright (C) 2021 Nordix Foundation
+ *  ================================================================================
+ *  Licensed under the Apache License, Version 2.0 (the "License");
+ *  you may not use this file except in compliance with the License.
+ *  You may obtain a copy of the License at
+ *
+ *        http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *  SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.cps.ncmp.api.impl.operations;
+
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.google.common.base.Strings;
+import lombok.Getter;
+import lombok.extern.slf4j.Slf4j;
+import org.onap.cps.ncmp.api.impl.client.DmiRestClient;
+import org.onap.cps.ncmp.api.impl.config.NcmpConfiguration;
+import org.onap.cps.ncmp.api.impl.exception.NcmpException;
+import org.springframework.http.HttpHeaders;
+
+@Slf4j
+public class DmiOperations {
+
+    @Getter
+    public enum DataStoreEnum {
+        PASSTHROUGH_OPERATIONAL("ncmp-datastore:passthrough-operational"),
+        PASSTHROUGH_RUNNING("ncmp-datastore:passthrough-running");
+        private String value;
+
+        DataStoreEnum(final String value) {
+            this.value = value;
+        }
+    }
+
+    protected ObjectMapper objectMapper;
+    protected PersistenceCmHandleRetriever cmHandlePropertiesRetriever;
+    protected DmiRestClient dmiRestClient;
+    protected NcmpConfiguration.DmiProperties dmiProperties;
+
+    static final String URL_SEPARATOR = "/";
+
+    /**
+     * Constructor for {@code DmiOperations}. This method also manipulates url properties.
+     *
+     * @param dmiRestClient {@code DmiRestClient}
+     */
+    public DmiOperations(final PersistenceCmHandleRetriever cmHandlePropertiesRetriever,
+                         final ObjectMapper objectMapper,
+                         final NcmpConfiguration.DmiProperties dmiProperties,
+                         final DmiRestClient dmiRestClient) {
+        this.cmHandlePropertiesRetriever = cmHandlePropertiesRetriever;
+        this.objectMapper = objectMapper;
+        this.dmiRestClient = dmiRestClient;
+        this.dmiProperties = dmiProperties;
+    }
+
+    String getCmHandleUrl(final String dmiServiceName, final String cmHandle) {
+        return dmiServiceName
+            + dmiProperties.getDmiBasePath()
+            + URL_SEPARATOR
+            + "v1"
+            + URL_SEPARATOR
+            + "ch"
+            + URL_SEPARATOR
+            + cmHandle
+            + URL_SEPARATOR;
+    }
+
+    String getDmiResourceUrl(final String dmiServiceName, final String cmHandle, final String resourceName) {
+        return getCmHandleUrl(dmiServiceName, cmHandle) + resourceName;
+    }
+
+    static String appendOptionsQuery(final String url, final String optionsParamInQuery) {
+        if (Strings.isNullOrEmpty(optionsParamInQuery)) {
+            return url;
+        }
+        return url + "&options=" + optionsParamInQuery;
+    }
+
+    static HttpHeaders prepareHeader(final String acceptParam) {
+        final var httpHeaders = new HttpHeaders();
+        httpHeaders.set(HttpHeaders.ACCEPT, acceptParam);
+        return httpHeaders;
+    }
+
+    /**
+     * Convert DmiRequestBody to JSON.
+     *
+     * @param dmiRequestBody the dmi request body
+     * @return DmiRequestBody as JSON
+     */
+    String getDmiRequestBodyAsString(final DmiRequestBody dmiRequestBody) {
+        try {
+            return objectMapper.writeValueAsString(dmiRequestBody);
+        } catch (final JsonProcessingException e) {
+            log.error("Parsing error occurred while converting Object to JSON.");
+            throw new NcmpException("Parsing error occurred while converting given object to JSON.",
+                e.getMessage());
+        }
+    }
+
+}