5e86c29ed2e4471b2330ab38db946c0cb58e3472
[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 package org.onap.sdc.tosca.datatypes.model;
17
18 import java.util.HashMap;
19 import java.util.Map;
20 import java.util.Objects;
21 import java.util.Optional;
22 import org.apache.commons.collections4.MapUtils;
23 import org.onap.sdc.tosca.services.DataModelCloneUtil;
24
25 public class InterfaceDefinitionTemplate extends InterfaceDefinition {
26
27     private Map<String, Object> inputs;
28     private Map<String, OperationDefinitionTemplate> operations;
29
30     public InterfaceDefinitionTemplate() {
31     }
32
33     public InterfaceDefinitionTemplate(Object toscaInterfaceDefTemplateObj) {
34         InterfaceDefinitionTemplate interfaceDefinitionTemplate = (InterfaceDefinitionTemplate) convertObjToInterfaceDefinition(
35             toscaInterfaceDefTemplateObj);
36         this.setInputs(DataModelCloneUtil.cloneStringObjectMap(interfaceDefinitionTemplate.getInputs()));
37         this.setOperations(DataModelCloneUtil.cloneStringOperationDefinitionMap(interfaceDefinitionTemplate.getOperations()));
38     }
39
40     public Map<String, Object> getInputs() {
41         return inputs;
42     }
43
44     public void setInputs(Map<String, Object> inputs) {
45         this.inputs = inputs;
46     }
47
48     public Map<String, OperationDefinitionTemplate> getOperations() {
49         return operations;
50     }
51
52     public void setOperations(Map<String, OperationDefinitionTemplate> operations) {
53         this.operations = operations;
54     }
55
56     @Override
57     public int hashCode() {
58         return Objects.hash(inputs, operations);
59     }
60
61     @Override
62     public boolean equals(Object o) {
63         if (this == o) {
64             return true;
65         }
66         if (!(o instanceof InterfaceDefinitionTemplate)) {
67             return false;
68         }
69         InterfaceDefinitionTemplate that = (InterfaceDefinitionTemplate) o;
70         return Objects.equals(inputs, that.inputs) && Objects.equals(operations, that.operations);
71     }
72
73     @Override
74     public void addOperation(String operationName, OperationDefinition operationDefinition) {
75         addOperation(operationName, (OperationDefinitionTemplate) operationDefinition);
76     }
77
78     private void addOperation(String operationName, OperationDefinitionTemplate operation) {
79         if (MapUtils.isEmpty(this.operations)) {
80             this.operations = new HashMap<>();
81         }
82         this.operations.put(operationName, operation);
83     }
84
85     public Optional<Object> convertInterfaceDefTemplateToToscaObj() {
86         return convertInterfaceToToscaInterfaceObj(this);
87     }
88 }