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.BooleanConverter;
24 import org.openecomp.sdc.be.model.tosca.converters.DefaultConverter;
25 import org.openecomp.sdc.be.model.tosca.converters.FloatConverter;
26 import org.openecomp.sdc.be.model.tosca.converters.IntegerConverter;
27 import org.openecomp.sdc.be.model.tosca.converters.JsonConverter;
28 import org.openecomp.sdc.be.model.tosca.converters.ListConverter;
29 import org.openecomp.sdc.be.model.tosca.converters.MapConverter;
30 import org.openecomp.sdc.be.model.tosca.converters.PropertyValueConverter;
31 import org.openecomp.sdc.be.model.tosca.converters.StringConvertor;
32 import org.openecomp.sdc.be.model.tosca.converters.ToscaBooleanConverter;
33 import org.openecomp.sdc.be.model.tosca.converters.ToscaFloatConverter;
34 import org.openecomp.sdc.be.model.tosca.converters.ToscaJsonValueConverter;
35 import org.openecomp.sdc.be.model.tosca.converters.ToscaListValueConverter;
36 import org.openecomp.sdc.be.model.tosca.converters.ToscaMapValueConverter;
37 import org.openecomp.sdc.be.model.tosca.converters.ToscaStringConvertor;
38 import org.openecomp.sdc.be.model.tosca.converters.ToscaValueConverter;
39 import org.openecomp.sdc.be.model.tosca.converters.ToscaValueDefaultConverter;
40 import org.openecomp.sdc.be.model.tosca.validators.BooleanValidator;
41 import org.openecomp.sdc.be.model.tosca.validators.FloatValidator;
42 import org.openecomp.sdc.be.model.tosca.validators.IntegerValidator;
43 import org.openecomp.sdc.be.model.tosca.validators.JsonValidator;
44 import org.openecomp.sdc.be.model.tosca.validators.KeyValidator;
45 import org.openecomp.sdc.be.model.tosca.validators.ListValidator;
46 import org.openecomp.sdc.be.model.tosca.validators.MapValidator;
47 import org.openecomp.sdc.be.model.tosca.validators.PropertyTypeValidator;
48 import org.openecomp.sdc.be.model.tosca.validators.StringValidator;
51 * The primitive type that TOSCA YAML supports.
55 public enum ToscaPropertyType {
57 Root("tosca.datatypes.Root", null, null, null, true),
59 STRING("string", StringValidator.getInstance(), StringConvertor.getInstance(), ToscaStringConvertor.getInstance()),
61 BOOLEAN("boolean", BooleanValidator.getInstance(), ToscaBooleanConverter.getInstance(), BooleanConverter.getInstance()),
63 FLOAT("float", FloatValidator.getInstance(), ToscaFloatConverter.getInstance(), FloatConverter.getInstance()),
65 INTEGER("integer", IntegerValidator.getInstance(), DefaultConverter.getInstance(), IntegerConverter.getInstance()),
67 SCALAR_UNIT("scalar-unit", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
69 SCALAR_UNIT_SIZE("scalar-unit.size", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
71 SCALAR_UNIT_TIME("scalar-unit.time", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
73 SCALAR_UNIT_FREQUENCY("scalar-unit.frequency", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
75 RANGE("range", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
77 TIMESTAMP("timestamp", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
79 MAP("map", MapValidator.getInstance(), MapConverter.getInstance(), ToscaMapValueConverter.getInstance()),
81 LIST("list", ListValidator.getInstance(), ListConverter.getInstance(), ToscaListValueConverter.getInstance()),
83 VERSION("version", StringValidator.getInstance(), DefaultConverter.getInstance(), ToscaValueDefaultConverter.getInstance()),
85 KEY("key", KeyValidator.getInstance(), StringConvertor.getInstance(), ToscaValueDefaultConverter.getInstance()),
87 JSON("json", JsonValidator.getInstance(), JsonConverter.getInstance(), ToscaJsonValueConverter.getInstance());
89 // CREDENTIAL("tosca.datatypes.Credential", StringValidator.getInstance(),
90 // DefaultConverter.getInstance());
93 private PropertyTypeValidator validator;
94 private PropertyValueConverter converter;
95 private ToscaValueConverter valueConverter;
96 private boolean isAbstract = false;
98 ToscaPropertyType(String type, PropertyTypeValidator validator, PropertyValueConverter converter, ToscaValueConverter valueConverter) {
100 this.validator = validator;
101 this.converter = converter;
102 this.valueConverter = valueConverter;
105 ToscaPropertyType(String type, PropertyTypeValidator validator, PropertyValueConverter converter, ToscaValueConverter valueConverter, boolean isAbstract) {
106 this(type, validator, converter, valueConverter);
107 this.isAbstract = isAbstract;
110 // private static final Pattern TIMESTAMP_REGEX = Pattern
111 // .compile("[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]|[0-9][0-9][0-9][0-9]-[0-9][0-9]?-[0-9][0-9]?([Tt]|[
112 // \\t]+)[0-9][0-9]?:[0-9][0-9]:[0-9][0-9](\\.[0-9]*)?(([ \\t]*)Z|([
113 // \\t]*)[-+][0-9][0-9]?(:[0-9][0-9])?)?");
115 public String getType() {
119 public void setType(String type) {
123 public PropertyTypeValidator getValidator() {
127 public void setValidator(PropertyTypeValidator validator) {
128 this.validator = validator;
131 public PropertyValueConverter getConverter() {
135 public void setConverter(PropertyValueConverter converter) {
136 this.converter = converter;
139 public boolean isAbstract() {
143 public void setAbstract(boolean isAbstract) {
144 this.isAbstract = isAbstract;
147 public ToscaValueConverter getValueConverter() {
148 return valueConverter;
151 public void setValueConverter(ToscaValueConverter valueConverter) {
152 this.valueConverter = valueConverter;
155 public static ToscaPropertyType isValidType(String typeName) {
156 if (typeName == null) {
160 for (ToscaPropertyType type : ToscaPropertyType.values()) {
161 if (type.getType().equals(typeName)) {
168 public static boolean isScalarType(String dataTypeName) {
170 ToscaPropertyType isPrimitiveToscaType = ToscaPropertyType.isValidType(dataTypeName);
172 return isPrimitiveToscaType != null && isPrimitiveToscaType.isAbstract() == false;
176 public static boolean isPrimitiveType(String dataTypeName) {
178 if (ToscaPropertyType.MAP.getType().equals(dataTypeName) || ToscaPropertyType.LIST.getType().equals(dataTypeName)){
181 if(isScalarType(dataTypeName)){
187 public static ToscaPropertyType getTypeIfScalar(String dataTypeName) {
189 ToscaPropertyType isPrimitiveToscaType = ToscaPropertyType.isValidType(dataTypeName);
191 if (isPrimitiveToscaType != null && isPrimitiveToscaType.isAbstract() == false) {
192 return isPrimitiveToscaType;
200 public String toString() {
201 return name().toLowerCase();