2 * ============LICENSE_START=======================================================
3 * Copyright (C) 2019 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
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.
16 * SPDX-License-Identifier: Apache-2.0
17 * ============LICENSE_END=========================================================
20 package org.onap.sdc.tosca.datatypes.model;
22 import java.util.Arrays;
23 import java.util.regex.Pattern;
24 import org.apache.commons.lang3.StringUtils;
27 * This Class is responsible for validating if a given value is a valid Tosca Scalar Unit Type.
29 public class ScalarUnitValidator {
31 private static ScalarUnitValidator scalarUnitValidator = new ScalarUnitValidator();
34 * Tosca Scalar Unit Types structure.
36 private final Pattern pattern = Pattern.compile("\\d+\\s*[a-zA-Z]{1,3}");
38 private ScalarUnitValidator() {
41 public static ScalarUnitValidator getInstance() {
42 return scalarUnitValidator;
46 * Validates if the given String matches with the Tosca Scalar Unit Types structure.
48 * @param value String to be validated.
49 * @return an {@Boolean}
51 public boolean isScalarUnit(final String value) {
52 if (value == null || value.isEmpty()) {
56 return pattern.matcher(value).matches();
60 * Validates if the given String has a Recognized Tosca unit.
62 * @param value String to be validated
63 * @param enumClass Enum that represents a Tosca Scalar Unit Type.
65 * @return an Enum that represents the Tosca Scalar Unit Type.
67 public <E extends Enum<E>> boolean isValueScalarUnit(final Object value, final Class<E> enumClass) {
68 final String stringToValidate = String.valueOf(value);
69 return isScalarUnit(stringToValidate) && Arrays.stream(StringUtils.split(stringToValidate))
70 .anyMatch(strValue -> Arrays.stream(enumClass.getEnumConstants())
71 .anyMatch(scalarUnit ->
72 scalarUnit.name().equalsIgnoreCase(strValue) || strValue.endsWith(scalarUnit.name())));