Merge "vfModule id should be retrieved from resourceId"
[so.git] / bpmn / MSOCommonBPMN / src / main / java / org / onap / so / bpmn / servicedecomposition / tasks / BBInputSetupMapperLayer.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Modifications Copyright (c) 2019 Samsung
8  * ================================================================================
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  *      http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  * ============LICENSE_END=========================================================
21  */
22
23 package org.onap.so.bpmn.servicedecomposition.tasks;
24
25 import java.util.ArrayList;
26 import java.util.Arrays;
27 import java.util.HashMap;
28 import java.util.List;
29 import java.util.Map;
30 import java.util.Optional;
31
32 import org.modelmapper.ModelMapper;
33 import org.modelmapper.convention.MatchingStrategies;
34 import org.onap.so.bpmn.servicedecomposition.bbobjects.AllottedResource;
35 import org.onap.so.bpmn.servicedecomposition.bbobjects.CloudRegion;
36 import org.onap.so.bpmn.servicedecomposition.bbobjects.Collection;
37 import org.onap.so.bpmn.servicedecomposition.bbobjects.Configuration;
38 import org.onap.so.bpmn.servicedecomposition.bbobjects.CtagAssignment;
39 import org.onap.so.bpmn.servicedecomposition.bbobjects.Customer;
40 import org.onap.so.bpmn.servicedecomposition.bbobjects.Entitlement;
41 import org.onap.so.bpmn.servicedecomposition.bbobjects.Evc;
42 import org.onap.so.bpmn.servicedecomposition.bbobjects.ForwarderEvc;
43 import org.onap.so.bpmn.servicedecomposition.bbobjects.GenericVnf;
44 import org.onap.so.bpmn.servicedecomposition.bbobjects.L3Network;
45 import org.onap.so.bpmn.servicedecomposition.bbobjects.LagInterface;
46 import org.onap.so.bpmn.servicedecomposition.bbobjects.LineOfBusiness;
47 import org.onap.so.bpmn.servicedecomposition.bbobjects.NetworkPolicy;
48 import org.onap.so.bpmn.servicedecomposition.bbobjects.OwningEntity;
49 import org.onap.so.bpmn.servicedecomposition.bbobjects.Platform;
50 import org.onap.so.bpmn.servicedecomposition.bbobjects.Project;
51 import org.onap.so.bpmn.servicedecomposition.bbobjects.RouteTableReference;
52 import org.onap.so.bpmn.servicedecomposition.bbobjects.SegmentationAssignment;
53 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceInstance;
54 import org.onap.so.bpmn.servicedecomposition.bbobjects.ServiceSubscription;
55 import org.onap.so.bpmn.servicedecomposition.bbobjects.Subnet;
56 import org.onap.so.bpmn.servicedecomposition.bbobjects.Tenant;
57 import org.onap.so.bpmn.servicedecomposition.bbobjects.VfModule;
58 import org.onap.so.bpmn.servicedecomposition.bbobjects.Vnfc;
59 import org.onap.so.bpmn.servicedecomposition.bbobjects.VolumeGroup;
60 import org.onap.so.bpmn.servicedecomposition.entities.ResourceKey;
61 import org.onap.so.bpmn.servicedecomposition.generalobjects.License;
62 import org.onap.so.bpmn.servicedecomposition.generalobjects.OrchestrationContext;
63 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestContext;
64 import org.onap.so.bpmn.servicedecomposition.generalobjects.RequestParameters;
65 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoCollection;
66 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoConfiguration;
67 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoGenericVnf;
68 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoInstanceGroup;
69 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoNetwork;
70 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoServiceInstance;
71 import org.onap.so.bpmn.servicedecomposition.modelinfo.ModelInfoVfModule;
72 import org.onap.so.db.catalog.beans.CollectionNetworkResourceCustomization;
73 import org.onap.so.db.catalog.beans.CollectionResource;
74 import org.onap.so.db.catalog.beans.CollectionResourceCustomization;
75 import org.onap.so.db.catalog.beans.CollectionResourceInstanceGroupCustomization;
76 import org.onap.so.db.catalog.beans.ConfigurationResourceCustomization;
77 import org.onap.so.db.catalog.beans.InstanceGroup;
78 import org.onap.so.db.catalog.beans.InstanceGroupType;
79 import org.onap.so.db.catalog.beans.NetworkResourceCustomization;
80 import org.onap.so.db.catalog.beans.OrchestrationStatus;
81 import org.onap.so.db.catalog.beans.Service;
82 import org.onap.so.db.catalog.beans.VfModuleCustomization;
83 import org.onap.so.db.catalog.beans.VnfResourceCustomization;
84 import org.onap.so.db.catalog.beans.VnfVfmoduleCvnfcConfigurationCustomization;
85 import org.onap.so.serviceinstancebeans.CloudConfiguration;
86 import org.onap.so.serviceinstancebeans.RequestDetails;
87 import org.slf4j.Logger;
88 import org.slf4j.LoggerFactory;
89 import org.springframework.stereotype.Component;
90
91 @Component("BBInputSetupMapperLayer")
92 public class BBInputSetupMapperLayer {
93         private static final String USER_PARAM_NAME_KEY = "name";
94     private static final String USER_PARAM_VALUE_KEY = "value";
95
96         private static final Logger logger = LoggerFactory.getLogger(BBInputSetupMapperLayer.class);
97
98         private ModelMapper modelMapper = new ModelMapper();
99
100         public Customer mapAAICustomer(org.onap.aai.domain.yang.Customer customerAAI) {
101                 return modelMapper.map(customerAAI, Customer.class);
102         }
103
104         public ServiceSubscription mapAAIServiceSubscription(
105                         org.onap.aai.domain.yang.ServiceSubscription serviceSubscriptionAAI) {
106                 return modelMapper.map(serviceSubscriptionAAI, ServiceSubscription.class);
107         }
108
109         protected Project mapAAIProject(org.onap.aai.domain.yang.Project aaiProject) {
110                 return modelMapper.map(aaiProject, Project.class);
111         }
112
113         protected OwningEntity mapAAIOwningEntity(org.onap.aai.domain.yang.OwningEntity aaiOwningEntity) {
114                 return modelMapper.map(aaiOwningEntity, OwningEntity.class);
115         }
116
117         protected Platform mapAAIPlatform(org.onap.aai.domain.yang.Platform aaiPlatform) {
118                 return modelMapper.map(aaiPlatform, Platform.class);
119         }
120
121         protected LineOfBusiness mapAAILineOfBusiness(org.onap.aai.domain.yang.LineOfBusiness aaiLineOfBusiness) {
122                 return modelMapper.map(aaiLineOfBusiness, LineOfBusiness.class);
123         }
124
125         protected SegmentationAssignment mapAAISegmentationAssignment(
126                         org.onap.aai.domain.yang.SegmentationAssignment aaiSegmentationAssignment) {
127                 return modelMapper.map(aaiSegmentationAssignment, SegmentationAssignment.class);
128         }
129
130         protected CtagAssignment mapAAICtagAssignment(org.onap.aai.domain.yang.CtagAssignment aaiCtagAssignment) {
131                 return modelMapper.map(aaiCtagAssignment, CtagAssignment.class);
132         }
133
134         protected Subnet mapAAISubnet(org.onap.aai.domain.yang.Subnet aaiSubnet) {
135                 return modelMapper.map(aaiSubnet, Subnet.class);
136         }
137
138         protected License mapAAILicense(org.onap.aai.domain.yang.License aaiLicense) {
139                 return modelMapper.map(aaiLicense, License.class);
140         }
141
142         protected Entitlement mapAAIEntitlement(org.onap.aai.domain.yang.Entitlement aaiEntitlement) {
143                 return modelMapper.map(aaiEntitlement, Entitlement.class);
144         }
145
146         protected LagInterface mapAAILagInterface(org.onap.aai.domain.yang.LagInterface aaiLagInterface) {
147                 return modelMapper.map(aaiLagInterface, LagInterface.class);
148         }
149
150         protected VfModule mapAAIVfModule(org.onap.aai.domain.yang.VfModule aaiVfModule) {
151                 VfModule vfModule = modelMapper.map(aaiVfModule, VfModule.class);
152                 vfModule.setOrchestrationStatus(this.mapOrchestrationStatusFromAAI(aaiVfModule.getOrchestrationStatus()));
153                 
154                 ModelInfoVfModule modelInfoVfModule = new ModelInfoVfModule();
155                 modelInfoVfModule.setIsBaseBoolean(aaiVfModule.isIsBaseVfModule());             
156                 vfModule.setModelInfoVfModule(modelInfoVfModule);               
157                 return vfModule;
158         }
159
160         public NetworkPolicy mapAAINetworkPolicy(org.onap.aai.domain.yang.NetworkPolicy aaiNetworkPolicy) {
161                 return modelMapper.map(aaiNetworkPolicy, NetworkPolicy.class);
162         }
163
164         protected VolumeGroup mapAAIVolumeGroup(org.onap.aai.domain.yang.VolumeGroup aaiVolumeGroup) {
165                 VolumeGroup volumeGroup = modelMapper.map(aaiVolumeGroup, VolumeGroup.class);
166                 volumeGroup.setOrchestrationStatus(this.mapOrchestrationStatusFromAAI(aaiVolumeGroup.getOrchestrationStatus()));
167                 return volumeGroup;
168         }
169
170         protected void setPlatformAndLOBIntoServiceInstance(Platform platformMSO, LineOfBusiness lineOfBusinessMSO,
171                         ServiceInstance serviceInstance, Map<ResourceKey, String> resourcesToBeOrchestrated) {
172                 String vnfId = resourcesToBeOrchestrated.get(ResourceKey.GENERIC_VNF_ID);
173                 if (vnfId != null && !serviceInstance.getVnfs().isEmpty()) {
174                         for (GenericVnf vnf : serviceInstance.getVnfs()) {
175                                 if (vnf.getVnfId().equalsIgnoreCase(vnfId)) {
176                                         vnf.setPlatform(platformMSO);
177                                         vnf.setLineOfBusiness(lineOfBusinessMSO);
178                                         break;
179                                 }
180                         }
181                 }
182         }
183
184         public ModelInfoServiceInstance mapCatalogServiceIntoServiceInstance(Service service) {
185                 return modelMapper.map(service, ModelInfoServiceInstance.class);
186         }
187
188         protected ModelInfoInstanceGroup mapCatalogInstanceGroupToInstanceGroup(CollectionResourceCustomization collectionCust, InstanceGroup instanceGroup) {
189                 ModelInfoInstanceGroup modelInfoInstanceGroup = modelMapper.map(instanceGroup, ModelInfoInstanceGroup.class);
190                 if(instanceGroup.getType() != null && instanceGroup.getType().equals(InstanceGroupType.L3_NETWORK))
191                         modelInfoInstanceGroup.setType(ModelInfoInstanceGroup.TYPE_L3_NETWORK);
192                 else
193                         modelInfoInstanceGroup.setType(ModelInfoInstanceGroup.TYPE_VNFC);
194                 if(collectionCust != null) {
195                         List<CollectionResourceInstanceGroupCustomization> instanceGroupCustList = instanceGroup.getCollectionInstanceGroupCustomizations();
196                         for(CollectionResourceInstanceGroupCustomization collectionInsatnceGroupCust : instanceGroupCustList) {
197                                 if(collectionInsatnceGroupCust.getModelCustomizationUUID().equalsIgnoreCase(collectionCust.getModelCustomizationUUID())) {
198                                         modelInfoInstanceGroup.setFunction(collectionInsatnceGroupCust.getFunction());
199                                         modelInfoInstanceGroup.setDescription(collectionInsatnceGroupCust.getDescription());
200                                         break;
201                                 }
202                         }
203                 }
204                 return modelInfoInstanceGroup;
205         }
206
207         protected ModelInfoCollection mapCatalogCollectionToCollection(CollectionResourceCustomization collectionCust,
208                         CollectionResource collectionResource) {
209                 ModelInfoCollection modelInfoCollection = new ModelInfoCollection();
210                 modelInfoCollection.setCollectionFunction(collectionCust.getFunction());
211                 modelInfoCollection.setCollectionRole(collectionCust.getRole());
212                 modelInfoCollection.setCollectionType(collectionCust.getType());
213                 modelInfoCollection.setDescription(collectionResource.getDescription());
214                 modelInfoCollection.setModelInvariantUUID(collectionResource.getModelInvariantUUID());
215                 modelInfoCollection.setModelVersionId(collectionResource.getModelUUID());
216                 modelInfoCollection.setModelCustomizationUUID(collectionCust.getModelCustomizationUUID());
217                 return modelInfoCollection;
218         }
219
220         public ServiceInstance mapAAIServiceInstanceIntoServiceInstance(
221                         org.onap.aai.domain.yang.ServiceInstance aaiServiceInstance) {
222                 ServiceInstance serviceInstance = modelMapper.map(aaiServiceInstance, ServiceInstance.class);
223                 if (aaiServiceInstance.getAllottedResources() != null) {
224                         for (org.onap.aai.domain.yang.AllottedResource allottedResource : aaiServiceInstance.getAllottedResources()
225                                         .getAllottedResource()) {
226                                 serviceInstance.getAllottedResources().add(mapAAIAllottedResource(allottedResource));
227                         }
228                 }
229                 serviceInstance.setOrchestrationStatus(
230                                 this.mapOrchestrationStatusFromAAI(aaiServiceInstance.getOrchestrationStatus()));
231                 return serviceInstance;
232         }
233
234         protected AllottedResource mapAAIAllottedResource(org.onap.aai.domain.yang.AllottedResource aaiAllottedResource) {
235                 AllottedResource allottedResource = modelMapper.map(aaiAllottedResource, AllottedResource.class);
236                 return allottedResource;
237         }
238
239         protected L3Network mapAAIL3Network(org.onap.aai.domain.yang.L3Network aaiL3Network) {
240                 L3Network network = modelMapper.map(aaiL3Network, L3Network.class);
241                 mapAllSubnetsIntoL3Network(aaiL3Network, network);
242                 mapAllCtagAssignmentsIntoL3Network(aaiL3Network, network);
243                 mapAllSegmentationAssignmentsIntoL3Network(aaiL3Network, network);
244                 network.setOrchestrationStatus(this.mapOrchestrationStatusFromAAI(aaiL3Network.getOrchestrationStatus()));
245                 return network;
246         }
247
248         protected void mapAllSegmentationAssignmentsIntoL3Network(org.onap.aai.domain.yang.L3Network aaiL3Network,
249                         L3Network network) {
250                 if (aaiL3Network.getSegmentationAssignments() != null) {
251                         for (org.onap.aai.domain.yang.SegmentationAssignment aaiSegmentationAssignment : aaiL3Network
252                                         .getSegmentationAssignments().getSegmentationAssignment()) {
253                                 network.getSegmentationAssignments().add(mapAAISegmentationAssignment(aaiSegmentationAssignment));
254                         }
255                 }
256         }
257
258         protected void mapAllCtagAssignmentsIntoL3Network(org.onap.aai.domain.yang.L3Network aaiL3Network,
259                         L3Network network) {
260                 if (aaiL3Network.getCtagAssignments() != null) {
261                         for (org.onap.aai.domain.yang.CtagAssignment aaiCtagAssignment : aaiL3Network.getCtagAssignments()
262                                         .getCtagAssignment()) {
263                                 network.getCtagAssignments().add(mapAAICtagAssignment(aaiCtagAssignment));
264                         }
265                 }
266         }
267
268         protected void mapAllSubnetsIntoL3Network(org.onap.aai.domain.yang.L3Network aaiL3Network, L3Network network) {
269                 if (aaiL3Network.getSubnets() != null) {
270                         for (org.onap.aai.domain.yang.Subnet aaiSubnet : aaiL3Network.getSubnets().getSubnet()) {
271                                 network.getSubnets().add(mapAAISubnet(aaiSubnet));
272                         }
273                 }
274         }
275
276         protected GenericVnf mapAAIGenericVnfIntoGenericVnf(org.onap.aai.domain.yang.GenericVnf aaiGenericVnf) {
277                 GenericVnf genericVnf = modelMapper.map(aaiGenericVnf, GenericVnf.class);
278                 mapAllVfModulesIntoGenericVnf(aaiGenericVnf, genericVnf);
279                 mapAllLagInterfacesIntoGenericVnf(aaiGenericVnf, genericVnf);
280                 mapAllEntitlementsIntoGenericVnf(aaiGenericVnf, genericVnf);
281                 mapAllLicensesIntoGenericVnf(aaiGenericVnf, genericVnf);
282                 genericVnf.setOrchestrationStatus(this.mapOrchestrationStatusFromAAI(aaiGenericVnf.getOrchestrationStatus()));
283                 return genericVnf;
284         }
285
286         protected void mapAllLicensesIntoGenericVnf(org.onap.aai.domain.yang.GenericVnf aaiGenericVnf,
287                         GenericVnf genericVnf) {
288                 if (aaiGenericVnf.getLicenses() != null) {
289                         for (org.onap.aai.domain.yang.License aaiLicense : aaiGenericVnf.getLicenses().getLicense()) {
290                                 genericVnf.setLicense(mapAAILicense(aaiLicense));
291                         }
292                 }
293         }
294
295         protected void mapAllEntitlementsIntoGenericVnf(org.onap.aai.domain.yang.GenericVnf aaiGenericVnf,
296                         GenericVnf genericVnf) {
297                 if (aaiGenericVnf.getEntitlements() != null) {
298                         for (org.onap.aai.domain.yang.Entitlement aaiEntitlement : aaiGenericVnf.getEntitlements()
299                                         .getEntitlement()) {
300                                 genericVnf.getEntitlements().add(mapAAIEntitlement(aaiEntitlement));
301                         }
302                 }
303         }
304
305         protected void mapAllLagInterfacesIntoGenericVnf(org.onap.aai.domain.yang.GenericVnf aaiGenericVnf,
306                         GenericVnf genericVnf) {
307                 if (aaiGenericVnf.getLagInterfaces() != null) {
308                         for (org.onap.aai.domain.yang.LagInterface aaiLagInterface : aaiGenericVnf.getLagInterfaces()
309                                         .getLagInterface()) {
310                                 genericVnf.getLagInterfaces().add(mapAAILagInterface(aaiLagInterface));
311                         }
312                 }
313         }
314
315         protected void mapAllVfModulesIntoGenericVnf(org.onap.aai.domain.yang.GenericVnf aaiGenericVnf,
316                         GenericVnf genericVnf) {
317                 if (aaiGenericVnf.getVfModules() != null) {
318                         for (org.onap.aai.domain.yang.VfModule aaiVfModule : aaiGenericVnf.getVfModules().getVfModule()) {
319                                 VfModule vfModule = mapAAIVfModule(aaiVfModule);
320                                 genericVnf.getVfModules().add(vfModule);
321                         }
322                 }
323         }
324
325         public OrchestrationStatus mapOrchestrationStatusFromAAI(String orchestrationStatus) {
326
327                 Optional<OrchestrationStatus> result = Arrays.asList(OrchestrationStatus.values()).stream()
328                 .filter(item -> item.fuzzyMap(orchestrationStatus))
329                 .findFirst();
330
331                 return result.orElse(null);
332
333         }
334
335         public RequestContext mapRequestContext(RequestDetails requestDetails) {
336                 RequestContext context = new RequestContext();
337                 modelMapper.map(requestDetails.getRequestInfo(), context);
338                 org.onap.so.serviceinstancebeans.RequestParameters requestParameters = requestDetails.getRequestParameters();
339                 if (null != requestParameters) {
340                         context.setSubscriptionServiceType(requestParameters.getSubscriptionServiceType());
341                         context.setRequestParameters(this.mapRequestParameters(requestDetails.getRequestParameters()));
342                         context.setUserParams(this.mapNameValueUserParams(requestDetails.getRequestParameters()));
343                 }
344                 if (requestDetails.getConfigurationParameters() != null) {
345                         context.setConfigurationParameters(requestDetails.getConfigurationParameters());
346                 }
347                 return context;
348         }
349
350         protected RequestParameters mapRequestParameters(org.onap.so.serviceinstancebeans.RequestParameters requestParameters) {
351                 RequestParameters requestParams = new RequestParameters();
352                 requestParams.setaLaCarte(requestParameters.getALaCarte());
353                 requestParams.setUsePreload(requestParameters.getUsePreload());
354                 requestParams.setSubscriptionServiceType(requestParameters.getSubscriptionServiceType());
355                 requestParams.setUserParams(requestParameters.getUserParams());
356                 requestParams.setPayload(requestParameters.getPayload());
357                 return requestParams;
358         }
359         
360         protected Map<String,Object> mapNameValueUserParams(org.onap.so.serviceinstancebeans.RequestParameters requestParameters) {             
361                 Map<String,Object> userParamsResult = new HashMap<String,Object>();
362                 if (requestParameters.getUserParams() != null) {
363                         List<Map<String, Object>> userParams = requestParameters.getUserParams();
364                         for (Map<String, Object> userParamsMap : userParams) {
365                                 if ( userParamsMap.containsKey(USER_PARAM_NAME_KEY) && (userParamsMap.get(USER_PARAM_NAME_KEY) instanceof String)
366                                                 && userParamsMap.containsKey(USER_PARAM_VALUE_KEY)) {
367                                         userParamsResult.put((String) userParamsMap.get(USER_PARAM_NAME_KEY), userParamsMap.get(USER_PARAM_VALUE_KEY));
368                                 }
369                         }
370                 }
371                 return userParamsResult;
372         }
373
374         protected OrchestrationContext mapOrchestrationContext(RequestDetails requestDetails) {
375                 OrchestrationContext context = new OrchestrationContext();
376                 context.setIsRollbackEnabled(!(requestDetails.getRequestInfo().getSuppressRollback()));
377                 return context;
378         }
379
380         protected CloudRegion mapCloudRegion(CloudConfiguration cloudConfiguration, org.onap.aai.domain.yang.CloudRegion aaiCloudRegion) {
381                 CloudRegion cloudRegion = new CloudRegion();
382                 if(cloudConfiguration != null)
383                         cloudRegion = modelMapper.map(cloudConfiguration, CloudRegion.class);
384                 if(aaiCloudRegion != null)
385                         modelMapper.map(aaiCloudRegion, cloudRegion);
386                 return cloudRegion;
387         }
388         
389         protected Tenant mapTenant(org.onap.aai.domain.yang.Tenant aaiTenant) {
390                 Tenant tenant = new Tenant();
391                 if(aaiTenant != null) {
392                         modelMapper.map(aaiTenant, tenant);
393                 }
394                 return tenant;
395         }
396
397         protected Collection mapAAICollectionIntoCollection(org.onap.aai.domain.yang.Collection aaiCollection) {
398                 Collection collection = new Collection();
399                 collection.setId(aaiCollection.getCollectionId());
400                 collection.setOrchestrationStatus(this.mapOrchestrationStatusFromAAI(aaiCollection.getOrchestrationStatus()));
401                 return collection;
402         }
403
404         protected org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup mapAAIInstanceGroupIntoInstanceGroup(
405                         org.onap.aai.domain.yang.InstanceGroup aaiInstanceGroup) {
406                 return modelMapper.map(aaiInstanceGroup,
407                                 org.onap.so.bpmn.servicedecomposition.bbobjects.InstanceGroup.class);
408         }
409
410         public RouteTableReference mapAAIRouteTableReferenceIntoRouteTableReference(
411                         org.onap.aai.domain.yang.RouteTableReference aaiRouteTableReference) {
412                 return modelMapper.map(aaiRouteTableReference, RouteTableReference.class);
413         }
414
415         protected ModelInfoNetwork mapCatalogNetworkToNetwork(NetworkResourceCustomization networkResourceCustomization) {
416                 modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
417                 ModelInfoNetwork modelInfoNetwork = modelMapper.map(networkResourceCustomization, ModelInfoNetwork.class);
418                 modelMapper.map(networkResourceCustomization.getNetworkResource(), modelInfoNetwork);
419                 modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STANDARD);
420                 return modelInfoNetwork;
421         }
422
423         protected ModelInfoGenericVnf mapCatalogVnfToVnf(VnfResourceCustomization vnfResourceCustomization) {
424                 ModelInfoGenericVnf modelInfoVnf = modelMapper.map(vnfResourceCustomization, ModelInfoGenericVnf.class);
425                 modelMapper.map(vnfResourceCustomization.getVnfResources(), modelInfoVnf);
426                 return modelInfoVnf;
427         }
428
429         protected ModelInfoVfModule mapCatalogVfModuleToVfModule(VfModuleCustomization vfResourceCustomization) {
430                 ModelInfoVfModule modelInfoVfModule = modelMapper.map(vfResourceCustomization, ModelInfoVfModule.class);
431                 modelMapper.map(vfResourceCustomization.getVfModule(), modelInfoVfModule);
432                 return modelInfoVfModule;
433         }
434
435         protected Platform mapRequestPlatform(org.onap.so.serviceinstancebeans.Platform platform) {
436                 return modelMapper.map(platform, Platform.class);
437         }
438
439         protected LineOfBusiness mapRequestLineOfBusiness(
440                         org.onap.so.serviceinstancebeans.LineOfBusiness lineOfBusiness) {
441                 return modelMapper.map(lineOfBusiness, LineOfBusiness.class);
442         }
443
444         public Configuration mapAAIConfiguration(org.onap.aai.domain.yang.Configuration configurationAAI) {
445                 modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STRICT);
446                 Configuration configuration = modelMapper.map(configurationAAI, Configuration.class);
447                 modelMapper.getConfiguration().setMatchingStrategy(MatchingStrategies.STANDARD);
448                 configuration.getForwarderEvcs().addAll(mapAllForwarderEvcs(configurationAAI));
449                 configuration.getEvcs().addAll(mapAllEvcs(configurationAAI));
450                 configuration.setOrchestrationStatus(this.mapOrchestrationStatusFromAAI(configurationAAI.getOrchestrationStatus()));
451                 return configuration;
452         }
453
454         protected List<Evc> mapAllEvcs(org.onap.aai.domain.yang.Configuration configurationAAI) {
455                 List<Evc> listOfEvcs = new ArrayList<>();
456                 if (configurationAAI.getEvcs() != null) {
457                         for (org.onap.aai.domain.yang.Evc aaiEvc : configurationAAI.getEvcs().getEvc()) {
458                                 listOfEvcs.add(mapEvc(aaiEvc));
459                         }
460                 }
461                 return listOfEvcs;
462         }
463
464         protected Evc mapEvc(org.onap.aai.domain.yang.Evc aaiEvc) {
465                 return modelMapper.map(aaiEvc, Evc.class);
466         }
467
468         protected List<ForwarderEvc> mapAllForwarderEvcs(org.onap.aai.domain.yang.Configuration configurationAAI) {
469                 List<ForwarderEvc> listOfForwarderEvcs = new ArrayList<>();
470                 if (configurationAAI.getForwarderEvcs() != null) {
471                         for (org.onap.aai.domain.yang.ForwarderEvc aaiForwarderEvc : configurationAAI.getForwarderEvcs().getForwarderEvc()) {
472                                 listOfForwarderEvcs.add(mapForwarderEvc(aaiForwarderEvc));
473                         }
474                 }
475                 return listOfForwarderEvcs;
476         }
477
478         protected ForwarderEvc mapForwarderEvc(org.onap.aai.domain.yang.ForwarderEvc aaiForwarderEvc) {
479                 return modelMapper.map(aaiForwarderEvc, ForwarderEvc.class);
480         }
481
482         protected OwningEntity mapRequestOwningEntity(org.onap.so.serviceinstancebeans.OwningEntity owningEntity) {
483                 return modelMapper.map(owningEntity, OwningEntity.class);
484         }
485
486         protected Project mapRequestProject(org.onap.so.serviceinstancebeans.Project project) {
487                 return modelMapper.map(project, Project.class);
488         }
489
490         protected ModelInfoConfiguration mapCatalogConfigurationToConfiguration(
491                         ConfigurationResourceCustomization configurationResourceCustomization, 
492                         VnfVfmoduleCvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization) {
493                 ModelInfoConfiguration modelInfoConfiguration = new ModelInfoConfiguration();
494                 modelInfoConfiguration.setModelVersionId(configurationResourceCustomization.getConfigurationResource().getModelUUID());
495                 modelInfoConfiguration.setModelCustomizationId(configurationResourceCustomization.getModelCustomizationUUID());
496                 modelInfoConfiguration.setModelInvariantId(configurationResourceCustomization.getConfigurationResource().getModelInvariantUUID());
497                 modelInfoConfiguration.setPolicyName(vnfVfmoduleCvnfcConfigurationCustomization.getPolicyName());
498                 return modelInfoConfiguration;
499         }
500         
501         protected ModelInfoConfiguration mapCatalogConfigurationToConfiguration(
502                         VnfVfmoduleCvnfcConfigurationCustomization vnfVfmoduleCvnfcConfigurationCustomization) {
503                 ModelInfoConfiguration modelInfoConfiguration = new ModelInfoConfiguration();
504                 modelInfoConfiguration.setModelVersionId(vnfVfmoduleCvnfcConfigurationCustomization.getConfigurationResource().getModelUUID());
505                 modelInfoConfiguration.setModelCustomizationId(vnfVfmoduleCvnfcConfigurationCustomization.getModelCustomizationUUID());
506                 modelInfoConfiguration.setModelInvariantId(vnfVfmoduleCvnfcConfigurationCustomization.getConfigurationResource().getModelInvariantUUID());
507                 modelInfoConfiguration.setPolicyName(vnfVfmoduleCvnfcConfigurationCustomization.getPolicyName());
508                 modelInfoConfiguration.setConfigurationType(vnfVfmoduleCvnfcConfigurationCustomization.getConfigurationType());
509                 modelInfoConfiguration.setConfigurationRole(vnfVfmoduleCvnfcConfigurationCustomization.getConfigurationRole());
510                 return modelInfoConfiguration;
511         }
512
513         public NetworkResourceCustomization mapCollectionNetworkResourceCustToNetworkResourceCust(
514                         CollectionNetworkResourceCustomization collectionNetworkResourceCust) {
515                 return modelMapper.map(collectionNetworkResourceCust, NetworkResourceCustomization.class);
516         }
517
518         public Vnfc mapAAIVnfc(org.onap.aai.domain.yang.Vnfc vnfcAAI) {
519                 return modelMapper.map(vnfcAAI, Vnfc.class);
520         }
521 }