Subversion Repositories Integrator Subversion

Rev

Blame | Last modification | View Log | Download | RSS feed

package br.com.ec.repository.jpa;

import java.util.List;

import javax.persistence.Query;
import javax.persistence.TypedQuery;

import org.springframework.stereotype.Repository;

import br.com.ec.core.consulta.ParametrosConsulta;
import br.com.ec.core.util.DataUtils;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.dto.VigenciaDTO;
import br.com.ec.domain.model.Ponto;
import br.com.ec.repository.PontoRepository;
import br.com.ec.repository.SistemaAbstractRepository;

@Repository
public class PontoRepositoryJpaImpl extends SistemaAbstractRepository<Ponto> implements PontoRepository {

        @Override
        protected String getColunaOrdenadora() {
                return "dataPonto";
        }
       
        @Override
        public List<Ponto> consultarPontosEletronicos(VigenciaDTO vigenciaDTO, Long sequencialPessoa) {
                StringBuilder sql = new StringBuilder();
                sql.append("SELECT p FROM Ponto p ");
                sql.append("WHERE (p.dataPonto >= :dataInicial AND p.dataPonto <= :dataFinal) ");
                sql.append("AND (p.pessoa.sequencial = :sequencialPessoa) ");
                sql.append("ORDER BY p.dataPonto ");
                try {
                        TypedQuery<Ponto> query = getEntityManager().createQuery(sql.toString(), Ponto.class)
                                .setParameter("dataInicial", DataUtils.getDataComHorarioMinimo(vigenciaDTO.getDataInicio()))
                                .setParameter("dataFinal", DataUtils.getDataComHorarioMaximo(vigenciaDTO.getDataFim()))
                                .setParameter("sequencialPessoa", sequencialPessoa);
                        return query.getResultList();
                } catch(Exception ex) {
                        ex.printStackTrace();
                        return null;
                }
        }
       
        @Override
        protected void setarStringParametrosConsulta(StringBuilder sql, ParametrosConsulta<Ponto> parametros) {
                if (VerificadorUtil.naoEstaNuloOuVazio(parametros.getEntidade())) {
                        if (VerificadorUtil.naoEstaNuloOuVazio(parametros.getEntidade().getPessoa())) {
                                sql.append("AND e.pessoa = :pessoa ");
                        }
                        if (VerificadorUtil.naoEstaNuloOuVazio(parametros.getEntidade().getLoja())) {
                                sql.append("AND e.loja.sequencial = :sequencialLoja ");
                        }
                        if (VerificadorUtil.naoEstaNuloOuVazio(parametros.getEntidade().getDataPonto())) {
                                sql.append("AND e.dataPonto = :dataPonto ");
                        }
                }
        }
       
        @Override
        protected void setarQueryParametrosConsulta(Query query, ParametrosConsulta<Ponto> parametros) {
                if (VerificadorUtil.naoEstaNuloOuVazio(parametros.getEntidade())) {
                        if (VerificadorUtil.naoEstaNuloOuVazio(parametros.getEntidade().getPessoa())) {
                                query.setParameter("pessoa", parametros.getEntidade().getPessoa());
                        }
                        if (VerificadorUtil.naoEstaNuloOuVazio(parametros.getEntidade().getLoja())) {
                                query.setParameter("sequencialLoja", parametros.getEntidade().getSequencialDaLoja());
                        }
                        if (VerificadorUtil.naoEstaNuloOuVazio(parametros.getEntidade().getDataPonto())) {
                                query.setParameter("dataPonto", parametros.getEntidade().getDataPonto());                       }
                }
        }
       
        @Override
        protected void setarStringParametrosConsultar(StringBuilder sql, Ponto ponto) {
                if (VerificadorUtil.naoEstaNuloOuVazio(ponto)) {
                        if (VerificadorUtil.naoEstaNuloOuVazio(ponto.getPessoa())) {
                                sql.append("AND e.pessoa = :pessoa ");
                        }
                        if (VerificadorUtil.naoEstaNuloOuVazio(ponto.getLoja())) {
                                sql.append("AND e.loja.sequencial = :sequencialLoja ");
                        }
                        if (VerificadorUtil.naoEstaNuloOuVazio(ponto.getDataPonto())) {
                                sql.append("AND e.dataPonto = :dataPonto ");
                        }
                }
        }
       
        @Override
        protected void setarQueryParametrosConsultar(Query query, Ponto ponto) {
                if (VerificadorUtil.naoEstaNuloOuVazio(ponto)) {
                        if (VerificadorUtil.naoEstaNuloOuVazio(ponto.getPessoa())) {
                                query.setParameter("pessoa", ponto.getPessoa());
                        }
                        if (VerificadorUtil.naoEstaNuloOuVazio(ponto.getLoja())) {
                                query.setParameter("sequencialLoja", ponto.getSequencialDaLoja());
                        }
                        if (VerificadorUtil.naoEstaNuloOuVazio(ponto.getDataPonto())) {
                                query.setParameter("dataPonto", ponto.getDataPonto());
                        }
                }
        }
       
}