TOSCA Consolidation Data handling - Refactoring
[sdc.git] / openecomp-be / lib / openecomp-sdc-translator-lib / openecomp-sdc-translator-core / src / main / java / org / openecomp / sdc / translator / datatypes / heattotosca / unifiedmodel / consolidation / PortConsolidationDataHandler.java
1 package org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation;
2
3 import java.util.Optional;
4 import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
5 import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
6 import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
7 import org.openecomp.sdc.heat.datatypes.model.Resource;
8 import org.openecomp.sdc.tosca.services.ToscaUtil;
9 import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslateTo;
10 import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil;
11
12 public class PortConsolidationDataHandler implements ConsolidationDataHandler {
13
14     private final PortConsolidationData portConsolidationData;
15
16     public PortConsolidationDataHandler(PortConsolidationData portConsolidationData) {
17         this.portConsolidationData = portConsolidationData;
18     }
19
20     @Override
21     public void addNodesConnectedOut(TranslateTo translateTo, String nodeTemplateId, String requirementId,
22             RequirementAssignment requirementAssignment) {
23
24         EntityConsolidationData entityConsolidationData =
25                 getPortTemplateConsolidationData(translateTo, translateTo.getResourceId(),
26                         translateTo.getResource().getType(), translateTo.getTranslatedId());
27
28         entityConsolidationData.addNodesConnectedOut(nodeTemplateId, requirementId, requirementAssignment);
29
30     }
31
32     @Override
33     public void addNodesConnectedIn(TranslateTo translateTo, String sourceNodeTemplateId,
34             String dependentNodeTemplateId, String targetResourceId, String requirementId,
35             RequirementAssignment requirementAssignment) {
36
37         EntityConsolidationData entityConsolidationData =
38                 getPortTemplateConsolidationData(translateTo, translateTo.getResourceId(),
39                         translateTo.getResource().getType(), dependentNodeTemplateId);
40
41         entityConsolidationData.addNodesConnectedIn(sourceNodeTemplateId, requirementId, requirementAssignment);
42
43     }
44
45     @Override
46     public void removeParamNameFromAttrFuncList(ServiceTemplate serviceTemplate,
47             HeatOrchestrationTemplate heatOrchestrationTemplate, String paramName, String contrailSharedResourceId,
48             String sharedTranslatedResourceId) {
49
50         Resource resource = heatOrchestrationTemplate.getResources().get(contrailSharedResourceId);
51         EntityConsolidationData entityConsolidationData = getPortTemplateConsolidationData(serviceTemplate,
52                 contrailSharedResourceId, resource.getType(), sharedTranslatedResourceId);
53         entityConsolidationData.removeParamNameFromAttrFuncList(paramName);
54
55     }
56
57     private PortTemplateConsolidationData getPortTemplateConsolidationData(TranslateTo translateTo,
58             String portResourceId, String portResourceType, String portNodeTemplateId) {
59         ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
60         return getPortTemplateConsolidationData(serviceTemplate, portResourceId, portResourceType, portNodeTemplateId);
61     }
62
63     private PortTemplateConsolidationData getPortTemplateConsolidationData(ServiceTemplate serviceTemplate,
64             String portResourceId, String portResourceType, String portNodeTemplateId) {
65
66         String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
67         FilePortConsolidationData filePortConsolidationData = portConsolidationData
68                 .getFilePortConsolidationData(serviceTemplateFileName);
69
70         if (filePortConsolidationData == null) {
71             filePortConsolidationData = new FilePortConsolidationData();
72             portConsolidationData.setFilePortConsolidationData(serviceTemplateFileName,
73                     filePortConsolidationData);
74         }
75
76         PortTemplateConsolidationData portTemplateConsolidationData =
77                 filePortConsolidationData.getPortTemplateConsolidationData(portNodeTemplateId);
78         if (portTemplateConsolidationData == null) {
79             portTemplateConsolidationData = getInitPortTemplateConsolidationData(portNodeTemplateId,
80                     portResourceId, portResourceType);
81             filePortConsolidationData.setPortTemplateConsolidationData(portNodeTemplateId,
82                     portTemplateConsolidationData);
83         }
84
85         return portTemplateConsolidationData;
86     }
87
88     private static PortTemplateConsolidationData getInitPortTemplateConsolidationData(String portNodeTemplateId,
89                                                                                       String portResourceId,
90                                                                                       String portResourceType) {
91         PortTemplateConsolidationData portTemplateConsolidationData = new PortTemplateConsolidationData();
92         portTemplateConsolidationData.setNodeTemplateId(portNodeTemplateId);
93         Optional<String> portNetworkRole = HeatToToscaUtil.evaluateNetworkRoleFromResourceId(portResourceId,
94                 portResourceType);
95         portNetworkRole.ifPresent(portTemplateConsolidationData::setNetworkRole);
96         return portTemplateConsolidationData;
97     }
98 }