5d372370e3128a7a18e873f1f2347a8ed545f93f
[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
23 import java.util.List;
24 import java.util.Set;
25
26
27 /**
28  * The type Port template consolidation data.
29  */
30 public class PortTemplateConsolidationData extends EntityConsolidationData {
31
32   // key - sub-interface type - for ResourceGroup it is the nested file name
33   // value - List of sub-interfaces of that type in the port
34   private final ListMultimap<String, SubInterfaceTemplateConsolidationData> subInterfaceConsolidationData =
35       Multimaps.synchronizedListMultimap(ArrayListMultimap.create());
36
37   private String networkRole;
38
39   public String getNetworkRole() {
40     return networkRole;
41   }
42
43   public void setNetworkRole(String networkRole) {
44     this.networkRole = networkRole;
45   }
46
47   public List<SubInterfaceTemplateConsolidationData> getSubInterfaceConsolidationData(
48       String subInterfaceType) {
49     return this.subInterfaceConsolidationData.get(subInterfaceType);
50   }
51
52   public Set<String> getAllSubInterfaceNodeTypes() {
53     return this.subInterfaceConsolidationData.keySet();
54   }
55
56   public void addSubInterfaceConsolidationData(String subPortType,
57                                                SubInterfaceTemplateConsolidationData
58                                                    subInterfaceTemplateConsolidationData) {
59     this.subInterfaceConsolidationData.put(subPortType, subInterfaceTemplateConsolidationData);
60   }
61
62   public boolean hasSameSubInterfaceTypes(PortTemplateConsolidationData other) {
63     return other != null && this.subInterfaceConsolidationData.keySet().equals(
64         other.subInterfaceConsolidationData.keySet());
65   }
66
67   public void copyMappedInto(ListMultimap<String, SubInterfaceTemplateConsolidationData> subInterfaceTypeToEntity) {
68     subInterfaceTypeToEntity.putAll(this.subInterfaceConsolidationData);
69   }
70
71   public void copyFlatInto(List<SubInterfaceTemplateConsolidationData> subInterfaceTemplateConsolidationDataList) {
72     subInterfaceTemplateConsolidationDataList.addAll(subInterfaceConsolidationData.values());
73   }
74
75   public boolean isNumberOfSubInterfacesPerTypeSimilar(PortTemplateConsolidationData other) {
76     return this.subInterfaceConsolidationData.isEmpty() && other.subInterfaceConsolidationData.isEmpty()
77         || !this.subInterfaceConsolidationData.isEmpty() && !other.subInterfaceConsolidationData.isEmpty()
78           &&  this.subInterfaceConsolidationData.keySet().stream().allMatch(
79               subInterfaceType -> calculateSize(other.subInterfaceConsolidationData.get(subInterfaceType))
80                   ==  calculateSize(this.subInterfaceConsolidationData.get(subInterfaceType)));
81
82   }
83
84   private int calculateSize(List<SubInterfaceTemplateConsolidationData> subInterfaces) {
85     return subInterfaces == null ? 0 : subInterfaces.size();
86   }
87
88
89 }