com.cognitivabrasil.repositorio.web.validators.UserValidator.java Source code

Java tutorial

Introduction

Here is the source code for com.cognitivabrasil.repositorio.web.validators.UserValidator.java

Source

/*
 * /*******************************************************************************
 *  * Copyright (c) 2016 Cognitiva Brasil - Tecnologias educacionais.
 *  * All rights reserved. This program and the accompanying materials
 *  * are made available either under the terms of the GNU Public License v3
 *  * which accompanies this distribution, and is available at
 *  * http://www.gnu.org/licenses/gpl.html or for any other uses contact 
 *  * contato@cognitivabrasil.com.br for information.
 *  ******************************************************************************/

package com.cognitivabrasil.repositorio.web.validators;

import com.cognitivabrasil.repositorio.web.UserDto;
import com.cognitivabrasil.repositorio.data.entities.User;
import com.cognitivabrasil.repositorio.services.UserService;
import static org.apache.commons.lang3.StringUtils.isBlank;
import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;

/**
 *
 * @author Marcos Nunes <marcosn@gmail.com>
 */
@Component
public class UserValidator implements Validator {

    private UserService userService;

    public UserValidator(UserService userService) {
        this.userService = userService;
    }

    public UserValidator() {
    }

    @Override
    public boolean supports(Class clazz) {
        return UserDto.class.isAssignableFrom(clazz);
    }

    @Override
    public void validate(Object target, Errors errors) {

        ValidationUtils.rejectIfEmpty(errors, "name", "required.name", " necessrio informar um nome");
        ValidationUtils.rejectIfEmpty(errors, "username", "required.username", "Informar o login");
        ValidationUtils.rejectIfEmpty(errors, "role", "required.role", "Informar o tipo de usurio");

        UserDto u = (UserDto) target;

        if (u.getPassword() != null && !u.getPassword().equals(u.getConfirmPass())) {
            errors.rejectValue("confirmPass", "invalid.confirmPass", "As senhas no conferem");
        }

        if (!isBlank(u.getPassword()) && u.getPassword().length() < 5) {
            errors.rejectValue("password", "invalid.password", "Informe uma senha de no mnimo 5 dgitos");
        }

        //verifica se ja existe um usuario com o mesmo username
        User uTest = userService.get(u.getUsername());
        if (uTest != null && !uTest.getId().equals(u.getId())) {
            if (uTest.isDeleted()) {
                errors.rejectValue("username", "invalid.username",
                        "Existe usurio deletado com esse login, se desejar reativar entre na lista de usurios deletados.");
            } else {
                errors.rejectValue("username", "invalid.username",
                        "J existe um usurio cadastrado com esse login");
            }
        }
    }
}