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