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=========================================================
20 package org.openecomp.sdc.be.model.tosca;
22 import org.openecomp.sdc.be.model.tosca.converters.BooleanConverter;
23 import org.openecomp.sdc.be.model.tosca.converters.DefaultConverter;
24 import org.openecomp.sdc.be.model.tosca.converters.FloatConverter;
25 import org.openecomp.sdc.be.model.tosca.converters.IntegerConverter;
26 import org.openecomp.sdc.be.model.tosca.converters.JsonConverter;
27 import org.openecomp.sdc.be.model.tosca.converters.ListConverter;
28 import org.openecomp.sdc.be.model.tosca.converters.MapConverter;
29 import org.openecomp.sdc.be.model.tosca.converters.PropertyValueConverter;
30 import org.openecomp.sdc.be.model.tosca.converters.StringConvertor;
31 import org.openecomp.sdc.be.model.tosca.converters.ToscaBooleanConverter;
32 import org.openecomp.sdc.be.model.tosca.converters.ToscaFloatConverter;
33 import org.openecomp.sdc.be.model.tosca.converters.ToscaJsonValueConverter;
34 import org.openecomp.sdc.be.model.tosca.converters.ToscaListValueConverter;
35 import org.openecomp.sdc.be.model.tosca.converters.ToscaMapValueConverter;
36 import org.openecomp.sdc.be.model.tosca.converters.ToscaStringConvertor;
37 import org.openecomp.sdc.be.model.tosca.converters.ToscaValueConverter;
38 import org.openecomp.sdc.be.model.tosca.converters.ToscaValueDefaultConverter;
39 import org.openecomp.sdc.be.model.tosca.validators.BooleanValidator;
40 import org.openecomp.sdc.be.model.tosca.validators.FloatValidator;
41 import org.openecomp.sdc.be.model.tosca.validators.IntegerValidator;
42 import org.openecomp.sdc.be.model.tosca.validators.JsonValidator;
43 import org.openecomp.sdc.be.model.tosca.validators.KeyValidator;
44 import org.openecomp.sdc.be.model.tosca.validators.ListValidator;
45 import org.openecomp.sdc.be.model.tosca.validators.MapValidator;
46 import org.openecomp.sdc.be.model.tosca.validators.PropertyTypeValidator;
47 import org.openecomp.sdc.be.model.tosca.validators.StringValidator;
50 * The primitive type that TOSCA YAML supports.
54 public enum ToscaPropertyType {
56 ROOT("tosca.datatypes.Root", null, null, null, true),
57 STRING("string", StringValidator.getInstance(), StringConvertor.getInstance(), ToscaStringConvertor.getInstance()),
58 BOOLEAN("boolean", BooleanValidator.getInstance(), ToscaBooleanConverter.getInstance(), BooleanConverter.getInstance()),
59 FLOAT("float", FloatValidator.getInstance(), ToscaFloatConverter.getInstance(), FloatConverter.getInstance()),
60 INTEGER("integer", IntegerValidator.getInstance(), DefaultConverter.getInstance(), IntegerConverter.getInstance()),
61 SCALAR_UNIT("scalar-unit", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
62 SCALAR_UNIT_SIZE("scalar-unit.size", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
63 SCALAR_UNIT_TIME("scalar-unit.time", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
64 SCALAR_UNIT_FREQUENCY("scalar-unit.frequency", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
65 RANGE("range", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
66 TIMESTAMP("timestamp", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
67 MAP("map", MapValidator.getInstance(), MapConverter.getInstance(), ToscaMapValueConverter.getInstance()),
68 LIST("list", ListValidator.getInstance(), ListConverter.getInstance(), ToscaListValueConverter.getInstance()),
69 VERSION("version", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
70 KEY("key", KeyValidator.getInstance(), StringConvertor.getInstance(), ToscaValueDefaultConverter.getInstance()),
71 JSON("json", JsonValidator.getInstance(), JsonConverter.getInstance(), ToscaJsonValueConverter.getInstance());
75 private PropertyTypeValidator validator;
76 private PropertyValueConverter converter;
77 private ToscaValueConverter valueConverter;
78 private boolean isAbstract = false;
80 ToscaPropertyType(String type, PropertyTypeValidator validator, PropertyValueConverter converter, ToscaValueConverter valueConverter) {
82 this.validator = validator;
83 this.converter = converter;
84 this.valueConverter = valueConverter;
87 ToscaPropertyType(String type, PropertyTypeValidator validator, PropertyValueConverter converter, ToscaValueConverter valueConverter,
89 this(type, validator, converter, valueConverter);
90 this.isAbstract = isAbstract;
93 public static ToscaPropertyType isValidType(String typeName) {
94 if (typeName == null) {
97 for (ToscaPropertyType type : ToscaPropertyType.values()) {
98 if (type.getType().equals(typeName)) {
105 public static boolean isScalarType(String dataTypeName) {
106 ToscaPropertyType isPrimitiveToscaType = ToscaPropertyType.isValidType(dataTypeName);
107 return isPrimitiveToscaType != null && !isPrimitiveToscaType.isAbstract();
110 public static boolean isPrimitiveType(String dataTypeName) {
111 if (ToscaPropertyType.MAP.getType().equals(dataTypeName) || ToscaPropertyType.LIST.getType().equals(dataTypeName)) {
114 if (isScalarType(dataTypeName)) {
120 public static ToscaPropertyType getTypeIfScalar(String dataTypeName) {
121 ToscaPropertyType isPrimitiveToscaType = ToscaPropertyType.isValidType(dataTypeName);
122 if (isPrimitiveToscaType != null && !isPrimitiveToscaType.isAbstract()) {
123 return isPrimitiveToscaType;
129 public String getType() {
133 public PropertyTypeValidator getValidator() {
137 public PropertyValueConverter getConverter() {
141 public boolean isAbstract() {
145 public ToscaValueConverter getValueConverter() {
146 return valueConverter;
150 public String toString() {
151 return name().toLowerCase();