229e680bda5a2985e93f16d9db73466523c32af8
[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 java.util.Collection;
20 import java.util.HashMap;
21 import java.util.Map;
22 import java.util.Optional;
23 import java.util.Set;
24 import org.openecomp.sdc.heat.datatypes.model.Resource;
25 import org.openecomp.sdc.heat.services.HeatResourceUtil;
26
27 public class FilePortConsolidationData {
28
29     //key - port node template id
30     private final Map<String, PortTemplateConsolidationData> portTemplateConsolidationData;
31
32     public FilePortConsolidationData() {
33         this.portTemplateConsolidationData = new HashMap<>();
34     }
35
36     public Set<String> getAllPortNodeTemplateIds() {
37         return portTemplateConsolidationData.keySet();
38     }
39
40     public Collection<PortTemplateConsolidationData> getAllPortConsolidationData() {
41         return portTemplateConsolidationData.values();
42     }
43
44     public PortTemplateConsolidationData getPortTemplateConsolidationData(String portNodeTemplateId) {
45         return portTemplateConsolidationData.get(portNodeTemplateId);
46     }
47
48     public void setPortTemplateConsolidationData(String portNodeTemplateId,
49                                                PortTemplateConsolidationData
50                                                    portTemplateConsolidationData) {
51         this.portTemplateConsolidationData.put(portNodeTemplateId, portTemplateConsolidationData);
52     }
53
54     /**
55     * If entity doesn't exist yet - create subInterface template consolidation data entity
56     * base on given parameters.
57     *
58     * @return subInterface template consolidation data entity
59     */
60     SubInterfaceTemplateConsolidationData addSubInterfaceTemplateConsolidationData(
61             Resource resource, String subInterfaceNodeTemplateId, String parentPortNodeTemplateId) {
62         PortTemplateConsolidationData consolidationData =
63                 addPortTemplateConsolidationData(parentPortNodeTemplateId);
64         return consolidationData.addSubInterfaceTemplateConsolidationData(resource,
65                              subInterfaceNodeTemplateId, parentPortNodeTemplateId);
66     }
67
68     /**
69     * If entity doesn't exist yet - create subInterface template consolidation data entity
70     * base on given parameters.
71     *
72     * @return subInterface template consolidation data entity
73     */
74     SubInterfaceTemplateConsolidationData addSubInterfaceTemplateConsolidationData(
75             Resource resource, String subInterfaceNodeTemplateId, String parentPortNodeTemplateId,
76             String parentPortResourceId, String parentPortResourceType) {
77
78         PortTemplateConsolidationData consolidationData =
79                 addPortTemplateConsolidationData(parentPortNodeTemplateId, parentPortResourceId,
80                 parentPortResourceType);
81
82         return consolidationData.addSubInterfaceTemplateConsolidationData(resource,
83                 subInterfaceNodeTemplateId, parentPortNodeTemplateId);
84     }
85
86     /**
87     * If entity doesn't exist yet - create port template consolidation data and
88     * update it's network role according to given resource parameters.
89     *
90     * @return port template consolidation data entity by given keys
91     */
92     PortTemplateConsolidationData addPortTemplateConsolidationData(
93             String portNodeTemplateId, String portResourceId, String portResourceType) {
94         PortTemplateConsolidationData consolidationData = getPortTemplateConsolidationData(portNodeTemplateId);
95         if (consolidationData == null) {
96             consolidationData = createPortTemplateConsolidationData(portNodeTemplateId,
97               portResourceId, portResourceType);
98             setPortTemplateConsolidationData(portNodeTemplateId, consolidationData);
99         }
100         return consolidationData;
101     }
102
103     /**
104      * If entity doesn't exist yet - create port template consolidation data and.
105      *
106      * @return port template consolidation data entity by given keys
107      */
108     private PortTemplateConsolidationData addPortTemplateConsolidationData(String portNodeTemplateId) {
109         PortTemplateConsolidationData consolidationData = getPortTemplateConsolidationData(portNodeTemplateId);
110         if (consolidationData == null) {
111             consolidationData = new PortTemplateConsolidationData();
112             consolidationData.setNodeTemplateId(portNodeTemplateId);
113             setPortTemplateConsolidationData(portNodeTemplateId, consolidationData);
114         }
115         return consolidationData;
116     }
117     
118     private PortTemplateConsolidationData createPortTemplateConsolidationData(String portNodeTemplateId,
119             String portResourceId, String portResourceType) {
120         PortTemplateConsolidationData consolidationData = new PortTemplateConsolidationData();
121         consolidationData.setNodeTemplateId(portNodeTemplateId);
122         Optional<String> portNetworkRole = HeatResourceUtil.evaluateNetworkRoleFromResourceId(portResourceId,
123                 portResourceType);
124         portNetworkRole.ifPresent(consolidationData::setNetworkRole);
125         return consolidationData;
126     }
127 }