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.apache.commons.collections4.CollectionUtils;
21 import java.util.Collection;
22 import java.util.HashMap;
23 import java.util.List;
27 public class TypeComputeConsolidationData {
29 //key - compute node template id
30 private final Map<String, ComputeTemplateConsolidationData> computeTemplateConsolidationData;
32 public TypeComputeConsolidationData() {
33 computeTemplateConsolidationData = new HashMap<>();
36 public Collection<String> getAllComputeNodeTemplateIds() {
37 return computeTemplateConsolidationData.keySet();
40 public Collection<ComputeTemplateConsolidationData> getAllComputeTemplateConsolidationData() {
41 return computeTemplateConsolidationData.values();
45 * Gets compute template consolidation data.
47 * @param computeNodeTemplateId the compute node template id
48 * @return the compute template consolidation data
50 public ComputeTemplateConsolidationData getComputeTemplateConsolidationData(
51 String computeNodeTemplateId) {
52 return computeTemplateConsolidationData.get(computeNodeTemplateId);
55 public void setComputeTemplateConsolidationData(String computeNodeTemplateId,
56 ComputeTemplateConsolidationData
57 computeTemplateConsolidationData) {
58 this.computeTemplateConsolidationData.put(computeNodeTemplateId, computeTemplateConsolidationData);
62 * create new compute template consolidation data if it doesn't exist yet.
64 * @return compute template consolidation data entity by given keys
66 ComputeTemplateConsolidationData addComputeTemplateConsolidationData(String computeNodeTemplateId) {
67 ComputeTemplateConsolidationData consolidationData = getComputeTemplateConsolidationData(computeNodeTemplateId);
68 if (consolidationData == null) {
69 consolidationData = new ComputeTemplateConsolidationData();
70 consolidationData.setNodeTemplateId(computeNodeTemplateId);
71 setComputeTemplateConsolidationData(computeNodeTemplateId, consolidationData);
73 return consolidationData;
77 * Gets all ports per port type, which are connected to the computes consolidation data entities
78 * computeTemplateConsolidationDataCollection.
80 * @return Map containing key as port type and value as ports id
82 public Map<String, List<String>> collectAllPortsOfEachTypeFromComputes() {
83 Map<String, List<String>> portTypeToIds = new HashMap<>();
84 Collection<ComputeTemplateConsolidationData> computeTemplateConsolidationDataCollection =
85 getAllComputeTemplateConsolidationData();
87 computeTemplateConsolidationDataCollection
88 .forEach(computeTemplateConsolidationData1 ->
89 computeTemplateConsolidationData1.collectAllPortsOfEachTypeFromCompute(portTypeToIds));
95 * Check if get attr out from entity are legal for given port list
97 * @param portTypeToIds list of port Ids per port type
98 * @return true if get attr out are legal else false
100 public boolean isGetAttrOutFromEntityLegal(Map<String, List<String>> portTypeToIds) {
102 Collection<ComputeTemplateConsolidationData> entities = getAllComputeTemplateConsolidationData();
104 if (CollectionUtils.isEmpty(entities)) {
108 EntityConsolidationData firstEntity = entities.iterator().next();
109 return firstEntity.isGetAttrOutFromEntityLegal(entities, portTypeToIds);
112 public boolean isNumberOfComputeConsolidationDataPerTypeLegal() {
113 return getAllComputeTemplateConsolidationData().size() == 1;
116 public boolean isThereMoreThanOneComputeTypeInstance() {
117 return getAllComputeNodeTemplateIds().size() > 1;
120 public boolean isNumberOfPortFromEachTypeLegal() {
121 return getAllComputeTemplateConsolidationData().stream().allMatch(
122 ComputeTemplateConsolidationData::isNumberOfPortFromEachTypeLegal);
125 public boolean isPortTypesEqualsBetweenComputeNodes() {
126 Set<String> startingPortTypes = getAllComputeTemplateConsolidationData().iterator().next().getPortsIds();
128 return getAllComputeTemplateConsolidationData()
129 .stream().allMatch(compute -> compute.getPortsIds().equals(startingPortTypes));
132 public boolean isNumberOfPortsEqualsBetweenComputeNodes() {
133 int startingNumberOfPorts =
134 getAllComputeTemplateConsolidationData().iterator().next().getNumberOfPorts();
136 return getAllComputeTemplateConsolidationData()
137 .stream().allMatch(compute -> compute.getNumberOfPorts() == startingNumberOfPorts);