07.1 Aplicação Web com VRaptor 4 – Mais um pouco do Repositório

Olá meus amiguinhos, vamos viajar mais um pouco nessa nave chamada VRaptor? Sim? Então segure-se, que ela é bem potente.

Mas antes de começarmos, vamos aos recadinhos, que são sempre os mesmos, rs. Já estamos trabalhando no nosso projeto, caso tenha caído neste tutorial acidentalmente, pode ver a lista dos episódios anteriores na introdução que fiz para estes posts. E sempre lembre, você pode, e deve acompanhar os códigos pelo meu github, segue o link ai em baixo:

https://github.com/pedro-hos/aprendendo-vraptor

Hoje vamos dar mais uma turbinada no nosso Repository (DAO). Vamos criar mais alguns métodos que serão necessários para o funcionamento das paradas. Então aperte e cinto e vamos nessa meu Brasil.

 Então vamos meu amigo, a primeira coisa a ser feita é criar uma classe chamada: Contatos dentro do package br.com.pedroHos.model.repositories.contato. A classe deve ser anotada com @Stateless e também deve fazer um extends com a classe Repository passando Contato como tipo entre os sinais <>. Ela vai ficar assim:

@Stateless
public class Contatos extends Repository<Contato> { ... }

O primeiro método que vamos criar é o todosAtivos, ele deve retornar uma lista com todos os contatos ativos. O código completo você pode ver a seguir:

public List<Contato> todosAtivos() {
        String jpql = "select c from Contato c where c.ativo = :ativo";
        TypedQuery<Contato> query = em.createQuery(jpql, Contato.class);
        query.setParameter("ativo", true);
        try {
            return query.getResultList();
        } catch (NoResultException e) {
            return null;
        }
    }

O código é bem simples, você pode ver, ele faz um select normal, colocando a cláusula where para filtrar os ativos, simples né. O TypedQuery é criado para não precisar fazer o cast do objeto, é uma facilidade implementada na versão mais atual do javax persistence. Na query temos algo assim -> “:ativo”, isso aí será substituído na linha que faz a passagem de parâmetro:

query.setParameter("ativo", true);

Bem simples certo? Vamos seguir então

O próximo método que vamos fazer é bem simples também, vamos fazer um esquema para ativar ou desativar um contato, assim, não precisamos deletar um contato da da base de dados. mesmo porque isso nunca é uma boa prática. 😉

Só copiar e colar o código que está abaixo.

protected void desativarOuAtivar(Long id, boolean ativar) {
    String jpql = "update Contato c set c.ativo = :ativo where c.id = :id";
    Query query = em.createQuery(jpql);
    query.setParameter("ativo", ativar);
    query.setParameter("id", id);
    query.executeUpdate();
}

Agora, para deixar as coisas mais limpas, vamos criar dois métodos, um para ativar o contato, outro para desativar o contato. Eles apenas chamam o método anterior, passando os parâmetros corretos.

Só copiar e colar o código que está abaixo.

public void desativarComId(Long id) {
    desativarOuAtivar(id, false);
}

public void ativarComId(Long id) {
    desativarOuAtivar(id, true);
}

Até a proxíma =D

Anúncios

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s