2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2019 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=========================================================
21 package org.onap.so.adapters.vnfmadapter.converters.sol003.etsicatalog;
23 import java.util.ArrayList;
24 import java.util.Arrays;
25 import java.util.Collections;
26 import java.util.List;
27 import org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.Version;
28 import org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.VnfProducts;
29 import org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.VnfProductsProviders;
30 import org.onap.so.adapters.vnfmadapter.extclients.vnfm.packagemanagement.model.PkgmSubscriptionRequest;
31 import org.onap.so.adapters.vnfmadapter.extclients.vnfm.packagemanagement.model.SubscriptionsFilter;
32 import org.onap.so.adapters.vnfmadapter.extclients.vnfm.packagemanagement.model.SubscriptionsFilter.NotificationTypesEnum;
33 import org.onap.so.adapters.vnfmadapter.extclients.vnfm.packagemanagement.model.SubscriptionsFilter.OperationalStateEnum;
34 import org.onap.so.adapters.vnfmadapter.extclients.vnfm.packagemanagement.model.SubscriptionsFilterVersions;
35 import org.onap.so.adapters.vnfmadapter.extclients.vnfm.packagemanagement.model.SubscriptionsFilterVnfProducts;
36 import org.onap.so.adapters.vnfmadapter.extclients.vnfm.packagemanagement.model.SubscriptionsFilterVnfProductsFromProviders;
37 import org.springframework.core.convert.converter.Converter;
38 import org.springframework.stereotype.Service;
41 * Converter to convert from an Etsi Catalog Manager {@link PkgmSubscriptionRequest} Object to its equivalent ETSI
42 * Catalog Manager Object
44 * @author Ronan Kenny (ronan.kenny@est.tech)
45 * @author Gareth Roper (gareth.roper@est.tech)
48 public class PkgmSubscriptionRequestConverter implements
49 Converter<PkgmSubscriptionRequest, org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmSubscriptionRequest> {
52 public org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmSubscriptionRequest convert(
53 PkgmSubscriptionRequest pkgmSubscriptionRequest) {
54 final org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmSubscriptionRequest etsiCatalogManagerSubscriptionRequest =
55 new org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmSubscriptionRequest();
57 etsiCatalogManagerSubscriptionRequest
58 .setFilters(getPkgmNotificationsFilter(pkgmSubscriptionRequest.getFilter()));
60 return etsiCatalogManagerSubscriptionRequest;
64 private org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmNotificationsFilter getPkgmNotificationsFilter(
65 final SubscriptionsFilter sol003SubscriptionsFilter) {
66 final org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmNotificationsFilter etsiCatalogManagerFilters =
67 new org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmNotificationsFilter();
69 if (sol003SubscriptionsFilter.getNotificationTypes() != null) {
70 etsiCatalogManagerFilters.setNotificationTypes(
71 getPkgmNotificationsFilterNotificationTypes(sol003SubscriptionsFilter.getNotificationTypes()));
74 etsiCatalogManagerFilters.setVnfProductsFromProviders(
75 getVnfProductsProviders(sol003SubscriptionsFilter.getVnfProductsFromProviders()));
77 etsiCatalogManagerFilters.setVnfdId(getVnfdIds(sol003SubscriptionsFilter.getVnfdId()));
79 etsiCatalogManagerFilters.setVnfPkgId(getVnfPkgIds(sol003SubscriptionsFilter.getVnfPkgId()));
81 etsiCatalogManagerFilters
82 .setOperationalState(getOperationalState(sol003SubscriptionsFilter.getOperationalState()));
84 etsiCatalogManagerFilters.setUsageState(null);
86 return etsiCatalogManagerFilters;
89 // TODO 'operationalState' in the Sol003 Swagger is type 'OperationalStateEnum'. The ETSI Catalog Manager Swagger
90 // 'operationalState' is type 'List<OperationalStateEnum>'. This method needs to be updated once swagger is updated.
91 private List<org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmNotificationsFilter.OperationalStateEnum> getOperationalState(
92 final OperationalStateEnum operationalState) {
93 if (operationalState != null) {
95 org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmNotificationsFilter.OperationalStateEnum
96 .fromValue(operationalState.getValue()));
98 return Collections.emptyList();
101 private List<String> getVnfPkgIds(final List<String> vnfPkgId) {
102 if (vnfPkgId != null) {
103 final List<String> etsiCatalogManagerVnfPkgId = new ArrayList<>();
104 vnfPkgId.forEach(type -> {
105 etsiCatalogManagerVnfPkgId.add(type);
108 return Collections.emptyList();
111 private List<String> getVnfdIds(final List<String> vnfdId) {
112 if (vnfdId != null) {
113 final List<String> etsiCatalogManagerVnfdId = new ArrayList<>();
114 vnfdId.forEach(type -> {
115 etsiCatalogManagerVnfdId.add(type);
118 return Collections.emptyList();
121 private List<VnfProductsProviders> getVnfProductsProviders(
122 final List<SubscriptionsFilterVnfProductsFromProviders> filterProductsFromProvider) {
124 if (filterProductsFromProvider != null && !filterProductsFromProvider.isEmpty()) {
125 final List<VnfProductsProviders> etsiCatalogManagerVnfProductsProviders = new ArrayList<>();
126 filterProductsFromProvider.forEach(vnfProduct -> {
127 etsiCatalogManagerVnfProductsProviders
128 .add(new VnfProductsProviders().vnfProvider(vnfProduct.getVnfProvider())
129 .vnfProducts(getVnfProducts(vnfProduct.getVnfProducts())));
131 return etsiCatalogManagerVnfProductsProviders;
133 return Collections.emptyList();
136 private List<VnfProducts> getVnfProducts(final List<SubscriptionsFilterVnfProducts> sol003VnfProducts) {
137 if (sol003VnfProducts != null) {
138 final List<VnfProducts> etsiCatalogManagerVnfProductsList = new ArrayList<>();
139 sol003VnfProducts.forEach(vnfProduct -> {
140 etsiCatalogManagerVnfProductsList.add(new VnfProducts().vnfProductName(vnfProduct.getVnfProductName())
141 .versions(getVersion(vnfProduct.getVersions())));
143 return etsiCatalogManagerVnfProductsList;
145 return Collections.emptyList();
148 private List<Version> getVersion(final List<SubscriptionsFilterVersions> sol003FilterVersions) {
149 if (sol003FilterVersions != null && !sol003FilterVersions.isEmpty()) {
150 List<Version> etsiCatalogVersionList = new ArrayList<>();
151 sol003FilterVersions.forEach(vnfFilterVersion -> {
152 etsiCatalogVersionList.add(new Version().vnfSoftwareVersion(vnfFilterVersion.getVnfSoftwareVersion())
153 .vnfdVersions(vnfFilterVersion.getVnfdVersions()));
155 return etsiCatalogVersionList;
157 return Collections.emptyList();
160 private List<org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmNotificationsFilter.NotificationTypesEnum> getPkgmNotificationsFilterNotificationTypes(
161 final List<NotificationTypesEnum> notificationTypes) {
163 if (notificationTypes != null && !notificationTypes.isEmpty()) {
164 final List<org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmNotificationsFilter.NotificationTypesEnum> etsiCatalogManagerNotificationTypes =
166 notificationTypes.forEach(type -> etsiCatalogManagerNotificationTypes.add(
167 org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmNotificationsFilter.NotificationTypesEnum
168 .fromValue(type.getValue())));
170 return Collections.emptyList();