aboutsummaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/NestedConsolidationDataHandler.java
diff options
context:
space:
mode:
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/NestedConsolidationDataHandler.java')
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/NestedConsolidationDataHandler.java138
1 files changed, 138 insertions, 0 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/NestedConsolidationDataHandler.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/NestedConsolidationDataHandler.java
new file mode 100644
index 0000000000..f7c877074d
--- /dev/null
+++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/unifiedmodel/consolidation/NestedConsolidationDataHandler.java
@@ -0,0 +1,138 @@
+/*
+ * Copyright © 2016-2018 European Support Limited
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation;
+
+import java.util.Objects;
+import org.onap.sdc.tosca.datatypes.model.RequirementAssignment;
+import org.onap.sdc.tosca.datatypes.model.ServiceTemplate;
+import org.openecomp.core.utilities.file.FileUtils;
+import org.openecomp.sdc.common.errors.CoreException;
+import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate;
+import org.openecomp.sdc.tosca.services.ToscaUtil;
+import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
+import org.openecomp.sdc.translator.datatypes.heattotosca.to.TranslateTo;
+import org.openecomp.sdc.translator.services.heattotosca.errors.DuplicateResourceIdsInDifferentFilesErrorBuilder;
+
+public class NestedConsolidationDataHandler implements ConsolidationDataHandler {
+
+ private final NestedConsolidationData nestedConsolidationData;
+
+ public NestedConsolidationDataHandler(NestedConsolidationData nestedConsolidationData) {
+ this.nestedConsolidationData = nestedConsolidationData;
+ }
+
+ @Override
+ public void addNodesConnectedOut(TranslateTo translateTo, String nodeTemplateId, String requirementId,
+ RequirementAssignment requirementAssignment) {
+ EntityConsolidationData entityConsolidationData =
+ getNestedTemplateConsolidationData(translateTo, translateTo.getHeatFileName(),
+ translateTo.getTranslatedId());
+
+ if (Objects.nonNull(entityConsolidationData)) {
+ entityConsolidationData.addNodesConnectedOut(nodeTemplateId, requirementId, requirementAssignment);
+ }
+ }
+
+ @Override
+ public void addNodesConnectedIn(TranslateTo translateTo, String sourceNodeTemplateId,
+ String dependentNodeTemplateId, String targetResourceId,
+ String requirementId, RequirementAssignment requirementAssignment) {
+
+ EntityConsolidationData entityConsolidationData =
+ getNestedTemplateConsolidationData(translateTo, translateTo.getHeatFileName(), dependentNodeTemplateId);
+
+ if (Objects.nonNull(entityConsolidationData)) {
+ entityConsolidationData.addNodesConnectedIn(sourceNodeTemplateId, requirementId, requirementAssignment);
+ }
+
+ }
+
+ @Override
+ public void removeParamNameFromAttrFuncList(ServiceTemplate serviceTemplate,
+ HeatOrchestrationTemplate heatOrchestrationTemplate,
+ String paramName,
+ String contrailSharedResourceId,
+ String sharedTranslatedResourceId) {
+
+ throw new UnsupportedOperationException(
+ "API removeParamNameFromAttrFuncList not supported for NestedConsolidationDataHandler");
+
+ }
+
+ private NestedTemplateConsolidationData getNestedTemplateConsolidationData(TranslateTo translateTo,
+ String nestedHeatFileName,
+ String nestedNodeTemplateId) {
+ ServiceTemplate serviceTemplate = translateTo.getServiceTemplate();
+ TranslationContext context = translateTo.getContext();
+ return getNestedTemplateConsolidationData(serviceTemplate, context, nestedHeatFileName, nestedNodeTemplateId);
+ }
+
+ private NestedTemplateConsolidationData getNestedTemplateConsolidationData(
+ ServiceTemplate serviceTemplate, TranslationContext context,
+ String nestedHeatFileName, String nestedNodeTemplateId) {
+
+
+ if (isNestedResourceIdOccursInDifferentNestedFiles(context, nestedHeatFileName,
+ nestedNodeTemplateId)) {
+ throw new CoreException(new
+ DuplicateResourceIdsInDifferentFilesErrorBuilder(
+ nestedNodeTemplateId).build());
+ }
+
+ if (isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(
+ nestedNodeTemplateId, nestedHeatFileName, context)) {
+ return null;
+ }
+
+ String serviceTemplateFileName = ToscaUtil.getServiceTemplateFileName(serviceTemplate);
+ FileNestedConsolidationData fileNestedConsolidationData = nestedConsolidationData
+ .getFileNestedConsolidationData(serviceTemplateFileName);
+
+ if (fileNestedConsolidationData == null) {
+ fileNestedConsolidationData = new FileNestedConsolidationData();
+ nestedConsolidationData.setFileNestedConsolidationData(serviceTemplateFileName,
+ fileNestedConsolidationData);
+ }
+
+ NestedTemplateConsolidationData nestedTemplateConsolidationData =
+ fileNestedConsolidationData.getNestedTemplateConsolidationData(nestedNodeTemplateId);
+ if (nestedTemplateConsolidationData == null) {
+ nestedTemplateConsolidationData = new NestedTemplateConsolidationData();
+ nestedTemplateConsolidationData.setNodeTemplateId(nestedNodeTemplateId);
+ fileNestedConsolidationData.setNestedTemplateConsolidationData(nestedNodeTemplateId,
+ nestedTemplateConsolidationData);
+ }
+
+ return nestedTemplateConsolidationData;
+ }
+
+ private boolean isNodeTemplatePointsToServiceTemplateWithoutNodeTemplates(String nestedNodeTemplateId,
+ String nestedHeatFileName,
+ TranslationContext context) {
+
+ return context.isServiceTemplateWithoutNodeTemplatesSection(
+ FileUtils.getFileWithoutExtention(nestedHeatFileName))
+ || context.isNodeTemplateIdPointsToStWithoutNodeTemplates(nestedNodeTemplateId);
+ }
+
+ private boolean isNestedResourceIdOccursInDifferentNestedFiles(TranslationContext context,
+ String nestedHeatFileName,
+ String nestedNodeTemplateId) {
+ return Objects.nonNull(nestedHeatFileName) && context.getAllTranslatedResourceIdsFromDiffNestedFiles(
+ nestedHeatFileName).contains(nestedNodeTemplateId);
+ }
+}