Commit 6eccc2e5 authored by Diogo Santos's avatar Diogo Santos
Browse files

Reverted change to remove validation based on valueType

parent affc24e3
Loading
Loading
Loading
Loading
Loading
+39 −7
Original line number Diff line number Diff line
@@ -18,10 +18,6 @@ public class ServiceSpecCharacteristicValueValidator {
    }

    public boolean isTypeInvalid() {
        String regex = serviceSpecCharacteristicValue.getRegex();
        if (regex == null || regex.isBlank()) {
            return false;
        }
        Any value = serviceSpecCharacteristicValue.getValue();
        if (value == null) {
            return false;
@@ -30,11 +26,47 @@ public class ServiceSpecCharacteristicValueValidator {
        if (stringValue == null || stringValue.isBlank()) {
            return false;
        }
        try {
            LocalDateTime.parse(stringValue, DateTimeFormatter.ofPattern(regex));
        String regex = serviceSpecCharacteristicValue.getRegex();
        if (regex != null && !regex.isBlank()) {
            return !isRegexValid(stringValue, regex);
        }
        if (serviceSpecCharacteristicValue.getValueType() != null) {
            return !isValueTypeValid(stringValue);
        }
        return false;
    }

    private boolean isRegexValid(String value, String regex) {
        try {
            LocalDateTime.parse(value, DateTimeFormatter.ofPattern(regex));
            return true;
        } catch (IllegalArgumentException | DateTimeParseException e) {
            return !stringValue.matches(regex);
            return value.matches(regex);
        }
    }

    private boolean isValueTypeValid(String value) {
        final String INTEGER_REGEX = "[-+]?\\d+";
        final String FLOAT_REGEX = "[-+]?\\d*([.,]\\d+)?([eE][-+]?\\d+)?";
        final String BOOLEAN_REGEX = "(?i)true|false";
        final DateTimeFormatter ISO_DATE_TIME = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ");
        try {
            return switch (EValueType.getEnum(serviceSpecCharacteristicValue.getValueType())) {
                case INTEGER, SMALLINT, lONGINT -> value.matches(INTEGER_REGEX);
                case FLOAT -> value.matches(FLOAT_REGEX);
                case BOOLEAN -> value.matches(BOOLEAN_REGEX) || value.matches(INTEGER_REGEX);
                case TIMESTAMP -> {
                    try {
                        LocalDateTime.parse(value, ISO_DATE_TIME);
                        yield true;
                    } catch (DateTimeParseException e) {
                        yield false;
                    }
                }
                default -> true;
            };
        } catch (IllegalArgumentException e) {
            return false;
        }
    }

+11 −11
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@
				{
					"isDefault": true,
					"rangeInterval": null,
					"regex": "[-+]?\\d+",
					"regex": null,
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
@@ -57,7 +57,7 @@
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
					"valueType": "INTEGER",
					"valueType": null,
					"validFor": null,
					"value": {
						"value": "not an integer",
@@ -80,7 +80,7 @@
				{
					"isDefault": true,
					"rangeInterval": null,
					"regex": "[-+]?\\d+",
					"regex": null,
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
@@ -107,7 +107,7 @@
				{
					"isDefault": true,
					"rangeInterval": null,
					"regex": "[-+]?\\d+",
					"regex": null,
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
@@ -134,7 +134,7 @@
				{
					"isDefault": true,
					"rangeInterval": null,
					"regex": "[-+]?\\d+",
					"regex": null,
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
@@ -161,7 +161,7 @@
				{
					"isDefault": true,
					"rangeInterval": null,
					"regex": "[-+]?\\d+",
					"regex": null,
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
@@ -188,7 +188,7 @@
				{
					"isDefault": true,
					"rangeInterval": null,
					"regex": "[-+]?\\d*([.,]\\d+)?([eE][-+]?\\d+)?",
					"regex": null,
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
@@ -219,7 +219,7 @@
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
					"valueType": "FLOAT",
					"valueType": null,
					"validFor": null,
					"value": {
						"value": "127.0.0.1",
@@ -269,7 +269,7 @@
				{
					"isDefault": true,
					"rangeInterval": null,
					"regex": "(?i)true|false",
					"regex": null,
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
@@ -296,7 +296,7 @@
				{
					"isDefault": true,
					"rangeInterval": null,
					"regex": "yyyy-MM-dd'T'HH:mm:ss.SSSZ",
					"regex": null,
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
@@ -327,7 +327,7 @@
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
					"valueType": "TIMESTAMP",
					"valueType": null,
					"validFor": null,
					"value": {
						"value": "13:38:01 2025/09/03",
+10 −10
Original line number Diff line number Diff line
@@ -26,7 +26,7 @@
				{
					"isDefault": true,
					"rangeInterval": null,
					"regex": "[-+]?\\d+",
					"regex": null,
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
@@ -57,7 +57,7 @@
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
					"valueType": "INTEGER",
					"valueType": null,
					"validFor": null,
					"value": {
						"value": "-0",
@@ -80,7 +80,7 @@
				{
					"isDefault": true,
					"rangeInterval": null,
					"regex": "[-+]?\\d+",
					"regex": null,
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
@@ -107,7 +107,7 @@
				{
					"isDefault": true,
					"rangeInterval": null,
					"regex": "[-+]?\\d+",
					"regex": null,
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
@@ -134,7 +134,7 @@
				{
					"isDefault": true,
					"rangeInterval": null,
					"regex": "[-+]?\\d+",
					"regex": null,
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
@@ -161,7 +161,7 @@
				{
					"isDefault": true,
					"rangeInterval": null,
					"regex": "[-+]?\\d+",
					"regex": null,
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
@@ -188,7 +188,7 @@
				{
					"isDefault": true,
					"rangeInterval": null,
					"regex": "[-+]?\\d*([.,]\\d+)?([eE][-+]?\\d+)?",
					"regex": null,
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
@@ -219,7 +219,7 @@
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
					"valueType": "FLOAT",
					"valueType": null,
					"validFor": null,
					"value": {
						"value": "1234.567890",
@@ -269,7 +269,7 @@
				{
					"isDefault": true,
					"rangeInterval": null,
					"regex": "(?i)true|false",
					"regex": null,
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
@@ -300,7 +300,7 @@
					"unitOfMeasure": "N/A",
					"valueFrom": null,
					"valueTo": null,
					"valueType": "BOOLEAN",
					"valueType": null,
					"validFor": null,
					"value": {
						"value": "true",