All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.zuunr.forms.validation.StringValidator Maven / Gradle / Ivy

/*
 * Copyright 2018 Zuunr AB
 *
 * 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.
 */

package com.zuunr.forms.validation;

import com.zuunr.forms.FormField;
import com.zuunr.forms.formfield.MinLength;
import com.zuunr.forms.formfield.Pattern;
import com.zuunr.json.JsonValue;

/**
 * @author Niklas Eldberger
 */
public class StringValidator {

    private static final JsonValue STRING = JsonValue.of("string");

    public FormFieldValidationResult.Builder validate(FormField formField, JsonValue fieldValue, Boolean returnWaste, FormFieldValidationResult.Builder fieldValidationBuilder){

        if (fieldValue.is(String.class)) {

            Integer minlength = formField.minlength().asInteger();
            Integer maxlength = formField.maxlength().asInteger();
            Pattern pattern = formField.pattern();

            if (minlength > fieldValue.getValue(String.class).length()) {

                fieldValidationBuilder.valid(false);
                if (returnWaste) {
                    fieldValidationBuilder.add("minlength", formField.asJsonObject().get("maxlength"));
                }
            }

            if (maxlength < fieldValue.getValue(String.class).length()) {
                fieldValidationBuilder.valid(false);
                if (returnWaste) {
                    fieldValidationBuilder.add("maxlength", formField.asJsonObject().get("maxlength"));
                }
            }

            if (pattern != null && !pattern.compiled().matcher(fieldValue.getValue(String.class)).matches()) {
                fieldValidationBuilder.valid(false);
                if (returnWaste) {
                    fieldValidationBuilder.add("pattern", pattern.asJsonValue());
                }
            }
        } else {
            fieldValidationBuilder.valid(false);
            if (returnWaste) {
                fieldValidationBuilder.add("type", STRING);
            }
        }
        return fieldValidationBuilder;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy