2 * ============LICENSE_START=======================================================
4 * ================================================================================
5 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
6 * ================================================================================
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
18 * ============LICENSE_END=========================================================
21 package org.openecomp.sdc.be.model.tosca;
23 import org.openecomp.sdc.be.model.tosca.converters.*;
24 import org.openecomp.sdc.be.model.tosca.validators.*;
27 * The primitive type that TOSCA YAML supports.
31 public enum ToscaPropertyType {
33 Root("tosca.datatypes.Root", null, null, null, true),
35 STRING("string", StringValidator.getInstance(), StringConvertor.getInstance(), ToscaStringConvertor.getInstance()),
37 BOOLEAN("boolean", BooleanValidator.getInstance(), ToscaBooleanConverter.getInstance(), BooleanConverter.getInstance()),
39 FLOAT("float", FloatValidator.getInstance(), ToscaFloatConverter.getInstance(), FloatConverter.getInstance()),
41 INTEGER("integer", IntegerValidator.getInstance(), DefaultConverter.getInstance(), IntegerConverter.getInstance()),
43 SCALAR_UNIT("scalar-unit", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
45 SCALAR_UNIT_SIZE("scalar-unit.size", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
47 SCALAR_UNIT_TIME("scalar-unit.time", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
49 SCALAR_UNIT_FREQUENCY("scalar-unit.frequency", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
51 RANGE("range", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
53 TIMESTAMP("timestamp", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
55 MAP("map", MapValidator.getInstance(), MapConverter.getInstance(), ToscaMapValueConverter.getInstance()),
57 LIST("list", ListValidator.getInstance(), ListConverter.getInstance(), ToscaListValueConverter.getInstance()),
59 VERSION("version", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
61 KEY("key", KeyValidator.getInstance(), StringConvertor.getInstance(), ToscaValueDefaultConverter.getInstance()),
63 JSON("json", JsonValidator.getInstance(), JsonConverter.getInstance(), ToscaJsonValueConverter.getInstance());
66 private PropertyTypeValidator validator;
67 private PropertyValueConverter converter;
68 private ToscaValueConverter valueConverter;
69 private boolean isAbstract = false;
71 ToscaPropertyType(String type, PropertyTypeValidator validator, PropertyValueConverter converter, ToscaValueConverter valueConverter) {
73 this.validator = validator;
74 this.converter = converter;
75 this.valueConverter = valueConverter;
78 ToscaPropertyType(String type, PropertyTypeValidator validator, PropertyValueConverter converter, ToscaValueConverter valueConverter, boolean isAbstract) {
79 this(type, validator, converter, valueConverter);
80 this.isAbstract = isAbstract;
83 public String getType() {
87 public void setType(String type) {
91 public PropertyTypeValidator getValidator() {
95 public void setValidator(PropertyTypeValidator validator) {
96 this.validator = validator;
99 public PropertyValueConverter getConverter() {
103 public void setConverter(PropertyValueConverter converter) {
104 this.converter = converter;
107 public boolean isAbstract() {
111 public void setAbstract(boolean isAbstract) {
112 this.isAbstract = isAbstract;
115 public ToscaValueConverter getValueConverter() {
116 return valueConverter;
119 public void setValueConverter(ToscaValueConverter valueConverter) {
120 this.valueConverter = valueConverter;
123 public static ToscaPropertyType isValidType(String typeName) {
124 if (typeName == null) {
128 for (ToscaPropertyType type : ToscaPropertyType.values()) {
129 if (type.getType().equals(typeName)) {
136 public static boolean isScalarType(String dataTypeName) {
138 ToscaPropertyType isPrimitiveToscaType = ToscaPropertyType.isValidType(dataTypeName);
140 return isPrimitiveToscaType != null && !isPrimitiveToscaType.isAbstract();
144 public static boolean isPrimitiveType(String dataTypeName) {
146 if (ToscaPropertyType.MAP.getType().equals(dataTypeName) || ToscaPropertyType.LIST.getType().equals(dataTypeName)){
149 if(isScalarType(dataTypeName)){
155 public static ToscaPropertyType getTypeIfScalar(String dataTypeName) {
157 ToscaPropertyType isPrimitiveToscaType = ToscaPropertyType.isValidType(dataTypeName);
159 if (isPrimitiveToscaType != null && !isPrimitiveToscaType.isAbstract()) {
160 return isPrimitiveToscaType;
168 public String toString() {
169 return name().toLowerCase();