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

net.leadware.bean.validation.ext.engine.file.FileValidatorEngine Maven / Gradle / Ivy

The newest version!
/**
 * RATP :: SIT :: I2V :: SGA
 */
package net.leadware.bean.validation.ext.engine.file;

/*-
 * #%L
 * JSR 303 Extentions Tools
 * $Id:$
 * $HeadURL:$
 * %%
 * Copyright (C) 2019 Leadware
 * %%
 * 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.
 * #L%
 */

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

import net.leadware.bean.validation.ext.annotations.file.FileValidator;
import net.leadware.bean.validation.ext.tools.FileUtils;

/**
 * Classe d'implémentation de la validation defichier définie par {@link FileValidator}
 * @author Jean-Jacques ETUNE NGI (Java EE Technical Lead / Enterprise Architect)
 * @since 19 avr. 2019
 */
public class FileValidatorEngine implements ConstraintValidator {
	
	/**
	 * Annotation de validation
	 */
	private FileValidator fileValidator;
	
	/*
	 * (non-Javadoc)
	 * @see javax.validation.ConstraintValidator#initialize(java.lang.annotation.Annotation)
	 */
	@Override
	public void initialize(FileValidator fileValidator) {
		
		// Appel Parent
		ConstraintValidator.super.initialize(fileValidator);
		
		// Positionnement du type de fichier
		this.fileValidator = fileValidator;
	}
	
	/*
	 * (non-Javadoc)
	 * @see javax.validation.ConstraintValidator#isValid(java.lang.Object, javax.validation.ConstraintValidatorContext)
	 */
	@Override
	public boolean isValid(String value, ConstraintValidatorContext context) {
		
		// Si le champ est vide
		if(value == null || value.trim().isEmpty()) 
			
			// On retourne la valeur de l'état de validation en cas de champs vide
			return fileValidator.acceptOnEmptyField();
		
		// Enumération des cas de validation
		switch (fileValidator.visibility()) {
		
		// En cas de validation de l'existence
		case EXISTS:
			
			// Énumération des type de fichier
			switch (fileValidator.fileType()) {
			
			// Fichier regulier
			case FILE:
				
				// Validation de l'existence du fichier regulier
				return FileUtils.isFile(value.trim());
				
			case DIRECTORY:
				
				// Validation de l'existence du repertoire
				return FileUtils.isDirectory(value.trim());
				
			case ANY:
				
				// Validation de l'existence du fichier ou repertoire
				return FileUtils.fileExists(value.trim());
				
			default:
				
				// Validation de l'existence du fichier ou repertoire
				return FileUtils.fileExists(value.trim());
				
			}
			
		// En cas de validation de la non existence
		case NOTEXISTS:

			// Énumération des type de fichier
			switch (fileValidator.fileType()) {
			
			// Fichier regulier
			case FILE:
				
				// Validation de la non existence du fichier regulier
				return !FileUtils.isFile(value.trim());
				
			case DIRECTORY:
				
				// Validation de la non existence du repertoire
				return !FileUtils.isDirectory(value.trim());
				
			case ANY:
				
				// Validation de la non existence du fichier ou repertoire
				return !FileUtils.fileExists(value.trim());
				
			default:
				
				// Validation de la non existence du fichier ou repertoire
				return !FileUtils.fileExists(value.trim());
			}	
		
		// Validation de l'existence du repertoire parent
		case PARENT_DIR_EXISTS:
			
			// On retourne l'état de lecture
			return FileUtils.isParentDirExists(value.trim());
			
		// Validation de la visibilité cachée
		case HIDDEN:
		
			// Validation
			return FileUtils.isHidden(value.trim());
			
		// Validation de la visibilité lecture	
		case READEABLE:
			
			// On retourne l'état de lecture
			return FileUtils.isReadeable(value.trim());
			
		// Validation de la visibilité lecture	
		case WRITEABLE:
			
			// On retourne l'état de lecture/ecriture
			return FileUtils.isWriteable(value.trim());
		}
		
		// On retourne false
		return false;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy