Support TOSCA functions in operation inputs
[sdc.git] / common-be / src / main / java / org / openecomp / sdc / be / datatypes / tosca / ToscaGetFunctionType.java
1 /*
2  * ============LICENSE_START=======================================================
3  *  Copyright (C) 2021 Nordix Foundation
4  *  ================================================================================
5  *  Licensed under the Apache License, Version 2.0 (the "License");
6  *  you may not use this file except in compliance with the License.
7  *  You may obtain a copy of the License at
8  *
9  *        http://www.apache.org/licenses/LICENSE-2.0
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  *  SPDX-License-Identifier: Apache-2.0
17  *  ============LICENSE_END=========================================================
18  */
19
20 package org.openecomp.sdc.be.datatypes.tosca;
21
22 import java.util.HashMap;
23 import java.util.Map;
24 import java.util.Optional;
25 import lombok.AllArgsConstructor;
26 import lombok.Getter;
27 import org.openecomp.sdc.be.datatypes.elements.ToscaFunctionType;
28
29 @AllArgsConstructor
30 @Getter
31 public enum ToscaGetFunctionType {
32     GET_INPUT("get_input", "input"),
33     GET_PROPERTY("get_property", "property"),
34     GET_ATTRIBUTE("get_attribute", "attribute");
35
36     private final String functionName;
37     private final String propertyType;
38
39     private static final Map<String, ToscaGetFunctionType> BY_FUNCTION_NAME = new HashMap<>();
40     private static final Map<String, ToscaGetFunctionType> BY_PROPERTY_TYPE = new HashMap<>();
41
42     static {
43         for (ToscaGetFunctionType e : values()) {
44             BY_FUNCTION_NAME.put(e.functionName, e);
45             BY_PROPERTY_TYPE.put(e.propertyType, e);
46         }
47     }
48
49     /**
50      * Converts a {@link ToscaFunctionType} to a {@link ToscaGetFunctionType}
51      * @param toscaFunctionType the tosca function type to convert
52      * @return the respective {@link ToscaGetFunctionType}
53      */
54     public static Optional<ToscaGetFunctionType> fromToscaFunctionType(final ToscaFunctionType toscaFunctionType) {
55         switch (toscaFunctionType) {
56             case GET_INPUT:
57                 return Optional.of(GET_INPUT);
58             case GET_PROPERTY:
59                 return Optional.of(GET_PROPERTY);
60             case GET_ATTRIBUTE:
61                 return Optional.of(GET_ATTRIBUTE);
62             default:
63                 return Optional.empty();
64         }
65     }
66
67     public static ToscaGetFunctionType valueOfFunctionName(String functionName) {
68         return BY_FUNCTION_NAME.get(functionName);
69     }
70
71     public static ToscaGetFunctionType valueOfPropertyType(String propertyType) {
72         return BY_PROPERTY_TYPE.get(propertyType);
73     }
74
75 }