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 final 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
90 // Catalog Manager Swagger
91 // 'operationalState' is type 'List<OperationalStateEnum>'. This method needs to be updated once
92 // swagger is updated.
93 private List<org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmNotificationsFilter.OperationalStateEnum> getOperationalState(
94 final OperationalStateEnum operationalState) {
95 if (operationalState != null) {
97 org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmNotificationsFilter.OperationalStateEnum
98 .fromValue(operationalState.getValue()));
100 return Collections.emptyList();
103 private List<String> getVnfPkgIds(final List<String> vnfPkgId) {
104 if (vnfPkgId != null) {
105 final List<String> etsiCatalogManagerVnfPkgId = new ArrayList<>();
106 vnfPkgId.forEach(type -> {
107 etsiCatalogManagerVnfPkgId.add(type);
109 return etsiCatalogManagerVnfPkgId;
111 return Collections.emptyList();
114 private List<String> getVnfdIds(final List<String> vnfdId) {
115 if (vnfdId != null) {
116 final List<String> etsiCatalogManagerVnfdId = new ArrayList<>();
117 vnfdId.forEach(type -> {
118 etsiCatalogManagerVnfdId.add(type);
120 return etsiCatalogManagerVnfdId;
122 return Collections.emptyList();
125 private List<VnfProductsProviders> getVnfProductsProviders(
126 final List<SubscriptionsFilterVnfProductsFromProviders> filterProductsFromProvider) {
128 if (filterProductsFromProvider != null && !filterProductsFromProvider.isEmpty()) {
129 final List<VnfProductsProviders> etsiCatalogManagerVnfProductsProviders = new ArrayList<>();
130 filterProductsFromProvider.forEach(vnfProduct -> {
131 etsiCatalogManagerVnfProductsProviders
132 .add(new VnfProductsProviders().vnfProvider(vnfProduct.getVnfProvider())
133 .vnfProducts(getVnfProducts(vnfProduct.getVnfProducts())));
135 return etsiCatalogManagerVnfProductsProviders;
137 return Collections.emptyList();
140 private List<VnfProducts> getVnfProducts(final List<SubscriptionsFilterVnfProducts> sol003VnfProducts) {
141 if (sol003VnfProducts != null) {
142 final List<VnfProducts> etsiCatalogManagerVnfProductsList = new ArrayList<>();
143 sol003VnfProducts.forEach(vnfProduct -> {
144 etsiCatalogManagerVnfProductsList.add(new VnfProducts().vnfProductName(vnfProduct.getVnfProductName())
145 .versions(getVersion(vnfProduct.getVersions())));
147 return etsiCatalogManagerVnfProductsList;
149 return Collections.emptyList();
152 private List<Version> getVersion(final List<SubscriptionsFilterVersions> sol003FilterVersions) {
153 if (sol003FilterVersions != null && !sol003FilterVersions.isEmpty()) {
154 final List<Version> etsiCatalogVersionList = new ArrayList<>();
155 sol003FilterVersions.forEach(vnfFilterVersion -> {
156 etsiCatalogVersionList.add(new Version().vnfSoftwareVersion(vnfFilterVersion.getVnfSoftwareVersion())
157 .vnfdVersions(vnfFilterVersion.getVnfdVersions()));
159 return etsiCatalogVersionList;
161 return Collections.emptyList();
164 private List<org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmNotificationsFilter.NotificationTypesEnum> getPkgmNotificationsFilterNotificationTypes(
165 final List<NotificationTypesEnum> notificationTypes) {
167 if (notificationTypes != null && !notificationTypes.isEmpty()) {
168 final List<org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmNotificationsFilter.NotificationTypesEnum> etsiCatalogManagerNotificationTypes =
170 notificationTypes.forEach(type -> etsiCatalogManagerNotificationTypes.add(
171 org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmNotificationsFilter.NotificationTypesEnum
172 .fromValue(type.getValue())));
173 return etsiCatalogManagerNotificationTypes;
175 return Collections.emptyList();