0eacd4de3cac88197ef0acf024c0a36eefedb6b4
[sdc.git] /
1 /*
2  * Copyright © 2016-2018 European Support Limited
3  *
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
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
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.
15  */
16
17 package org.openecomp.sdc.translator.datatypes.heattotosca.unifiedmodel.consolidation;
18
19 import com.google.common.collect.ArrayListMultimap;
20 import com.google.common.collect.ListMultimap;
21 import com.google.common.collect.Multimaps;
22 import java.util.List;
23
24
25 /**
26  * The type Port template consolidation data.
27  */
28 public class PortTemplateConsolidationData extends EntityConsolidationData {
29
30   // key - subport type - for ResourceGroup it is the nested file name
31   // value - List of subports of that type in the port
32     private final ListMultimap<String, SubInterfaceTemplateConsolidationData> subInterfaceConsolidationData =
33         Multimaps.synchronizedListMultimap(ArrayListMultimap.create());
34
35   public void addSubInterfaceConsolidationData(String subPortType,
36                                                SubInterfaceTemplateConsolidationData
37                                                    subInterfaceTemplateConsolidationData) {
38     this.subInterfaceConsolidationData.put(subPortType, subInterfaceTemplateConsolidationData);
39   }
40
41   public boolean hasSameSubInterfaceTypes(PortTemplateConsolidationData other) {
42     return other != null && this.subInterfaceConsolidationData.keySet().equals(
43         other.subInterfaceConsolidationData.keySet());
44   }
45
46     public void copyMappedInto(ListMultimap<String, SubInterfaceTemplateConsolidationData> subInterfaceTypeToEntity) {
47     subInterfaceTypeToEntity.putAll(this.subInterfaceConsolidationData);
48   }
49
50     public void copyFlatInto(List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList) {
51         subInterfaceTemplateConsolidationDataList.addAll(subInterfaceConsolidationData.values());
52     }
53
54   public boolean isNumberOfSubInterfacesPerTypeSimilar(PortTemplateConsolidationData other) {
55
56     if (this.subInterfaceConsolidationData.isEmpty() &&
57         other.subInterfaceConsolidationData.isEmpty()) {
58       return true;
59     }
60
61     return !this.subInterfaceConsolidationData.isEmpty()
62         && !other.subInterfaceConsolidationData.isEmpty()
63         && this.subInterfaceConsolidationData.keySet().stream().allMatch(subInterfaceType ->
64         calculateSize(other.subInterfaceConsolidationData.get(subInterfaceType)) ==
65             calculateSize(this.subInterfaceConsolidationData.get(subInterfaceType)));
66   }
67
68   private int calculateSize(List<SubInterfaceTemplateConsolidationData> subInterfaces) {
69     return subInterfaces == null ? 0 : subInterfaces.size();
70   }
71 }