2 * Copyright © 2016-2018 European Support Limited
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation;
19 import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
20 import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
21 import org.openecomp.core.utilities.file.FileUtils;
22 import org.openecomp.sdc.common.errors.CoreException;
23 import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
24 import org.openecomp.sdc.tosca.services.ToscaUtil;
25 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
26 import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslateTo;
27 import org.openecomp.sdc.translator.services.heattotosca.errors.DuplicateResourceIdsInDifferentFilesErrorBuilder;
28 import org.openecomp.sdc.translator.services.heattotosca.impl.functiontranslation.FunctionTranslator;
31 import java.util.Objects;
33 public class NestedConsolidationDataHandler implements ConsolidationDataHandler {
35 private final NestedConsolidationData nestedConsolidationData;
37 public NestedConsolidationDataHandler(NestedConsolidationData nestedConsolidationData) {
38 this.nestedConsolidationData = nestedConsolidationData;
42 public void addNodesConnectedOut(TranslateTo translateTo, String nodeTemplateId, String requirementId,
43 RequirementAssignment requirementAssignment) {
44 EntityConsolidationData entityConsolidationData =
45 getNestedTemplateConsolidationData(translateTo, translateTo.getHeatFileName(),
46 translateTo.getTranslatedId());
48 if (Objects.nonNull(entityConsolidationData)) {
49 entityConsolidationData.addNodesConnectedOut(nodeTemplateId, requirementId, requirementAssignment);
54 public void addNodesConnectedIn(TranslateTo translateTo, String sourceNodeTemplateId,
55 String dependentNodeTemplateId, String targetResourceId,
56 String requirementId, RequirementAssignment requirementAssignment) {
57 EntityConsolidationData entityConsolidationData =
58 getNestedTemplateConsolidationData(translateTo, translateTo.getHeatFileName(), dependentNodeTemplateId);
60 if (Objects.nonNull(entityConsolidationData)) {
61 entityConsolidationData.addNodesConnectedIn(sourceNodeTemplateId, requirementId, requirementAssignment);
66 public void removeParamNameFromAttrFuncList(ServiceTemplate serviceTemplate,
67 HeatOrchestrationTemplate heatOrchestrationTemplate,
69 String contrailSharedResourceId,
70 String sharedTranslatedResourceId) {
72 throw new UnsupportedOperationException("API removeParamNameFromAttrFuncList "
73 + "not supported for NestedConsolidationDataHandler");
78 public void addNodesGetAttrOut(FunctionTranslator functionTranslator, String nodeTemplateId,
79 String resourceTranslatedId, String propertyName, String attributeName) {
81 EntityConsolidationData entityConsolidationData =
82 getNestedTemplateConsolidationData(functionTranslator,
83 functionTranslator.getHeatFileName(), resourceTranslatedId);
85 if (Objects.nonNull(entityConsolidationData)) {
86 GetAttrFuncData getAttrFuncData = createGetAttrFuncData(propertyName, attributeName);
87 entityConsolidationData.addNodesGetAttrOut(nodeTemplateId, getAttrFuncData);
92 public void addNodesGetAttrIn(FunctionTranslator functionTranslator,String nodeTemplateId, String targetResourceId,
93 String targetResourceTranslatedId, String propertyName, String attributeName) {
95 EntityConsolidationData entityConsolidationData =
96 getNestedTemplateConsolidationData(functionTranslator, functionTranslator.getHeatFileName(),
99 if (Objects.nonNull(entityConsolidationData)) {
100 GetAttrFuncData getAttrFuncData = createGetAttrFuncData(propertyName, attributeName);
101 entityConsolidationData.addNodesGetAttrIn(nodeTemplateId, getAttrFuncData);
106 public void addOutputParamGetAttrIn(FunctionTranslator functionTranslator, String targetResourceId,
107 String targetResourceTranslatedId, String propertyName, String attributeName) {
109 EntityConsolidationData entityConsolidationData =
110 getNestedTemplateConsolidationData(functionTranslator, functionTranslator.getHeatFileName(),
113 if (Objects.nonNull(entityConsolidationData)) {
114 GetAttrFuncData getAttrFuncData = createGetAttrFuncData(propertyName, attributeName);
115 entityConsolidationData.addOutputParamGetAttrIn(getAttrFuncData);
120 * Add nested consolidation data base on given parameters.
122 public void addConsolidationData(String serviceTemplateFileName, TranslationContext context,
123 String nestedHeatFileName, String nestedNodeTemplateId) {
124 getNestedTemplateConsolidationData(serviceTemplateFileName, context,
125 nestedHeatFileName, nestedNodeTemplateId);
128 private GetAttrFuncData createGetAttrFuncData(String propertyName, String attributeName) {
129 GetAttrFuncData getAttrFuncData = new GetAttrFuncData();
130 getAttrFuncData.setFieldName(propertyName);
131 getAttrFuncData.setAttributeName(attributeName);
132 return getAttrFuncData;
135 private NestedTemplateConsolidationData getNestedTemplateConsolidationData(FunctionTranslator functionTranslator,
136 String nestedHeatFileName, String nestedNodeTemplateId) {
137 ServiceTemplate serviceTemplate = functionTranslator.getServiceTemplate();
138 TranslationContext context = functionTranslator.getContext();
139 return getNestedTemplateConsolidationData(ToscaUtil
140 .getServiceTemplateFileName(serviceTemplate), context, nestedHeatFileName, nestedNodeTemplateId);
144 private NestedTemplateConsolidationData getNestedTemplateConsolidationData(TranslateTo translateTo,
145 String nestedHeatFileName, String nestedNodeTemplateId) {
146 ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
147 TranslationContext context = translateTo.getContext();
148 return getNestedTemplateConsolidationData(ToscaUtil
149 .getServiceTemplateFileName(serviceTemplate), context, nestedHeatFileName, nestedNodeTemplateId);
152 private NestedTemplateConsolidationData getNestedTemplateConsolidationData(
153 String serviceTemplateFileName, TranslationContext context,
154 String nestedHeatFileName, String nestedNodeTemplateId) {
156 if (isNestedResourceIdOccursInDifferentNestedFiles(context, nestedHeatFileName, nestedNodeTemplateId)) {
157 throw new CoreException(new DuplicateResourceIdsInDifferentFilesErrorBuilder(nestedNodeTemplateId).build());
160 if (isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(
161 nestedNodeTemplateId, nestedHeatFileName, context)) {
164 return nestedConsolidationData
165 .addNestedTemplateConsolidationData(serviceTemplateFileName, nestedNodeTemplateId);
168 private boolean isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(String nestedNodeTemplateId,
169 String nestedHeatFileName, TranslationContext context) {
171 return context.isServiceTemplateWithoutNodeTemplatesSection(
172 FileUtils.getFileWithoutExtention(nestedHeatFileName))
173 || context.isNodeTemplateIdPointsToStWithoutNodeTemplates(nestedNodeTemplateId);
176 private boolean isNestedResourceIdOccursInDifferentNestedFiles(TranslationContext context,
177 String nestedHeatFileName, String nestedNodeTemplateId) {
178 return Objects.nonNull(nestedHeatFileName) && context.getAllTranslatedResourceIdsFromDiffNestedFiles(
179 nestedHeatFileName).contains(nestedNodeTemplateId);
182 public boolean isNestedConsolidationDataExist(String serviceTemplateName) {
183 return nestedConsolidationData.isNestedConsolidationDataExist(serviceTemplateName);