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 java.util.Collection;
20 import java.util.HashMap;
21 import java.util.List;
24 import org.apache.commons.collections4.CollectionUtils;
26 public class TypeComputeConsolidationData {
28 //key - compute node template id
29 private final Map<String, ComputeTemplateConsolidationData> computeTemplateConsolidationData;
31 public TypeComputeConsolidationData() {
32 computeTemplateConsolidationData = new HashMap<>();
35 public Collection<String> getAllComputeNodeTemplateIds() {
36 return computeTemplateConsolidationData.keySet();
39 public Collection<ComputeTemplateConsolidationData> getAllComputeTemplateConsolidationData() {
40 return computeTemplateConsolidationData.values();
44 * Gets compute template consolidation data.
46 * @param computeNodeTemplateId the compute node template id
47 * @return the compute template consolidation data
49 public ComputeTemplateConsolidationData getComputeTemplateConsolidationData(
50 String computeNodeTemplateId) {
51 return computeTemplateConsolidationData.get(computeNodeTemplateId);
54 public void setComputeTemplateConsolidationData(String computeNodeTemplateId,
55 ComputeTemplateConsolidationData
56 computeTemplateConsolidationData) {
57 this.computeTemplateConsolidationData.put(computeNodeTemplateId, computeTemplateConsolidationData);
61 * create new compute template consolidation data if it doesn't exist yet.
63 * @return compute template consolidation data entity by given keys
65 ComputeTemplateConsolidationData addComputeTemplateConsolidationData(String computeNodeTemplateId) {
66 ComputeTemplateConsolidationData consolidationData = getComputeTemplateConsolidationData(computeNodeTemplateId);
67 if (consolidationData == null) {
68 consolidationData = new ComputeTemplateConsolidationData();
69 consolidationData.setNodeTemplateId(computeNodeTemplateId);
70 setComputeTemplateConsolidationData(computeNodeTemplateId, consolidationData);
72 return consolidationData;
76 * Gets all ports per port type, which are connected to the computes consolidation data entities
77 * computeTemplateConsolidationDataCollection.
79 * @return Map containing key as port type and value as ports id
81 public Map<String, List<String>> collectAllPortsOfEachTypeFromComputes() {
82 Map<String, List<String>> portTypeToIds = new HashMap<>();
83 Collection<ComputeTemplateConsolidationData> computeTemplateConsolidationDataCollection =
84 getAllComputeTemplateConsolidationData();
86 computeTemplateConsolidationDataCollection
87 .forEach(computeTemplateConsolidationData1 ->
88 computeTemplateConsolidationData1.collectAllPortsOfEachTypeFromCompute(portTypeToIds));
94 * Check if get attr out from entity are legal for given port list
96 * @param portTypeToIds list of port Ids per port type
97 * @return true if get attr out are legal else false
99 public boolean isGetAttrOutFromEntityLegal(Map<String, List<String>> portTypeToIds) {
101 Collection<ComputeTemplateConsolidationData> entities = getAllComputeTemplateConsolidationData();
103 if (CollectionUtils.isEmpty(entities)) {
107 EntityConsolidationData firstEntity = entities.iterator().next();
108 return firstEntity.isGetAttrOutFromEntityLegal(entities, portTypeToIds);
111 public boolean isNumberOfComputeConsolidationDataPerTypeLegal() {
112 return getAllComputeTemplateConsolidationData().size() == 1;