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