Método bloquear dao e beam

3 respostas
denirroberto

Boa tarde galera do fórum guj, bom vamos direto ao assunto.
Preciso de um método que ao clicar num botão ele dispara um valor para o banco que bloqueia o usuário, tipo, tenho um campo do tipo int Ativado no banco onde 0 é bloquear e 1 ativar então preciso de um método que grave 0 quando clicar em bloquear ou 1 quando clicar em desbloquear.

Estava pensando no seguinte, mas não sei se está certo quando ao Dao.

public boolean desbloquear(Usuario usuario) {
        boolean sucesso = false;

        try {
            usuario = selecionar(usuario.getIdUsuario());
            em.merge(usuario.getAtivado());
        } catch (Exception e) {
            e.printStackTrace();
        }
        return sucesso;
    }

como procedo no Dao se estiver errado e no Beam.

3 Respostas

taaqui

Depois da linha 06 voce teria que alterar o valor da variavel dando um set e depois iria persisti o usuario

public boolean desbloquear(Usuario usuario) {
        
        try {
            usuario = selecionar(usuario.getIdUsuario());
           Usuario.setAtivado(1); 
em.merge(usuario);
        } catch (Exception e) {
            Return false;
        }
        return true;
    }

Acho que seria isso.

denirroberto

Blz Galera consegui resolver, na verdade bem simples;

meu dao ficou assim:

public boolean bloqDesbloq(Usuario usuario) {
        boolean sucesso = false;

        try {
            usuario = selecionar(usuario.getIdUsuario());
            em.merge(usuario.getAtivado());
            sucesso = true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return sucesso;
    }

no Beam eu inicializei duas variáveis uma recebendo 0 e ou recebendo 1, assim:

private int bloquear = 0;
    private int desbloquear = 1;

depois foi só montar o método dentro do Beam mesmo um para bloquear e outro para desbloquear assim:

public void bloquear(){
        FacesContext context = FacesContext.getCurrentInstance();
        usuario.setAtivado(bloquear);
        boolean resultado = dao.bloqDesbloq(usuario);

        if (resultado) {
            usuario = new Usuario();
            context.addMessage(null, new FacesMessage("Usuário bloqueado com sucesso!"));
        } else {
            context.addMessage(null, new FacesMessage("Falha ao bloquear usuário!"));
        }
    }

    public void desbloquear(){
        FacesContext context = FacesContext.getCurrentInstance();
        usuario.setAtivado(desbloquear);
        boolean resultado = dao.bloqDesbloq(usuario);

        if (resultado) {
            usuario = new Usuario();
            context.addMessage(null, new FacesMessage("Usuário desbloqueado com sucesso!"));
        } else {
            context.addMessage(null, new FacesMessage("Falha ao desbloquear usuário!"));
        }
    }

Caso alguém tenha uma forma de melhorar o código será bem vindo.

Agradecido.

pcdsjr

Você pode deixar seu código com uma variável a menos:

Ao invés de usar:

int valor1 = 1;
int valor 2 = 2;

Pode usar

boolean status = true;

//Bollean só tem dois estados true e false
status = false;
//metodo executa ação e muda o valor de boolean

if(status == true){
//faca isso
}

Esqueçe isso já vi que esta utilizando!

Criado 22 de maio de 2011
Ultima resposta 22 de out. de 2011
Respostas 3
Participantes 3