2 * ============LICENSE_START=======================================================
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
11 * http://www.apache.org/licenses/LICENSE-2.0
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=========================================================
22 package org.onap.so.client.aai.mapper;
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;
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;
39 public class AAIObjectMapper {
40 private static final ModelMapper modelMapper = new ModelMapper();
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>(){
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());
57 return modelMapper.map(serviceInstance,org.onap.aai.domain.yang.ServiceInstance.class);
60 public org.onap.aai.domain.yang.Project mapProject (Project project){
61 return modelMapper.map(project,org.onap.aai.domain.yang.Project.class);
64 public org.onap.aai.domain.yang.ServiceSubscription mapServiceSubscription(ServiceSubscription serviceSubscription){
65 return modelMapper.map(serviceSubscription,org.onap.aai.domain.yang.ServiceSubscription.class);
68 public org.onap.aai.domain.yang.OwningEntity mapOwningEntity (OwningEntity owningEntity){
69 return modelMapper.map(owningEntity,org.onap.aai.domain.yang.OwningEntity.class);
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>(){
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());
88 return modelMapper.map(vnf, org.onap.aai.domain.yang.GenericVnf.class);
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>(){
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());
106 return modelMapper.map(vfModule, org.onap.aai.domain.yang.VfModule.class);
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>(){
113 protected void configure() {
114 map().setModelCustomizationId(source.getModelInfoVfModule().getModelCustomizationUUID());
115 map().setVfModuleModelCustomizationId(source.getModelInfoVfModule().getModelCustomizationUUID());
119 return modelMapper.map(volumeGroup, org.onap.aai.domain.yang.VolumeGroup.class);
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>(){
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);
139 return modelMapper.map(l3Network, org.onap.aai.domain.yang.L3Network.class);
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>(){
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());
156 return modelMapper.map(instanceGroup, org.onap.aai.domain.yang.InstanceGroup.class);
159 public org.onap.aai.domain.yang.Customer mapCustomer(Customer customer) {
160 return modelMapper.map(customer, org.onap.aai.domain.yang.Customer.class);
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());
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());
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());
181 public org.onap.aai.domain.yang.Subnets mapToAAISubNets(List<Subnet> subnetList) {
182 org.onap.aai.domain.yang.Subnets subnets = null;
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());
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);
214 subnet.setHostRoutes(hostRoutes);
215 subnets.getSubnet().add(subnet);
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();
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);
233 return ctagAssignments;
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);
247 return segmentationAssignments;
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>(){
254 protected void configure() {
255 map().setModelCustomizationId(source.getModelInfoConfiguration().getModelCustomizationId());
256 map().setModelVersionId(source.getModelInfoConfiguration().getModelVersionId());
257 map().setModelInvariantId(source.getModelInfoConfiguration().getModelInvariantId());
261 return modelMapper.map(configuration, org.onap.aai.domain.yang.Configuration.class);
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>(){
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());
279 return modelMapper.map(networkCollection, org.onap.aai.domain.yang.Collection.class);
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;
289 public org.onap.aai.domain.yang.RouteTarget mapRouteTarget(RouteTarget routeTarget) {
290 return modelMapper.map(routeTarget, org.onap.aai.domain.yang.RouteTarget.class);
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));
299 aaiVpnBinding.setRouteTargets(routeTargets);