1 package org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.composition;
3 import java.util.Collection;
4 import java.util.HashMap;
5 import java.util.HashSet;
7 import java.util.Objects;
8 import java.util.Optional;
11 import org.apache.commons.collections4.MapUtils;
12 import org.onap.sdc.tosca.datatypes.model.NodeTemplate;
14 public class UnifiedSubstitutionData {
16 //Key - node template id, Value - related abstract node template id
17 private Map<String, String> nodesRelatedAbstractNode = new HashMap<>();
18 //Key - node template id, Value - related node template id in the substitution service template
19 private Map<String, String> nodesRelatedSubstitutionServiceTemplateNode = new HashMap<>();
20 private Map<String, NodeTemplateInformation> cleanedNodeTemplates = new HashMap<>();
21 //Key - nested node template id, Value - related unified nested node template id
22 private Map<String, String> nestedNodeTemplateRelatedUnifiedTranslatedId = new HashMap<>();
23 //Key - nested node type id, Value - related unified nested node template id
24 private Map<String, String> nestedNodeTypeRelatedUnifiedTranslatedId = new HashMap<>();
25 //Key - handled compute type, Value - number of times it was handled
26 private Map<String, Integer> handledComputeTypesInNestedSubstitutionTemplate =
28 //Key - nested compute type, Value - list of nested files that the compute type is present
29 private Map<String, Integer> handledNestedComputeTypesNestedFiles = new HashMap<>();
30 //Key - new property id, Value - orig property value
31 private Map<String, Object> newParameterIdsToPropertiesFromOrigNodeTemplate = new HashMap<>();
32 //handled nested files
33 private Set<String> handledNestedFiles = new HashSet<>();
34 //handled nested nodes
35 private Set<String> handledNestedNodes = new HashSet<>();
37 public Map<String, String> getNodesRelatedAbstractNode() {
38 return nodesRelatedAbstractNode;
41 public void setNodesRelatedAbstractNode(
42 Map<String, String> nodesRelatedAbstractNode) {
43 this.nodesRelatedAbstractNode = nodesRelatedAbstractNode;
46 public void addHandledNestedNodes(String handledNestedNodeId) {
47 this.handledNestedNodes.add(handledNestedNodeId);
50 public Map<String, String> getNodesRelatedSubstitutionServiceTemplateNode() {
51 return nodesRelatedSubstitutionServiceTemplateNode;
54 public void setNodesRelatedSubstitutionServiceTemplateNode(
55 Map<String, String> nodesRelatedSubstitutionServiceTemplateNode) {
56 this.nodesRelatedSubstitutionServiceTemplateNode = nodesRelatedSubstitutionServiceTemplateNode;
59 public String getNodeRelatedAbstractNode(String origNodeId) {
60 return this.nodesRelatedAbstractNode.get(origNodeId);
63 public Collection<String> getAllRelatedAbstractNodeIds() {
64 return this.nodesRelatedAbstractNode.values();
67 public Collection<String> getAllUnifiedNestedNodeTemplateIds() {
68 return this.nestedNodeTemplateRelatedUnifiedTranslatedId.values();
72 * Add cleaned node template.
74 * @param nodeTemplateId the node template id
75 * @param unifiedCompositionEntity the unified composition entity
76 * @param nodeTemplate the node template
78 public void addCleanedNodeTemplate(String nodeTemplateId,
79 UnifiedCompositionEntity unifiedCompositionEntity,
80 NodeTemplate nodeTemplate) {
81 NodeTemplateInformation nodeTemplateInformation = new NodeTemplateInformation(
82 unifiedCompositionEntity, nodeTemplate);
83 this.cleanedNodeTemplates.putIfAbsent(nodeTemplateId, nodeTemplateInformation);
86 public NodeTemplate getCleanedNodeTemplate(String nodeTemplateId) {
87 return this.cleanedNodeTemplates.get(nodeTemplateId).getNodeTemplate().clone();
90 public UnifiedCompositionEntity getCleanedNodeTemplateCompositionEntity(String nodeTemplateId) {
91 return this.cleanedNodeTemplates.get(nodeTemplateId).getUnifiedCompositionEntity();
94 public void addUnifiedNestedNodeTemplateId(String nestedNodeTemplateId,
95 String unifiedNestedNodeRelatedId) {
96 this.nestedNodeTemplateRelatedUnifiedTranslatedId
97 .put(nestedNodeTemplateId, unifiedNestedNodeRelatedId);
100 public Optional<String> getUnifiedNestedNodeTemplateId(String nestedNodeTemplateId) {
101 return this.nestedNodeTemplateRelatedUnifiedTranslatedId.get(nestedNodeTemplateId) == null
103 : Optional.of(this.nestedNodeTemplateRelatedUnifiedTranslatedId.get(nestedNodeTemplateId));
106 public void addUnifiedNestedNodeTypeId(String nestedNodeTypeId,
107 String unifiedNestedNodeRelatedId) {
108 this.nestedNodeTypeRelatedUnifiedTranslatedId.put(nestedNodeTypeId, unifiedNestedNodeRelatedId);
111 public Optional<String> getUnifiedNestedNodeTypeId(String nestedNodeTypeId) {
112 return this.nestedNodeTypeRelatedUnifiedTranslatedId.get(nestedNodeTypeId) == null ? Optional
114 : Optional.of(this.nestedNodeTypeRelatedUnifiedTranslatedId.get(nestedNodeTypeId));
117 public Set<String> getAllRelatedNestedNodeTypeIds(){
118 if(MapUtils.isEmpty(nestedNodeTypeRelatedUnifiedTranslatedId)){
119 return new HashSet<>();
121 return new HashSet<>(this.nestedNodeTypeRelatedUnifiedTranslatedId.values());
124 public void addHandledComputeType(String handledComputeType) {
126 if (this.handledComputeTypesInNestedSubstitutionTemplate.containsKey(handledComputeType)) {
127 Integer timesHandled =
128 this.handledComputeTypesInNestedSubstitutionTemplate.get(handledComputeType);
129 this.handledComputeTypesInNestedSubstitutionTemplate
130 .put(handledComputeType, timesHandled + 1);
132 //this.handledNestedFiles.add(nestedServiceTemplateFileName);
133 handledComputeTypesInNestedSubstitutionTemplate.put(handledComputeType, 0);
137 public boolean isComputeTypeHandledInServiceTemplate(String computeType) {
138 return this.handledComputeTypesInNestedSubstitutionTemplate.containsKey(computeType);
141 public int getHandledNestedComputeNodeTemplateIndex(String computeType) {
142 return this.handledComputeTypesInNestedSubstitutionTemplate.containsKey(computeType) ?
143 this.handledComputeTypesInNestedSubstitutionTemplate.get(computeType) : 0;
146 public void addHandlesNestedServiceTemplate(String nestedServiceTemplateFileName){
147 this.handledNestedFiles.add(nestedServiceTemplateFileName);
150 public boolean isNestedServiceTemplateWasHandled(String nestedServiceTemplateFileName) {
151 return this.handledNestedFiles.contains(nestedServiceTemplateFileName);
154 public void updateUsedTimesForNestedComputeNodeType(String computeType) {
155 this.handledNestedComputeTypesNestedFiles.putIfAbsent(computeType, 0);
157 Integer usedNumber = this.handledNestedComputeTypesNestedFiles.get(computeType);
158 this.handledNestedComputeTypesNestedFiles.put(computeType, usedNumber + 1);
162 public int getGlobalNodeTypeIndex(String computeType) {
163 return Objects.isNull(this.handledNestedComputeTypesNestedFiles.get(computeType))
164 || this.handledNestedComputeTypesNestedFiles.get(computeType)== 0 ? 0
165 : this.handledNestedComputeTypesNestedFiles.get(computeType);
168 public boolean isNestedNodeWasHandled(String nestedNodeId) {
169 return this.handledNestedNodes.contains(nestedNodeId);
173 public Map<String, Object> getAllNewPropertyInputParamIds(){
174 return this.newParameterIdsToPropertiesFromOrigNodeTemplate;
177 public void addNewPropertyIdToNodeTemplate(String newPropertyId,
178 Object origPropertyValue){
179 if(!newParameterIdsToPropertiesFromOrigNodeTemplate.containsKey(newPropertyId)) {
180 newParameterIdsToPropertiesFromOrigNodeTemplate.put(newPropertyId, origPropertyValue);
184 public Optional<Object> getNewPropertyInputParam(String newPropertyId){
185 if(!newParameterIdsToPropertiesFromOrigNodeTemplate.containsKey(newPropertyId)){
186 return Optional.empty();
189 return Optional.of(newParameterIdsToPropertiesFromOrigNodeTemplate.get(newPropertyId));