diff options
Diffstat (limited to 'cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiOperations.java')
-rw-r--r-- | cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiOperations.java | 114 |
1 files changed, 114 insertions, 0 deletions
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 index 000000000..509728061 --- /dev/null +++ b/cps-ncmp-service/src/main/java/org/onap/cps/ncmp/api/impl/operations/DmiOperations.java @@ -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()); + } + } + +} |