Subversion Repositories Integrator Subversion

Rev

Rev 259 | Rev 514 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.repository.jpa;

import java.util.List;

import javax.persistence.TypedQuery;

import org.springframework.stereotype.Repository;

import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.dto.LojaDTO;
import br.com.ec.domain.model.Loja;
import br.com.ec.repository.LojaRepository;
import br.com.ec.repository.SistemaAbstractRepository;

@Repository
public class LojaRepositoryJpaImpl extends SistemaAbstractRepository<Loja> implements LojaRepository {

        @Override
        protected String getColunaOrdenadora() {
                return "ordenador, descricao";
        }
       
        @Override
        public List<LojaDTO> consultarLojas(Boolean ativo) {
                StringBuilder jpql = new StringBuilder();
                jpql.append("SELECT new br.com.ec.domain.dto.LojaDTO(l.sequencial, l.descricao) FROM Loja l ");
                jpql.append("WHERE 1=1 ");
                if (VerificadorUtil.naoEstaNulo(ativo)) {
                        jpql.append("AND l.ativo = :indicadorAtivo ");
                }
                jpql.append("ORDER BY l.ordenador ");
                try {
                        TypedQuery<LojaDTO> query = getEntityManager().createQuery(jpql.toString(), LojaDTO.class);
                        if (VerificadorUtil.naoEstaNulo(ativo)) {
                                query.setParameter("indicadorAtivo", ativo);
                        }
                        return query.getResultList();
                } catch (Exception ex) {
                        ex.printStackTrace();
                }
                return null;
        }
       
        /*
        @Override
        protected void setarStringParametrosConsultar(StringBuilder sql, Loja loja) {
                if (VerificadorUtil.naoEstaNuloOuVazio(loja)) {
                        if (VerificadorUtil.naoEstaNuloOuVazio(loja.getAtivo())) {
                                sql.append("AND e.ativo = :ativo ");
                        }
                }
        }
       
        @Override
        protected void setarQueryParametrosConsultar(Query query, Loja loja) {
                if (VerificadorUtil.naoEstaNuloOuVazio(loja)) {
                        if (VerificadorUtil.naoEstaNulo(loja.getAtivo())) {
                                query.setParameter("ativo", loja.getAtivo());
                        }
                }
        }
       
        @Override
        protected void setarStringParametrosConsulta(StringBuilder sql, ParametrosConsulta<Loja> parametros) {
                if (VerificadorUtil.naoEstaNuloOuVazio(parametros.getEntidade())) {
                        if (VerificadorUtil.naoEstaNuloOuVazio(parametros.getEntidade().getAtivo())) {
                                sql.append("AND e.ativo = :ativo ");
                        }
                }
        }
       
        @Override
        protected void setarQueryParametrosConsulta(Query query, ParametrosConsulta<Loja> parametros) {
                if (VerificadorUtil.naoEstaNuloOuVazio(parametros.getEntidade())) {
                        if (VerificadorUtil.naoEstaNulo(parametros.getEntidade().getAtivo())) {
                                query.setParameter("ativo", parametros.getEntidade().getAtivo());
                        }
                }
        }
       
        @Override
        public Loja consultarPorId(Loja loja) {
                return getEntityManager().find(Loja.class, loja.getSequencial());
        }
       
        @Override
        public List<Loja> consultarLojas(Boolean ativo) {
                StringBuilder jpql = new StringBuilder();
                try {
                        jpql.append("SELECT DISTINCT l FROM Loja l ");
                        jpql.append("WHERE 1=1 ");
                        if (VerificadorUtil.naoEstaNulo(ativo)) {
                                jpql.append("AND l.ativo = :ativo ");
                        }
                        jpql.append("ORDER BY l.ordenador, l.descricao");
                        TypedQuery<Loja> query = getEntityManager().createQuery(jpql.toString(), Loja.class);
                        if (VerificadorUtil.naoEstaNulo(ativo)) {
                                query.setParameter("ativo", ativo);
                        }
                        return query.getResultList();
                } catch (NoResultException e) {
                        return null;
                }
        }
       
        @Override
        public List<Loja> consultarLojasComDetalhe() {
                StringBuilder jpql = new StringBuilder();
                try {
                        jpql.append("SELECT DISTINCT l FROM Loja l ");
                        jpql.append("LEFT JOIN FETCH l.pessoaJuridica pj ");
                        jpql.append("LEFT JOIN FETCH pj.enderecos e ");
                        jpql.append("LEFT JOIN FETCH pj.dadosBancarios b ");
                        jpql.append("ORDER BY l.ordenador, l.descricao");
                        return getEntityManager().createQuery(jpql.toString(), Loja.class).getResultList();
                } catch (NoResultException e) {
                        return null;
                }
        }
       
        @Override
        public List<LojaDTO> consultarLojasDTO(Boolean ativo) {
                StringBuilder jpql = new StringBuilder();
                try {
                        jpql.append("SELECT new br.com.ec.domain.dto.LojaDTO(l.sequencial, l.descricao) FROM Loja l ");
                        jpql.append("WHERE 1=1 ");
                        if (VerificadorUtil.naoEstaNulo(ativo)) {
                                jpql.append("AND l.ativo = :ativo ");
                        }
                        jpql.append("ORDER BY l.ordenador, l.descricao ");
                        TypedQuery<LojaDTO> query = getEntityManager().createQuery(jpql.toString(), LojaDTO.class);
                        if (VerificadorUtil.naoEstaNulo(ativo)) {
                                query.setParameter("ativo", ativo);
                        }
                        return query.getResultList();
                } catch (NoResultException e) {
                        return null;
                }
        }
        */

}