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

com.crabshue.commons.validations.validators.FileValidator Maven / Gradle / Ivy

package com.crabshue.commons.validations.validators;

import java.io.File;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;

import com.crabshue.commons.validations.ValidFile;
import com.crabshue.commons.validations.validators.file.AccessMode;

public class FileValidator implements ConstraintValidator {

    private AccessMode[] accessModes;

    @Override
    public void initialize(ValidFile constraintAnnotation) {
        accessModes = constraintAnnotation.accessModes();
    }

    @Override
    public boolean isValid(File file, ConstraintValidatorContext constraintValidatorContext) {

        if (!file.exists()) {
            setErrorMessage(constraintValidatorContext, "The file '${validatedValue}' does not exist");
            return false;
        }

        if (!file.isFile()) {
            setErrorMessage(constraintValidatorContext, "'${validatedValue}' is not a file");
            return false;
        }

        for (AccessMode accessMode : accessModes) {
            if (!accessMode.canAccessInMode(file)) {
                setErrorMessage(constraintValidatorContext, "The file '${validatedValue}' cannot be accessed in " + accessMode.getAccessMode());
                return false;
            }
        }

        return true;
    }

    private void setErrorMessage(ConstraintValidatorContext constraintValidatorContext, String message) {
        constraintValidatorContext.disableDefaultConstraintViolation();

        constraintValidatorContext
            .buildConstraintViolationWithTemplate(message)
            .addConstraintViolation();
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy