Access Keys:
Skip to content (Access Key - 0)
 
Hibernate Validator

Olá Amigos do Sou Java, Hoje vou demonstrar como usar o Hibernate Validator. (org.hibernate.validator.*)

O Problema:


Caso de uso - Manter Faixa de Peso.
1.Manter Faixa de Peso
O objetivo deste caso de uso é manter as faixas de pesos que os caminhões podem carregar.

1.1.Fluxo de Eventos
1.1.1.Basic Path - FB - Acessar tela de Faixa de Peso

1.Este fluxo inicia-se quando o usuário entra na tela 'Manter Faixa de Peso', através do menu de cadastro.
2 - O usuário digita as informações da Faixa de Peso (R1).
3 - O usuário salvar as informações (R2).
4 - Fim do fluxo básico.

1.2.Regras
1.2.1.Invariant - R1 - Digitar campos

1 - Digitar a faixa inicial do peso em toneladas (Campo obrigatório)
2 - Digitar a faixa final do peso em toneladas (Campo obrigatório)


1.2.2.Invariant - R2 - Gravar as informações

1 - Fazer as seguintes validações antes de salvar:
2 - O peso inicial não pode ser igual ou superior ao peso final.
(...) 

A Solução:

Para resolver este problema, usaremos uma simples anotacao na entidade a ser persistida, veja:

@SouJavaValDominioCondicional(valorPropA="pesoFaixaInicial", valorPropB="pesoFaixaFinal",
  	operador=SouJavaValDominioCondicional.Operador.MENOR, message="{erro.validacao.faixaPeso.intervalo}")
 
Long pesoFaixaInicial;
Long pesoFaixaFinal;

Quando a entidade for criada a anotacao será executada em tempo de runtime (@Retention(RUNTIME)) a validação será efetuada da seguinte maneira:

se --> pesoFaixaInicial < pesoFaixaFinal ? persist : erro.validacao.faixaPeso.intervalo;

Para os seguintes tipos: Integer, Double, Long, Float, BigDecimal, Date, String, Character;

Codigo fonte:

Como o objetivo do Artigo é demonstrar as funcionalidades do Hibernate Validator, no Source não está disponivel nada referente a camada de View. Ao terminar o download do artigo descompacte o arquivo e importe o projeto para dentro do eclipse. Para simplificar todo o processo o projeto já vem com as libs: commons-beanutils.jar, commons-lang.jar, commons-logging.jar, hibernate-validator.jar, junit-3.8.1.jar, log4j.jar;

Codigo Fonte

JUnit - TestCase:

Classe sem TestCase não prova nada e não pode entrar em Produção, por isso execute os testes: 

SouJavaValDominioCondicionalValidatorTest.java

Este TestCase testa o validator em todos os tipos de validacao aceitos:  MAIOR, MAIOR_OU_IGUAL, IGUAL, MENOR, MENOR_OU_IGUAL,DIFERENTE;

SouJavaValDominioCondicionalWrapperTest.java

Este TestCase testa o validator para aceitar todos os tipos de comparacoes entre inteiros e chars. Integer, Double, Long, Float, BigDecimal, Date, String, Character;

Agradecimentos:

George Gastaldi - Chief Software Architect at Elosoft S.A.
Todos que leram até aqui, e espero tenha sido útil.

Autor:

Thomas Rafael Modeneis - Sun Certified Programmer for Java Platform, SE 5.0 - 310-055.

Equipe Sou Java, Fortalecendo a comunidade de usuários de Java do Brasil.

Adaptavist Theme Builder (3.1.4) Powered by Atlassian Confluence, the Enterprise Wiki. (Version: 2.5.4 Build:#809 Jun 12, 2007)
Free theme builder license