Introdução
O JARCH possuí diversos eventos, tornando possível o código com baixo acoplamento e alta coesão. Nesse primeiro post veremos alguns tipos de eventos.
@JArchEventLoginAfter
Essa anotação é usada para interceptar o evento de login.
Segue um exemplo abaixo:
1 2 3 4 5 6 7 8 | public class LoginInativoObserver { private void bloqueiaAcessoUsuarioInativo(@Observes @JArchEventLoginAfter UsuarioEntity usuario) { if (usuario.isInativo()) { throw new ValidationException(BundleUtils.messageBundle("message.usuarioInativo")); } } } |
Nesse exemplo acima caso o usuário esteja inativo ao efetuar o login na aplicação será lançado uma exceção impedindo o acesso a aplicação.
Conforme print abaixo:
@JArchEventLoadCrud
Esse evento é disparado ao selecionar um registro na tela de lista (Clone, Alteração, Consulta e Exclusão)
Segue um exemplo abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 | package br.com.wesa.gcpr.lancamento; import com.arch.annotation.ArchEventLoadCrud; import com.arch.jpa.util.InitializeUtils; import javax.enterprise.event.Observes; public class LancamentoLoadCrudObserver { private void loadCrud(@Observes @JArchEventLoadCrud LancamentoEntity lancamento) { InitializeUtils.initializeCollectionLazy(lancamento); } } |
@JArchEventLoadInsert
Esse evento é disparado ao selecionar a ação de inclusão na tela de lista.
Segue um exemplo abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | package br.com.wesa.gcpr.lancamento; import br.com.wesa.gcpr.parametro.ParametroFacade; import com.arch.annotation.ArchEventLoadInsert; import javax.enterprise.event.Observes; public class LancamentoLoadInsertObserver { private void loadInsert(@Observes @JArchEventLoadInsert LancamentoEntity lancamento, ParametroFacade parametroFacade) { lancamento.setBanco(parametroFacade.get().getBancoNaoIdentificado()); lancamento.setCentroCusto(parametroFacade.get().getCentroCustoNaoIdentificado()); lancamento.setContaCaixa(parametroFacade.get().getContaCaixaNaoIdentificado()); lancamento.setPessoa(parametroFacade.get().getPessoaNaoIdentificado()); } } |
@JArchEventLoadClone
Esse evento é disparado ao selecionar a opção de clone na tela lista.
Segue um exemplo abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 | package br.com.wesa.gcpr.lancamento; import com.arch.annotation.ArchEventLoadClone; import javax.enterprise.event.Observes; public class LancamentoRemovePagamentoCloneObserver { private void removePagamentoClone(@Observes @JArchEventLoadClone LancamentoEntity lancamento) { lancamento.getListaLancamentoPagamento().clear(); } } |
@JArchEventLoadConsult
Esse evento é disparado ao selecionar a opção de consulta na tela lista.
Segue um exemplo abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | package br.com.wesa.gcpr.lancamento; import com.arch.annotation.ArchEventLoadConsult; import javax.enterprise.event.Observes; import java.math.BigDecimal; public class LancamentoConsultaContaPerfilMasterObserver { private void validaPerfilMaster(@Observes @JArchEventLoadConsult LancamentoEntity lancamento) { if (lancamento.getValor().doubleValue() > 1_000_000) { lancamento.setValor(BigDecimal.ZERO); } } } |
@JArchEventLoadDelete
Esse evento é disparado ao selecionar a opção de exclusão na tela lista.
Segue um exemplo abaixo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | package br.com.wesa.gcpr.lancamento; import com.arch.annotation.ArchEventLoadDelete; import com.arch.bundle.BundleUtils; import com.arch.exception.ValidationException; import javax.enterprise.event.Observes; public class LancamentoBloqueiaExclusaoBaixadoObserver { private void bloqueiaAlteracaoBaixado(@Observes @JArchEventLoadDelete LancamentoEntity lancamento) { if (lancamento.isLancamentoPago()) { throw new ValidationException(BundleUtils.messageBundle("message.lancamentoBaixadoNaoPodeSerExcluido")); } } } |
Conclusão
Nesse post eu mostrei alguns dos eventos disponíveis no JARCH. Existem muitos outros eventos disponíveis que serão mostrados nos próximos posts.
Até mais,
Nenhum comentário:
Postar um comentário