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

com.crabshue.commons.validations.path.validators.FilePathValidator Maven / Gradle / Ivy

The newest version!
package com.crabshue.commons.validations.path.validators;

import com.crabshue.commons.validations.ObjectValidator;
import com.crabshue.commons.validations.path.annotations.PathAccessMode;
import com.crabshue.commons.validations.path.annotations.ValidFilePath;

import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.nio.file.Files;
import java.nio.file.Path;

public class FilePathValidator implements ConstraintValidator {

    private PathAccessMode[] accessModes;

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

    @Override
    public boolean isValid(Path path, ConstraintValidatorContext constraintValidatorContext) {

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

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

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

        return true;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy