d0fd4c9e7cbf922409f82d61807fc6ac3c83479f
[so.git] / adapters / mso-vnfm-adapter / mso-vnfm-etsi-adapter / src / main / java / org / onap / so / adapters / vnfmadapter / converters / sol003 / etsicatalog / PkgmSubscriptionRequestConverter.java
1 /*-
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
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
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.
16  *
17  * SPDX-License-Identifier: Apache-2.0
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.so.adapters.vnfmadapter.converters.sol003.etsicatalog;
22
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;
39
40 /**
41  * Converter to convert from an Etsi Catalog Manager {@link PkgmSubscriptionRequest} Object to its equivalent ETSI
42  * Catalog Manager Object
43  *
44  * @author Ronan Kenny (ronan.kenny@est.tech)
45  * @author Gareth Roper (gareth.roper@est.tech)
46  */
47 @Service
48 public class PkgmSubscriptionRequestConverter implements
49         Converter<PkgmSubscriptionRequest, org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmSubscriptionRequest> {
50
51     @Override
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();
56
57         etsiCatalogManagerSubscriptionRequest
58                 .setFilters(getPkgmNotificationsFilter(pkgmSubscriptionRequest.getFilter()));
59
60         return etsiCatalogManagerSubscriptionRequest;
61     }
62
63
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();
68
69         if (sol003SubscriptionsFilter.getNotificationTypes() != null) {
70             etsiCatalogManagerFilters.setNotificationTypes(
71                     getPkgmNotificationsFilterNotificationTypes(sol003SubscriptionsFilter.getNotificationTypes()));
72         }
73
74         etsiCatalogManagerFilters.setVnfProductsFromProviders(
75                 getVnfProductsProviders(sol003SubscriptionsFilter.getVnfProductsFromProviders()));
76
77         etsiCatalogManagerFilters.setVnfdId(getVnfdIds(sol003SubscriptionsFilter.getVnfdId()));
78
79         etsiCatalogManagerFilters.setVnfPkgId(getVnfPkgIds(sol003SubscriptionsFilter.getVnfPkgId()));
80
81         etsiCatalogManagerFilters
82                 .setOperationalState(getOperationalState(sol003SubscriptionsFilter.getOperationalState()));
83
84         etsiCatalogManagerFilters.setUsageState(null);
85
86         return etsiCatalogManagerFilters;
87     }
88
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) {
94             return Arrays.asList(
95                     org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmNotificationsFilter.OperationalStateEnum
96                             .fromValue(operationalState.getValue()));
97         }
98         return Collections.emptyList();
99     }
100
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);
106             });
107         }
108         return Collections.emptyList();
109     }
110
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);
116             });
117         }
118         return Collections.emptyList();
119     }
120
121     private List<VnfProductsProviders> getVnfProductsProviders(
122             final List<SubscriptionsFilterVnfProductsFromProviders> filterProductsFromProvider) {
123
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())));
130             });
131             return etsiCatalogManagerVnfProductsProviders;
132         }
133         return Collections.emptyList();
134     }
135
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())));
142             });
143             return etsiCatalogManagerVnfProductsList;
144         }
145         return Collections.emptyList();
146     }
147
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()));
154             });
155             return etsiCatalogVersionList;
156         }
157         return Collections.emptyList();
158     }
159
160     private List<org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmNotificationsFilter.NotificationTypesEnum> getPkgmNotificationsFilterNotificationTypes(
161             final List<NotificationTypesEnum> notificationTypes) {
162
163         if (notificationTypes != null && !notificationTypes.isEmpty()) {
164             final List<org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmNotificationsFilter.NotificationTypesEnum> etsiCatalogManagerNotificationTypes =
165                     new ArrayList<>();
166             notificationTypes.forEach(type -> etsiCatalogManagerNotificationTypes.add(
167                     org.onap.so.adapters.vnfmadapter.extclients.etsicatalog.model.PkgmNotificationsFilter.NotificationTypesEnum
168                             .fromValue(type.getValue())));
169         }
170         return Collections.emptyList();
171     }
172
173
174 }