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