Esse artigo faz parte da revista Java Magazine edição 40. Clique aqui para ler todos os artigos desta edição

AN style="FONT-SIZE: 10pt; BACKGROUND: white; COLOR: red; FONT-FAMILY: Verdana; moz-background-clip: -moz-initial; moz-background-origin: -moz-initial; moz-background-inline-policy: -moz-initial">

Atenção: por essa edição ser muito antiga não há arquivo PDF para download.Os artigos dessa edição estão disponíveis somente através do formato HTML.

Validação de Dados com JGoodies

Usando a API Validation em aplicações desktop com Swing

 

Conheça várias técnicas de validação de dados para aplicações Swing utilizando a API Validation do JGoddies.

 

Apresentamos neste artigo a API Validation do JGoodies que oferece várias possibilidades para tratar a validação de dados em aplicações desktop utilizando o Swing. Além de ser fácil de usar, essa solução é bem flexível e pode ser aplicada com diferentes estilos ao gosto da sua equipe.

 

Entendendo a validação de dados

Uma forma de avaliar uma determinada solução de validação é observar as respostas que ela oferece para perguntas como estas:

1. Como indicar ao usuário quais campos serão validados?

2. Quando a validação deve ser feita?

3. Quais classes farão a validação dos dados?

4. Como informar ao usuário se os dados são válidos?

5. Como fornecer informações para ajudar o usuário na entrada de dados?

 

Essas perguntas podem ser respondidas de inúmeras formas, dependendo da tecnologia de validação utilizada e da forma em que ela é aplicada. A escolha de uma solução em particular depende do gosto de cada um. Para esse artigo, usaremos a API JGoodie Validation, explorando vários estilos de validação, ou seja, diferentes formas de uso da API. Os estilos descritos podem ser usados como um pequeno "catálogo" de soluções de validação para a sua equipe de desenvolvimento.

É importante lembrar que a escolha não depende somente do gosto, mas também de questões como a complexidade do algoritmo de validação, o costume dos usuários e outros fatores. Além disso, é importante escolher um estilo de validação e mantê-lo de forma consistente em todas as telas.

 

Modelo de validação do JGoodies

A Figura 1 apresenta as principais classes e interfaces da API JGoodies Validation (todas no pacote com.jgoodies.validation), e como elas se relacionam. Um objeto ValidationResultModel guarda o resultado de urna validação (Validation Result) e emite eventos quando esse resultado muda. Um objeto Validator cria um objeto Validation Result, adicionando mensagens (ValidationMessage) que descrevem se os dados são válidos ou não. Essas mensagens contém um objeto Severity, que indica se o problema é um erro (error) ou apenas um alerta (warning).Com esses conceitos básicos em mente, já podemos começar o nosso exemplo.

Figura 1. Modelagem dos conceitos de validação do JGoddies.

 

Exemplo com a API Validation

Nossa aplicação de exemplo demonstra diferentes formas de utilizar a API. O código completo está disponível para download no site da Java Magazine.

O exemplo usa várias bibliotecas do JGoodies. Para obtê-las visite o site jgoodies.com, navegue por downloads>libraries, e baixe os pacotes zip das APIs Looks, Forms, Binding e Validation. Os pacotes contêm exemplos, documentação, código-fonte e os JARs que devem ser incluídos no classpath da aplicação de exemplo.

A tela da aplicação pode ser vista na Figura 2 e está dividida em pequenos formulários de entrada de dados, demonstrando quatro estilos de validação. Em cada formulário, podemos fornecer o nome e o CPF de uma pessoa, os quais são

validados (em todos os casos) de acordo com as seguintes regras:

Nome: é um campo obrigatório e deve conter apenas letras. Se o usuário fornecer números nesse campo, um alerta (warning) deve ser apresentado.

CPF: é um campo obrigatório e deve conter exatamente 11 dígitos. Qualquer valor diferente de 11 dígitos é considerado um erro. Por motivo de simplicidade, validamos apenas o número de dígitos; os dígitos verificadores não são validados.

Antes de estudar como implementamos cada estilo de validação separadamente,

vamos analisar as classes que são utilizadas por todos os estilos. A primeira delas pode ser vista na Listagem 1 e representa uma pessoa, com nome e CPF. Em uma

aplicação real, os objetos dessa classe seriam normalmente instanciados no back-end do sistema (banco de dados, EJBs etc.) e depois manipulados pela GUI.

Para o nosso caso, precisamos que objetos Pessoa emitam eventos quando suas propriedades forem alteradas (devem ser objetos observáveis2). Para isso fazemos a classe herdar da classe Model e chamamos o método firePropertyChange() dentro dos métodos setNome() e setCpf(). A Listagem 2 mostra a classe ValidadorPessoa, que implementa a interface PropertyChangeListener e "escuta" as mudanças que ocorrem no objeto Pessoa recebido em seu construtor.

Observe que a implementação do método propertyChange() chama o método

Valida(), que realiza a validação no objeto.

 

A validação de um objeto poderia ser feita por qualquer classe, até mesmo o painel onde os dados são apresentados ou no próprio objeto em si. Mas conforme fizemos nesse exemplo; e recomendado utilizar uma classe específica para a validação, mantendo as regras de validação separadas

...

Quer ler esse conteúdo completo? Tenha acesso completo