Olá desenvolvedores, neste tutorial mostrarei a vocês a solução de alguns bugs que surgiram em nossa aplicação após as alterações que fizemos o tutorial anterior. É comum que após a implementação da regra de negócio de qualquer aplicação, voltemos o nosso olhar para o Front-End para refinar o sistema e promover uma melhor experiência para o usuário.

Assim também é comum que neste processo alguns bugs sejam identificados ou surjam como consequência das modificações que fizemos, principalmente se estas resultarem em pequenas alterações no Back-End.

É neste cenário que se insere o bug que encontramos na tela de cadastro de e-mail no dialog. Quero mostra-lo neste tutorial além da solução do bug, que agora não mais está exibindo os e-mails cadastrados na tabela, mas principalmente a mentalidade e o comportamento que você deve adotar quando se deparar com o bug em uma funcionalidade que em um outro momento funcionava corretamente.

IDENTIFICANDO O ERRO

No tutorial “EXCEÇÃO: APRENDENDO A LER” aprendemos como ler o log de erros na IDE Eclipse. Ressaltamos que     a leitura e a interpretação de uma exceção/erro sempre começam de baixo para cima, onde o ponto baixo refere-se ao nosso código e o final ao motivo do erro.

Assim, o primeiro passo será analisar no console onde está o problema e que tipo de problema foi encontrado.

De acordo com o console o que aconteceu foi um erro de restrição, isto é, para cadastrarmos um e-mail deveríamos ter uma pessoa adicionada. Observe na imagem abaixo que uma coluna com o valor null é identificada, o que não deveria ocorrer, visto que existe uma pessoa com o id igual a 73 cadastrada.

Se formos até a Entidade EmailUser, veremos que os atributos que criam as colunas no banco de dados compreendem o id, o e-mail e a chave estrangeira. Esta coluna que o erro acusa não foi gerada nesta classe, mas o erro indica que em nossa base de dados existem 4 colunas e não 3 como definimos.

Verificando banco de dados perceba que existe a coluna “usuariopessoaemail_id” que é a mesma acusada no console e que não deveria estar ali. Então deveremos excluí-la.

Depois de excluir a coluna limpe o cache do projeto e o inicie novamente. Ao tentarmos cadastrar um novo e-mail a coluna que acabamos de deletar não poderá ser criada novamente. Se o dado cadastrado for processado com sucesso, o dialog será exibido como mostra a imagem abaixo.

Aproveitando o ensejo sugiro que você teste o seu sistema, realize o cadastro verificando todos os campos e consequentemente o banco de dados. Tente forçar erros, se você não o fizer, tenha certeza de que o usuário fará isso por você.

CORRIGINDO BUGS NO GRÁFICO

Observe que quando um novo usuário é adicionado o gráfico não é atualizado, sendo então necessário recarregar a página. Para descobrir porque o gráfico não está sendo atualizado deveremos analisar alguns pontos específicos no ManagedBean.

Perceba que a assinatura do método init() é precedida da anotação @PostConstruct, significa que o gráfico só é atualizado quando a página é aberta, não sendo mais executado. A solução é invocar o init() depois do método salvar(), e dessa forma atualizar o gráfico.

Seguindo o fluxo de processamento no método veja que ele salva o novo objeto, o adiciona na lista e exibe uma mensagem para o usuário. O que faremos é chamar o método init() antes de exibirmos a  mensagem.

Faça o mesmo no método remover(), depois que o registro for removido e um novo objeto for instanciado, invoque o método de atualização do gráfico o init().

Na tela primefaces.xhtml o gráfico foi inserido logo após o formulário, o problema é que quando clicamos no botão para remover o usuário estamos renderizando o formulário, mas não o gráfico. Então atribuímos um id ao gráfico para renderizá-lo juntamente com o formulário, assim atualizá-lo de forma automática.

<f:ajax execute= “botaoremover” render=”@form :graficosalario” />

EM POUCAS PALAVRAS

Neste tutorial corrigimos alguns bugs em nosso sistema deixando ainda mais funcional, falamos ainda da postura que você deve adotar mediante um erro encontrado em seu sistema. Execute o sistema em debug, percorra o console, leia os erros, entenda a lógica da sua implementação, isto é, como as coisas funcionam e então corrija os erros.