Estou com dificuldade de achar uma maneira melhor de fazer o codigo a baixo, se puderem ajudar.
A situação atual é a seguinte, este algoritmo identifica qual atributo do meu bean teve a constraint violada, e qual foi
a violacao que teve.
Indentificado isso, o meu bean possui para cada atributo um outro atributo de erro, onde ficara o codigo de erro.
Não acho que seja a melhor opção, mas da certo.
Mas um dos problemas que tenho nisso, é que tenho que fazer o mesmo processo do passo 1 ao passo 3, para diferentes beans,
e para cada atributo dele.
Neste caso só tive que repetir este processo para o atributo usuario e comentario do bean Acao, mas para outros Beans
a quantidade de atributos é enorme o que faz com que seja inviavel essa abordagem, pois terei que reescrever muito codigo
repetitivo.
Alguma sugestao para solucionar este problema?
public void validar(Set<ConstraintViolation<T>> cons){
Acao acao = null;
Set<ConstraintViolation<Acao>> constraints = cons;
for(ConstraintViolation<Acao> con : constraints){
acao = (Acao) con.getLeafBean();
if("usuario".equals(con.getPropertyPath()) == true){ // passo 1
if(con.getMessage().equals(BeanErro.NULO)){ // passo 2
acao.setUsuario_erro(1);
}
else if(con.getMessage().equals(BeanErro.TAMANHO)){ // passo 3
acao.setUsuario_erro(2);
}
}
else if("comentario".equals(con.getPropertyPath()) == true){
if(con.getMessage().equals(BeanErro.NULO)){
acao.setComentario_erro(1);
}
else if(con.getMessage().equals(BeanErro.TAMANHO)){
acao.setComentario_erro(2);
}
}
}
}
Codigo do bean Acao:
public class Acao {
@NotNull
@Size(min=1)
private String usuario;
@NotNull
@Size(min=1)
private String comentario;
private int usuario_erro;
private int comentario_erro;
// Getts and setts
}
Atenciosamente