segunda-feira, 10 de setembro de 2018

Eventos - Parte 1/5

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

Versão 23.3.0-Final

      Introdução Nesse post vou mostrar as principais novidades da versão 23.3.0, algumas correções e pequenas alterações. Alterações Além d...