Merge "Support for SO to ExtAPI"
[so.git] / bpmn / so-bpmn-tasks / src / main / java / org / onap / so / client / aai / mapper / AAIObjectMapper.java
1 /*-
2  * ============LICENSE_START=======================================================
3  * ONAP - SO
4  * ================================================================================
5  * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  * 
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  * 
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 package org.onap.so.client.aai.mapper;
22
23 import org.modelmapper.ModelMapper;
24 import org.modelmapper.PropertyMap;
25 import org.onap.aai.domain.yang.RouteTargets;
26 import org.onap.so.bpmn.servicedecomposition.bbobjects.*;
27 import org.springframework.stereotype.Component;
28 import java.util.List;
29 import org.modelmapper.Converter;
30 import org.modelmapper.spi.MappingContext;
31 import org.onap.so.bpmn.servicedecomposition.bbobjects.HostRoute;
32 import org.onap.so.bpmn.servicedecomposition.bbobjects.SegmentationAssignment;
33 import org.onap.so.bpmn.servicedecomposition.bbobjects.CtagAssignment;
34 import org.onap.so.bpmn.servicedecomposition.bbobjects.Subnet;
35
36 @Component
37 public class AAIObjectMapper {
38     private static final ModelMapper modelMapper = new ModelMapper();
39
40     public org.onap.aai.domain.yang.ServiceInstance mapServiceInstance(ServiceInstance serviceInstance) {
41         if (modelMapper.getTypeMap(ServiceInstance.class, org.onap.aai.domain.yang.ServiceInstance.class) == null) {
42             modelMapper.addMappings(new PropertyMap<ServiceInstance, org.onap.aai.domain.yang.ServiceInstance>() {
43                 @Override
44                 protected void configure() {
45                     map().setServiceType(source.getModelInfoServiceInstance().getServiceType());
46                     map().setServiceRole(source.getModelInfoServiceInstance().getServiceRole());
47                     map().setModelInvariantId(source.getModelInfoServiceInstance().getModelInvariantUuid());
48                     map().setModelVersionId(source.getModelInfoServiceInstance().getModelUuid());
49                     map().setEnvironmentContext(source.getModelInfoServiceInstance().getEnvironmentContext());
50                     map().setWorkloadContext(source.getModelInfoServiceInstance().getWorkloadContext());
51                 }
52             });
53         }
54
55         return modelMapper.map(serviceInstance, org.onap.aai.domain.yang.ServiceInstance.class);
56     }
57
58     public org.onap.aai.domain.yang.Project mapProject(Project project) {
59         return modelMapper.map(project, org.onap.aai.domain.yang.Project.class);
60     }
61
62     public org.onap.aai.domain.yang.ServiceSubscription mapServiceSubscription(
63             ServiceSubscription serviceSubscription) {
64         return modelMapper.map(serviceSubscription, org.onap.aai.domain.yang.ServiceSubscription.class);
65     }
66
67     public org.onap.aai.domain.yang.OwningEntity mapOwningEntity(OwningEntity owningEntity) {
68         return modelMapper.map(owningEntity, org.onap.aai.domain.yang.OwningEntity.class);
69     }
70
71     public org.onap.aai.domain.yang.GenericVnf mapVnf(GenericVnf vnf) {
72         if (modelMapper.getTypeMap(GenericVnf.class, org.onap.aai.domain.yang.GenericVnf.class) == null) {
73             modelMapper.addMappings(new PropertyMap<GenericVnf, org.onap.aai.domain.yang.GenericVnf>() {
74                 @Override
75                 protected void configure() {
76                     map().setModelCustomizationId(source.getModelInfoGenericVnf().getModelCustomizationUuid());
77                     map().setModelInvariantId(source.getModelInfoGenericVnf().getModelInvariantUuid());
78                     map().setModelVersionId(source.getModelInfoGenericVnf().getModelUuid());
79                     map().setNfRole(source.getModelInfoGenericVnf().getNfRole());
80                     map().setNfType(source.getModelInfoGenericVnf().getNfType());
81                     map().setNfFunction(source.getModelInfoGenericVnf().getNfFunction());
82                     map().setNfNamingCode(source.getModelInfoGenericVnf().getNfNamingCode());
83                 }
84             });
85         }
86
87         return modelMapper.map(vnf, org.onap.aai.domain.yang.GenericVnf.class);
88     }
89
90     public org.onap.aai.domain.yang.VfModule mapVfModule(VfModule vfModule) {
91         if (modelMapper.getTypeMap(VfModule.class, org.onap.aai.domain.yang.VfModule.class) == null) {
92             modelMapper.addMappings(new PropertyMap<VfModule, org.onap.aai.domain.yang.VfModule>() {
93                 @Override
94                 protected void configure() {
95                     map().setModelCustomizationId(source.getModelInfoVfModule().getModelCustomizationUUID());
96                     map().setModelInvariantId(source.getModelInfoVfModule().getModelInvariantUUID());
97                     map().setModelVersionId(source.getModelInfoVfModule().getModelUUID());
98                     map().setPersonaModelVersion(source.getModelInfoVfModule().getModelInvariantUUID());
99                     map().setIsBaseVfModule(source.getModelInfoVfModule().getIsBaseBoolean());
100
101                 }
102             });
103         }
104
105         return modelMapper.map(vfModule, org.onap.aai.domain.yang.VfModule.class);
106     }
107
108     public org.onap.aai.domain.yang.VolumeGroup mapVolumeGroup(VolumeGroup volumeGroup) {
109         if (modelMapper.getTypeMap(VolumeGroup.class, org.onap.aai.domain.yang.VolumeGroup.class) == null) {
110             modelMapper.addMappings(new PropertyMap<VolumeGroup, org.onap.aai.domain.yang.VolumeGroup>() {
111                 @Override
112                 protected void configure() {
113                     map().setModelCustomizationId(source.getModelInfoVfModule().getModelCustomizationUUID());
114                     map().setVfModuleModelCustomizationId(source.getModelInfoVfModule().getModelCustomizationUUID());
115                 }
116             });
117         }
118         return modelMapper.map(volumeGroup, org.onap.aai.domain.yang.VolumeGroup.class);
119     }
120
121     public org.onap.aai.domain.yang.L3Network mapNetwork(L3Network l3Network) {
122         if (modelMapper.getTypeMap(L3Network.class, org.onap.aai.domain.yang.L3Network.class) == null) {
123             modelMapper.addMappings(new PropertyMap<L3Network, org.onap.aai.domain.yang.L3Network>() {
124                 @Override
125                 protected void configure() {
126                     map().setModelCustomizationId(source.getModelInfoNetwork().getModelCustomizationUUID());
127                     map().setModelInvariantId(source.getModelInfoNetwork().getModelInvariantUUID());
128                     map().setModelVersionId(source.getModelInfoNetwork().getModelUUID());
129                     map().setNetworkType(source.getModelInfoNetwork().getNetworkType());
130                     map().setNetworkRole(source.getModelInfoNetwork().getNetworkRole());
131                     map().setNetworkTechnology(source.getModelInfoNetwork().getNetworkTechnology());
132                     modelMapper.addConverter(convertSubnets);
133                     modelMapper.addConverter(convertCtagAssignments);
134                     modelMapper.addConverter(convertSegmentationAssignments);
135                 }
136             });
137         }
138         return modelMapper.map(l3Network, org.onap.aai.domain.yang.L3Network.class);
139     }
140
141     public org.onap.aai.domain.yang.InstanceGroup mapInstanceGroup(InstanceGroup instanceGroup) {
142         if (modelMapper.getTypeMap(InstanceGroup.class, org.onap.aai.domain.yang.InstanceGroup.class) == null) {
143             modelMapper.addMappings(new PropertyMap<InstanceGroup, org.onap.aai.domain.yang.InstanceGroup>() {
144                 @Override
145                 protected void configure() {
146                     map().setInstanceGroupRole(source.getModelInfoInstanceGroup().getInstanceGroupRole());
147                     map().setModelInvariantId(source.getModelInfoInstanceGroup().getModelInvariantUUID());
148                     map().setModelVersionId(source.getModelInfoInstanceGroup().getModelUUID());
149                     map().setInstanceGroupType(source.getModelInfoInstanceGroup().getType());
150                     map().setDescription(source.getModelInfoInstanceGroup().getDescription());
151                     map().setInstanceGroupFunction(source.getModelInfoInstanceGroup().getFunction());
152                 }
153             });
154         }
155         return modelMapper.map(instanceGroup, org.onap.aai.domain.yang.InstanceGroup.class);
156     }
157
158     public org.onap.aai.domain.yang.Customer mapCustomer(Customer customer) {
159         return modelMapper.map(customer, org.onap.aai.domain.yang.Customer.class);
160     }
161
162     private Converter<List<Subnet>, org.onap.aai.domain.yang.Subnets> convertSubnets =
163             new Converter<List<Subnet>, org.onap.aai.domain.yang.Subnets>() {
164                 public org.onap.aai.domain.yang.Subnets convert(
165                         MappingContext<List<Subnet>, org.onap.aai.domain.yang.Subnets> context) {
166                     return mapToAAISubNets(context.getSource());
167                 }
168             };
169
170     private Converter<List<CtagAssignment>, org.onap.aai.domain.yang.CtagAssignments> convertCtagAssignments =
171             new Converter<List<CtagAssignment>, org.onap.aai.domain.yang.CtagAssignments>() {
172                 public org.onap.aai.domain.yang.CtagAssignments convert(
173                         MappingContext<List<CtagAssignment>, org.onap.aai.domain.yang.CtagAssignments> context) {
174                     return mapToAAICtagAssignmentList(context.getSource());
175                 }
176             };
177
178     private Converter<List<SegmentationAssignment>, org.onap.aai.domain.yang.SegmentationAssignments> convertSegmentationAssignments =
179             new Converter<List<SegmentationAssignment>, org.onap.aai.domain.yang.SegmentationAssignments>() {
180                 public org.onap.aai.domain.yang.SegmentationAssignments convert(
181                         MappingContext<List<SegmentationAssignment>, org.onap.aai.domain.yang.SegmentationAssignments> context) {
182                     return mapToAAISegmentationAssignmentList(context.getSource());
183                 }
184             };
185
186     public org.onap.aai.domain.yang.Subnets mapToAAISubNets(List<Subnet> subnetList) {
187         org.onap.aai.domain.yang.Subnets subnets = null;
188
189         if (!subnetList.isEmpty()) {
190             subnets = new org.onap.aai.domain.yang.Subnets();
191             org.onap.aai.domain.yang.Subnet subnet = null;
192             for (Subnet subnetSource : subnetList) {
193                 subnet = new org.onap.aai.domain.yang.Subnet();
194                 subnet.setSubnetId(subnetSource.getSubnetId());
195                 subnet.setSubnetName(subnetSource.getSubnetName());
196                 subnet.setNeutronSubnetId(subnetSource.getNeutronSubnetId());
197                 subnet.setGatewayAddress(subnetSource.getGatewayAddress());
198                 subnet.setCidrMask(subnetSource.getCidrMask());
199                 subnet.setIpVersion(subnetSource.getIpVersion());
200                 subnet.setOrchestrationStatus(subnetSource.getOrchestrationStatus().toString());
201                 subnet.setCidrMask(subnetSource.getCidrMask());
202                 subnet.setDhcpEnabled(subnetSource.isDhcpEnabled());
203                 subnet.setDhcpStart(subnetSource.getDhcpStart());
204                 subnet.setDhcpEnd(subnetSource.getDhcpEnd());
205                 subnet.setSubnetRole(subnetSource.getSubnetRole());
206                 subnet.setIpAssignmentDirection(subnetSource.getIpAssignmentDirection());
207                 subnet.setSubnetSequence(subnetSource.getSubnetSequence());
208
209                 org.onap.aai.domain.yang.HostRoutes hostRoutes = new org.onap.aai.domain.yang.HostRoutes();
210                 org.onap.aai.domain.yang.HostRoute hostRoute = null;
211                 for (HostRoute hostRouteSource : subnetSource.getHostRoutes()) {
212                     hostRoute = new org.onap.aai.domain.yang.HostRoute();
213                     hostRoute.setHostRouteId(hostRouteSource.getHostRouteId());
214                     hostRoute.setRoutePrefix(hostRouteSource.getRoutePrefix());
215                     hostRoute.setNextHop(hostRouteSource.getNextHop());
216                     hostRoute.setNextHopType(hostRouteSource.getNextHopType());
217                     hostRoutes.getHostRoute().add(hostRoute);
218                 }
219                 subnet.setHostRoutes(hostRoutes);
220                 subnets.getSubnet().add(subnet);
221             }
222         }
223         return subnets;
224     }
225
226     public org.onap.aai.domain.yang.CtagAssignments mapToAAICtagAssignmentList(
227             List<CtagAssignment> ctagAssignmentsList) {
228         org.onap.aai.domain.yang.CtagAssignments ctagAssignments = null;
229         if (!ctagAssignmentsList.isEmpty()) {
230             ctagAssignments = new org.onap.aai.domain.yang.CtagAssignments();
231
232             org.onap.aai.domain.yang.CtagAssignment ctagAssignment = null;
233             for (CtagAssignment ctagAssignmentSource : ctagAssignmentsList) {
234                 ctagAssignment = new org.onap.aai.domain.yang.CtagAssignment();
235                 ctagAssignment.setVlanIdInner(ctagAssignmentSource.getVlanIdInner());
236                 ctagAssignments.getCtagAssignment().add(ctagAssignment);
237             }
238         }
239         return ctagAssignments;
240     }
241
242     public org.onap.aai.domain.yang.SegmentationAssignments mapToAAISegmentationAssignmentList(
243             List<SegmentationAssignment> segmentationAssignmentList) {
244         org.onap.aai.domain.yang.SegmentationAssignments segmentationAssignments = null;
245         if (!segmentationAssignmentList.isEmpty()) {
246             segmentationAssignments = new org.onap.aai.domain.yang.SegmentationAssignments();
247             org.onap.aai.domain.yang.SegmentationAssignment segmentationAssignment = null;
248             for (SegmentationAssignment segmentationAssignmentSource : segmentationAssignmentList) {
249                 segmentationAssignment = new org.onap.aai.domain.yang.SegmentationAssignment();
250                 segmentationAssignment.setSegmentationId(segmentationAssignmentSource.getSegmentationId());
251                 segmentationAssignments.getSegmentationAssignment().add(segmentationAssignment);
252             }
253         }
254         return segmentationAssignments;
255     }
256
257     public org.onap.aai.domain.yang.Configuration mapConfiguration(Configuration configuration) {
258         if (null == modelMapper.getTypeMap(Configuration.class, org.onap.aai.domain.yang.Configuration.class)) {
259             modelMapper.addMappings(new PropertyMap<Configuration, org.onap.aai.domain.yang.Configuration>() {
260                 @Override
261                 protected void configure() {
262                     map().setModelCustomizationId(source.getModelInfoConfiguration().getModelCustomizationId());
263                     map().setModelVersionId(source.getModelInfoConfiguration().getModelVersionId());
264                     map().setModelInvariantId(source.getModelInfoConfiguration().getModelInvariantId());
265                     map().setConfigurationType(source.getModelInfoConfiguration().getConfigurationType());
266                     map().setConfigurationSubType(source.getModelInfoConfiguration().getConfigurationRole());
267                     map().setConfigPolicyName(source.getModelInfoConfiguration().getPolicyName());
268                 }
269             });
270         }
271         return modelMapper.map(configuration, org.onap.aai.domain.yang.Configuration.class);
272     }
273
274     public org.onap.aai.domain.yang.Collection mapCollection(Collection networkCollection) {
275         if (modelMapper.getTypeMap(Collection.class, org.onap.aai.domain.yang.Collection.class) == null) {
276             modelMapper.addMappings(new PropertyMap<Collection, org.onap.aai.domain.yang.Collection>() {
277                 @Override
278                 protected void configure() {
279                     map().setModelInvariantId(source.getModelInfoCollection().getModelInvariantUUID());
280                     map().setModelVersionId(source.getModelInfoCollection().getModelVersionId());
281                     map().setCollectionCustomizationId(source.getModelInfoCollection().getModelCustomizationUUID());
282                     map().setCollectionFunction(source.getModelInfoCollection().getCollectionFunction());
283                     map().setCollectionRole(source.getModelInfoCollection().getCollectionRole());
284                     map().setCollectionType(source.getModelInfoCollection().getCollectionType());
285                     map().setCollectionName(source.getName());
286                 }
287             });
288         }
289         return modelMapper.map(networkCollection, org.onap.aai.domain.yang.Collection.class);
290     }
291
292
293     public org.onap.aai.domain.yang.VpnBinding mapVpnBinding(VpnBinding vpnBinding) {
294         org.onap.aai.domain.yang.VpnBinding aaiVpnBinding =
295                 modelMapper.map(vpnBinding, org.onap.aai.domain.yang.VpnBinding.class);
296         mapRouteTargetToVpnBinding(aaiVpnBinding, vpnBinding);
297         return aaiVpnBinding;
298     }
299
300     public org.onap.aai.domain.yang.RouteTarget mapRouteTarget(RouteTarget routeTarget) {
301         return modelMapper.map(routeTarget, org.onap.aai.domain.yang.RouteTarget.class);
302     }
303
304     private void mapRouteTargetToVpnBinding(org.onap.aai.domain.yang.VpnBinding aaiVpnBinding, VpnBinding vpnBinding) {
305         if (vpnBinding.getRouteTargets() != null && !vpnBinding.getRouteTargets().isEmpty()) {
306             RouteTargets routeTargets = new RouteTargets();
307             for (RouteTarget routeTarget : vpnBinding.getRouteTargets()) {
308                 routeTargets.getRouteTarget().add(mapRouteTarget(routeTarget));
309             }
310             aaiVpnBinding.setRouteTargets(routeTargets);
311         }
312     }
313
314     public org.onap.aai.domain.yang.Subnet mapSubnet(Subnet subnet) {
315         return modelMapper.map(subnet, org.onap.aai.domain.yang.Subnet.class);
316     }
317
318     public org.onap.aai.domain.yang.NetworkPolicy mapNetworkPolicy(NetworkPolicy networkPolicy) {
319         return modelMapper.map(networkPolicy, org.onap.aai.domain.yang.NetworkPolicy.class);
320     }
321 }