diff options
Diffstat (limited to 'catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/ToscaPropertyType.java')
-rw-r--r-- | catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/ToscaPropertyType.java | 199 |
1 files changed, 199 insertions, 0 deletions
diff --git a/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/ToscaPropertyType.java b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/ToscaPropertyType.java new file mode 100644 index 0000000000..2bbb84dd20 --- /dev/null +++ b/catalog-model/src/main/java/org/openecomp/sdc/be/model/tosca/ToscaPropertyType.java @@ -0,0 +1,199 @@ +/*- + * ============LICENSE_START======================================================= + * SDC + * ================================================================================ + * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============LICENSE_END========================================================= + */ + +package org.openecomp.sdc.be.model.tosca; + +import org.openecomp.sdc.be.model.tosca.converters.BooleanConverter; +import org.openecomp.sdc.be.model.tosca.converters.DefaultConverter; +import org.openecomp.sdc.be.model.tosca.converters.FloatConverter; +import org.openecomp.sdc.be.model.tosca.converters.IntegerConverter; +import org.openecomp.sdc.be.model.tosca.converters.JsonConverter; +import org.openecomp.sdc.be.model.tosca.converters.ListConverter; +import org.openecomp.sdc.be.model.tosca.converters.MapConverter; +import org.openecomp.sdc.be.model.tosca.converters.PropertyValueConverter; +import org.openecomp.sdc.be.model.tosca.converters.StringConvertor; +import org.openecomp.sdc.be.model.tosca.converters.ToscaBooleanConverter; +import org.openecomp.sdc.be.model.tosca.converters.ToscaFloatConverter; +import org.openecomp.sdc.be.model.tosca.converters.ToscaJsonValueConverter; +import org.openecomp.sdc.be.model.tosca.converters.ToscaListValueConverter; +import org.openecomp.sdc.be.model.tosca.converters.ToscaMapValueConverter; +import org.openecomp.sdc.be.model.tosca.converters.ToscaStringConvertor; +import org.openecomp.sdc.be.model.tosca.converters.ToscaValueConverter; +import org.openecomp.sdc.be.model.tosca.converters.ToscaValueDefaultConverter; +import org.openecomp.sdc.be.model.tosca.validators.BooleanValidator; +import org.openecomp.sdc.be.model.tosca.validators.FloatValidator; +import org.openecomp.sdc.be.model.tosca.validators.IntegerValidator; +import org.openecomp.sdc.be.model.tosca.validators.JsonValidator; +import org.openecomp.sdc.be.model.tosca.validators.KeyValidator; +import org.openecomp.sdc.be.model.tosca.validators.ListValidator; +import org.openecomp.sdc.be.model.tosca.validators.MapValidator; +import org.openecomp.sdc.be.model.tosca.validators.PropertyTypeValidator; +import org.openecomp.sdc.be.model.tosca.validators.StringValidator; + +/** + * The primitive type that TOSCA YAML supports. + * + * @author esofer + */ +public enum ToscaPropertyType { + + Root("tosca.datatypes.Root", null, null, null, true), + + STRING("string", StringValidator.getInstance(), StringConvertor.getInstance(), ToscaStringConvertor.getInstance()), + + BOOLEAN("boolean", BooleanValidator.getInstance(), ToscaBooleanConverter.getInstance(), + BooleanConverter.getInstance()), + + FLOAT("float", FloatValidator.getInstance(), ToscaFloatConverter.getInstance(), FloatConverter.getInstance()), + + INTEGER("integer", IntegerValidator.getInstance(), DefaultConverter.getInstance(), IntegerConverter.getInstance()), + + SCALAR_UNIT_SIZE("scalar-unit.size", StringValidator.getInstance(), DefaultConverter.getInstance(), + ToscaValueDefaultConverter.getInstance()), + + SCALAR_UNIT_TIME("scalar-unit.time", StringValidator.getInstance(), DefaultConverter.getInstance(), + ToscaValueDefaultConverter.getInstance()), + + SCALAR_UNIT_FREQUENCY("scalar-unit.frequency", StringValidator.getInstance(), DefaultConverter.getInstance(), + ToscaValueDefaultConverter.getInstance()), + + RANGE("range", StringValidator.getInstance(), DefaultConverter.getInstance(), + ToscaValueDefaultConverter.getInstance()), + + TIMESTAMP("timestamp", StringValidator.getInstance(), DefaultConverter.getInstance(), + ToscaValueDefaultConverter.getInstance()), + + MAP("map", MapValidator.getInstance(), MapConverter.getInstance(), ToscaMapValueConverter.getInstance()), + + LIST("list", ListValidator.getInstance(), ListConverter.getInstance(), ToscaListValueConverter.getInstance()), + + VERSION("version", StringValidator.getInstance(), DefaultConverter.getInstance(), + ToscaValueDefaultConverter.getInstance()), + + KEY("key", KeyValidator.getInstance(), StringConvertor.getInstance(), ToscaValueDefaultConverter.getInstance()), + + JSON("json", JsonValidator.getInstance(), JsonConverter.getInstance(), ToscaJsonValueConverter.getInstance()); + + // CREDENTIAL("tosca.datatypes.Credential", StringValidator.getInstance(), + // DefaultConverter.getInstance()); + + private String type; + private PropertyTypeValidator validator; + private PropertyValueConverter converter; + private ToscaValueConverter valueConverter; + private boolean isAbstract = false; + + ToscaPropertyType(String type, PropertyTypeValidator validator, PropertyValueConverter converter, + ToscaValueConverter valueConverter) { + this.type = type; + this.validator = validator; + this.converter = converter; + this.valueConverter = valueConverter; + } + + ToscaPropertyType(String type, PropertyTypeValidator validator, PropertyValueConverter converter, + ToscaValueConverter valueConverter, boolean isAbstract) { + this(type, validator, converter, valueConverter); + this.isAbstract = isAbstract; + } + + // private static final Pattern TIMESTAMP_REGEX = Pattern + // .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]|[ + // \\t]+)[0-9][0-9]?:[0-9][0-9]:[0-9][0-9](\\.[0-9]*)?(([ \\t]*)Z|([ + // \\t]*)[-+][0-9][0-9]?(:[0-9][0-9])?)?"); + + public String getType() { + return type; + } + + public void setType(String type) { + this.type = type; + } + + public PropertyTypeValidator getValidator() { + return validator; + } + + public void setValidator(PropertyTypeValidator validator) { + this.validator = validator; + } + + public PropertyValueConverter getConverter() { + return converter; + } + + public void setConverter(PropertyValueConverter converter) { + this.converter = converter; + } + + public boolean isAbstract() { + return isAbstract; + } + + public void setAbstract(boolean isAbstract) { + this.isAbstract = isAbstract; + } + + public ToscaValueConverter getValueConverter() { + return valueConverter; + } + + public void setValueConverter(ToscaValueConverter valueConverter) { + this.valueConverter = valueConverter; + } + + public static ToscaPropertyType isValidType(String typeName) { + if (typeName == null) { + return null; + } + + for (ToscaPropertyType type : ToscaPropertyType.values()) { + if (type.getType().equals(typeName)) { + return type; + } + } + return null; + } + + public static boolean isScalarType(String dataTypeName) { + + ToscaPropertyType isPrimitiveToscaType = ToscaPropertyType.isValidType(dataTypeName); + + return isPrimitiveToscaType != null && isPrimitiveToscaType.isAbstract() == false; + + } + + public static ToscaPropertyType getTypeIfScalar(String dataTypeName) { + + ToscaPropertyType isPrimitiveToscaType = ToscaPropertyType.isValidType(dataTypeName); + + if (isPrimitiveToscaType != null && isPrimitiveToscaType.isAbstract() == false) { + return isPrimitiveToscaType; + } else { + return null; + } + + } + + @Override + public String toString() { + return name().toLowerCase(); + } +} |