Merge from ECOMP's repository
[vid.git] / vid-app-common / src / main / java / org / onap / vid / aai / util / AAITreeConverter.java
1 package org.onap.vid.aai.util;
2
3 import org.apache.commons.lang3.StringUtils;
4 import org.onap.vid.model.aaiTree.*;
5 import org.onap.vid.mso.model.ModelInfo;
6 import org.onap.vid.services.AAITreeNodeBuilder;
7 import org.springframework.stereotype.Component;
8
9 import java.util.Objects;
10
11 import static java.util.function.Function.identity;
12 import static java.util.stream.Collectors.counting;
13 import static java.util.stream.Collectors.groupingBy;
14 import static org.onap.vid.asdc.parser.ToscaParserImpl2.Constants.A_LA_CARTE;
15
16 @Component
17 public class AAITreeConverter {
18
19     public static final String VNF_TYPE = "vnf-type";
20     public static final String NETWORK_TYPE = "network-type";
21
22     public static final String IS_BASE_VF_MODULE = "is-base-vf-module";
23
24     public enum ModelType {
25         service,
26         vnf,
27         network,
28         instanceGroup,
29         vfModule
30     }
31
32     public ServiceInstance convertTreeToUIModel(AAITreeNode rootNode, String globalCustomerId, String serviceType, String instantiationType) {
33         ServiceInstance serviceInstance = new ServiceInstance();
34         serviceInstance.setInstanceId(rootNode.getId());
35         serviceInstance.setInstanceName(rootNode.getName());
36         serviceInstance.setOrchStatus(rootNode.getOrchestrationStatus());
37         serviceInstance.setGlobalSubscriberId(globalCustomerId);
38         serviceInstance.setSubscriptionServiceType(serviceType);
39         serviceInstance.setIsALaCarte(StringUtils.equals(instantiationType, A_LA_CARTE));
40
41         serviceInstance.setModelInfo(createModelInfo(rootNode, ModelType.service));
42
43         //set children: vnf, network,group
44         rootNode.getChildren().forEach(child -> {
45             if (child.getType().equals(AAITreeNodeBuilder.GENERIC_VNF)) {
46                 serviceInstance.getVnfs().put(child.getUniqueNodeKey(), Vnf.from(child));
47             } else if (child.getType().equals(AAITreeNodeBuilder.NETWORK)) {
48                 serviceInstance.getNetworks().put(child.getUniqueNodeKey(), Network.from(child));
49             } else if (child.getType().equals(AAITreeNodeBuilder.INSTANCE_GROUP)) {
50                 serviceInstance.getVnfGroups().put(child.getUniqueNodeKey(), VnfGroup.from(child));
51             }
52         });
53
54         serviceInstance.setExistingVNFCounterMap(
55                 serviceInstance.getVnfs().entrySet().stream()
56                         .map(k -> k.getValue().getModelInfo().getModelVersionId())
57                         .collect(groupingBy(identity(), counting()))
58         );
59
60         serviceInstance.setExistingNetworksCounterMap(
61                 serviceInstance.getNetworks().entrySet().stream()
62                 .map(k -> k.getValue().getModelInfo().getModelVersionId())
63                 .filter(Objects::nonNull)
64                         .collect(groupingBy(identity(), counting()))
65         );
66
67
68         serviceInstance.setExistingVnfGroupCounterMap(
69                 serviceInstance.getVnfGroups().entrySet().stream()
70                 .map(k -> k.getValue().getModelInfo().getModelVersionId())
71                 .filter(Objects::nonNull)
72                         .collect(groupingBy(identity(), counting()))
73         );
74
75         return serviceInstance;
76     }
77
78     private static ModelInfo createModelInfo(AAITreeNode aaiNode, ModelType modelType) {
79         ModelInfo modelInfo = new ModelInfo();
80         modelInfo.setModelType(modelType.name());
81         modelInfo.setModelName(aaiNode.getModelName());
82         modelInfo.setModelVersion(aaiNode.getModelVersion());
83         modelInfo.setModelVersionId(aaiNode.getModelVersionId());
84         modelInfo.setModelInvariantId(aaiNode.getModelInvariantId());
85         modelInfo.setModelCustomizationId(aaiNode.getModelCustomizationId());
86
87         return modelInfo;
88     }
89 }