c3965a5f52b026a0d88f3fa72bbd6dd3c5a975a1
[sdc.git] / openecomp-be / lib / openecomp-sdc-translator-lib / openecomp-sdc-translator-core / src / main / java / org / openecomp / sdc / translator / services / heattotosca / impl / unifiedcomposition / UnifiedCompositionSingleSubstitution.java
1 package org.openecomp.sdc.translator.services.heattotosca.impl.unifiedcomposition;
2
3 import org.apache.commons.collections4.CollectionUtils;
4 import org.openecomp.sdc.tosca.datatypes.model.ServiceTemplate;
5 import org.openecomp.sdc.translator.datatypes.heattotosca.TranslationContext;
6 import org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition.UnifiedCompositionData;
7 import org.openecomp.sdc.translator.services.heattotosca.UnifiedComposition;
8 import org.openecomp.sdc.translator.services.heattotosca.UnifiedCompositionService;
9
10 import java.util.ArrayList;
11 import java.util.List;
12 import java.util.Optional;
13
14
15 /**
16  * The type Unified composition single substitution.
17  */
18 public class UnifiedCompositionSingleSubstitution implements UnifiedComposition {
19
20   // There is no consolidation in SingleSubstitution implemetation.
21   // In case of single substitution, if there is more than one entry in the
22   // unifiedComposotionDataList, they all should contain the same compute type but the
23   // consolidation between them was canceled.
24   // For different compute type, this implementation will be called more than once, each time
25   // per diff compute type, while sending one entry in the unifiedComposotionDataList.
26   @Override
27   public void createUnifiedComposition(ServiceTemplate serviceTemplate,
28                                        ServiceTemplate nestedServiceTemplate,
29                                        List<UnifiedCompositionData> unifiedCompositionDataList,
30                                        TranslationContext context) {
31     UnifiedCompositionService unifiedCompositionService = new UnifiedCompositionService();
32     if (CollectionUtils.isEmpty(unifiedCompositionDataList)) {
33       return;
34     }
35
36     for (int i = 0; i < unifiedCompositionDataList.size(); i++) {
37       List<UnifiedCompositionData> singleSubstitutionUnifiedList = new ArrayList<>();
38       singleSubstitutionUnifiedList.add(unifiedCompositionDataList.get(i));
39
40       Integer index = unifiedCompositionDataList.size() > 1 ? i : null;
41       Optional<ServiceTemplate> substitutionServiceTemplate =
42           unifiedCompositionService.createUnifiedSubstitutionServiceTemplate(serviceTemplate,
43               singleSubstitutionUnifiedList, context, index);
44
45       if (!substitutionServiceTemplate.isPresent()) {
46         continue;
47       }
48
49       String abstractNodeTemplateId = unifiedCompositionService
50           .createAbstractSubstituteNodeTemplate(serviceTemplate, substitutionServiceTemplate.get(),
51               singleSubstitutionUnifiedList, context, index);
52
53       unifiedCompositionService
54           .updateCompositionConnectivity(serviceTemplate, singleSubstitutionUnifiedList, context);
55
56       unifiedCompositionService
57           .cleanUnifiedCompositionEntities(serviceTemplate, singleSubstitutionUnifiedList, context);
58
59     }
60
61     unifiedCompositionService
62         .cleanNodeTypes(serviceTemplate, unifiedCompositionDataList, context);
63
64   }
65 }