c28c54c8618441088583eb811933eedb577eb72e
[sdc.git] /
1 /*
2  * Copyright © 2016-2018 European Support Limited
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation;
18
19 import java.util.Objects;
20 import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
21 import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
22 import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
23 import org.openecomp.sdc.heat.datatypes.model.Resource;
24 import org.openecomp.sdc.tosca.services.ToscaUtil;
25 import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslateTo;
26 import org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation.FunctionTranslator;
27
28 public class PortConsolidationDataHandler implements ConsolidationDataHandler {
29
30     private final PortConsolidationData portConsolidationData;
31
32     public PortConsolidationDataHandler(PortConsolidationData portConsolidationData) {
33         this.portConsolidationData = portConsolidationData;
34     }
35
36     @Override
37     public void addNodesConnectedOut(TranslateTo translateTo, String nodeTemplateId, String requirementId,
38                                             RequirementAssignment requirementAssignment) {
39
40         EntityConsolidationData entityConsolidationData =
41                 getPortTemplateConsolidationData(translateTo, translateTo.getResourceId(),
42                         translateTo.getResource().getType(), translateTo.getTranslatedId());
43
44         entityConsolidationData.addNodesConnectedOut(nodeTemplateId, requirementId, requirementAssignment);
45
46     }
47
48     @Override
49     public void addNodesConnectedIn(TranslateTo translateTo, String sourceNodeTemplateId,
50                String dependentNodeTemplateId, String targetResourceId, String requirementId,
51                RequirementAssignment requirementAssignment) {
52
53         EntityConsolidationData entityConsolidationData =
54                 getPortTemplateConsolidationData(translateTo, translateTo.getResourceId(),
55                         translateTo.getResource().getType(), dependentNodeTemplateId);
56
57         entityConsolidationData.addNodesConnectedIn(sourceNodeTemplateId, requirementId, requirementAssignment);
58
59     }
60
61     @Override
62     public void removeParamNameFromAttrFuncList(ServiceTemplate serviceTemplate,
63                 HeatOrchestrationTemplate heatOrchestrationTemplate, String paramName,
64                 String contrailSharedResourceId, String sharedTranslatedResourceId) {
65
66         Resource resource = heatOrchestrationTemplate.getResources().get(contrailSharedResourceId);
67         String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
68         EntityConsolidationData entityConsolidationData = getPortTemplateConsolidationData(serviceTemplateFileName,
69                 contrailSharedResourceId, resource.getType(), sharedTranslatedResourceId);
70         entityConsolidationData.removeParamNameFromAttrFuncList(paramName);
71
72     }
73
74     /**
75      * Add port in consolidation data base on given parameters.
76      *
77      */
78     public void addConsolidationData(String serviceTemplateFileName,
79                 String portResourceId, String portResourceType, String portNodeTemplateId) {
80         getPortTemplateConsolidationData(
81                 serviceTemplateFileName, portResourceId, portResourceType, portNodeTemplateId);
82     }
83
84     @Override
85     public void addNodesGetAttrOut(FunctionTranslator functionTranslator, String nodeTemplateId,
86             String resourceTranslatedId, String propertyName, String attributeName) {
87
88         String resourceId = functionTranslator.getResourceId();
89         EntityConsolidationData entityConsolidationData =
90                 getPortTemplateConsolidationData(functionTranslator, resourceId, resourceTranslatedId);
91
92         if (Objects.nonNull(entityConsolidationData)) {
93             GetAttrFuncData getAttrFuncData = createGetAttrFuncData(propertyName, attributeName);
94             entityConsolidationData.addNodesGetAttrOut(nodeTemplateId, getAttrFuncData);
95         }
96     }
97
98     @Override
99     public void addNodesGetAttrIn(FunctionTranslator functionTranslator,String nodeTemplateId,
100             String targetResourceId, String targetResourceTranslatedId,  String propertyName, String attributeName) {
101         EntityConsolidationData entityConsolidationData =
102                 getPortTemplateConsolidationData(functionTranslator, targetResourceId, targetResourceTranslatedId);
103
104         if (Objects.nonNull(entityConsolidationData)) {
105             GetAttrFuncData getAttrFuncData = createGetAttrFuncData(propertyName, attributeName);
106             entityConsolidationData.addNodesGetAttrIn(nodeTemplateId, getAttrFuncData);
107         }
108     }
109
110     @Override
111     public void addOutputParamGetAttrIn(FunctionTranslator functionTranslator, String targetResourceId,
112             String targetResourceTranslatedId, String propertyName, String attributeName) {
113
114         EntityConsolidationData entityConsolidationData =
115                 getPortTemplateConsolidationData(functionTranslator, targetResourceId, targetResourceTranslatedId);
116
117         if (Objects.nonNull(entityConsolidationData)) {
118             GetAttrFuncData getAttrFuncData = createGetAttrFuncData(propertyName, attributeName);
119             entityConsolidationData.addOutputParamGetAttrIn(getAttrFuncData);
120         }
121     }
122
123     private GetAttrFuncData createGetAttrFuncData(String propertyName, String attributeName) {
124         GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
125         getAttrFuncData.setFieldName(propertyName);
126         getAttrFuncData.setAttributeName(attributeName);
127         return getAttrFuncData;
128     }
129
130     private EntityConsolidationData getPortTemplateConsolidationData(FunctionTranslator functionTranslator,
131             String targetResourceId, String targetResourceTranslatedId) {
132         HeatOrchestrationTemplate heatOrchestrationTemplate = functionTranslator.getHeatOrchestrationTemplate();
133         Resource resource = heatOrchestrationTemplate.getResources().get(targetResourceId);
134         ServiceTemplate serviceTemplate = functionTranslator.getServiceTemplate();
135         return getPortTemplateConsolidationData(ToscaUtil.getServiceTemplateFileName(serviceTemplate),
136                 targetResourceId, resource.getType(), targetResourceTranslatedId);
137     }
138
139     private PortTemplateConsolidationData getPortTemplateConsolidationData(TranslateTo translateTo,
140             String portResourceId, String portResourceType, String portNodeTemplateId) {
141         ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
142         String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
143         return getPortTemplateConsolidationData(serviceTemplateFileName,
144                 portResourceId, portResourceType, portNodeTemplateId);
145     }
146
147     private PortTemplateConsolidationData getPortTemplateConsolidationData(String serviceTemplateFileName,
148             String portResourceId, String portResourceType, String portNodeTemplateId) {
149
150         return portConsolidationData.addPortTemplateConsolidationData(serviceTemplateFileName,
151                         portNodeTemplateId, portResourceId, portResourceType);
152
153     }
154 }