Subversion Repositories Integrator Subversion

Rev

Rev 715 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.repository.jpa;

import java.util.Date;
import java.util.List;

import org.springframework.stereotype.Repository;

import br.com.ec.domain.dto.VigenciaDTO;
import br.com.ec.domain.model.Vigencia;
import br.com.ec.repository.SistemaAbstractRepository;
import br.com.ec.repository.VigenciaRepository;

@Repository
public class VigenciaRepositoryJpaImpl extends SistemaAbstractRepository<Vigencia> implements VigenciaRepository {

        @Override
        protected String getColunaOrdenadora() {
                return "sequencial DESC";
        }
       
        @Override
        protected boolean adicionarDistinct() {
                return false;
        }
       
        @Override
        public VigenciaDTO consultarVigencia(Long sequencial) {
                StringBuilder jpql = new StringBuilder();
                jpql.append("SELECT ");
                jpql.append(VigenciaDTO.CONSULTA_DTO_CONSOLIDACAO);
                jpql.append("FROM Vigencia e ");
                jpql.append("WHERE e.sequencial = :sequencialVigencia ");
                try {
                        return getEntityManager().createQuery(jpql.toString(), VigenciaDTO.class).setParameter("sequencialVigencia", sequencial).getSingleResult();
                } catch(Exception ex) {
                        ex.printStackTrace();
                        return null;
                }
        }
       
        @Override
        public List<VigenciaDTO> consultarVigencias() {
                StringBuilder jpql = new StringBuilder();
                jpql.append("SELECT ");
                jpql.append(VigenciaDTO.CONSULTA_DTO_COMPLETA);
                jpql.append("FROM Vigencia e ");
                jpql.append("ORDER BY e.dataInicio DESC");
                try {
                        return getEntityManager().createQuery(jpql.toString(), VigenciaDTO.class).getResultList();
                } catch(Exception ex) {
                        ex.printStackTrace();
                        return null;
                }
        }
       
        @Override
        public Vigencia consultarProximaVigencia(Long sequencialVigencia) {
                StringBuilder sql = new StringBuilder();
                sql.append("SELECT v FROM Vigencia v WHERE v.sequencial = :sequencialVigencia ");
                try {
                        return getEntityManager().createQuery(sql.toString(), Vigencia.class).setParameter("sequencialVigencia", sequencialVigencia + 1).getSingleResult();
                } catch(Exception ex) {
                        ex.printStackTrace();
                        return null;
                }
        }
       
        @Override
        public List<VigenciaDTO> consultarVigenciasParaConsolidacao() {
                StringBuilder jpql = new StringBuilder();
                jpql.append("SELECT ");
                jpql.append(VigenciaDTO.CONSULTA_DTO_CONSOLIDACAO);
                jpql.append("FROM Vigencia e ");
                jpql.append("ORDER BY e.dataInicio DESC");
                try {
                        return getEntityManager().createQuery(jpql.toString(), VigenciaDTO.class).getResultList();
                } catch(Exception ex) {
                        ex.printStackTrace();
                        return null;
                }
        }
       
        @Override
        public Vigencia consultarVigenciaDoPeriodo(Date periodo) {
                StringBuilder sql = new StringBuilder();
                sql.append("SELECT e FROM Vigencia e WHERE e.dataInicio <= :periodo AND e.dataFim >= :periodo ");
                try {
                        return getEntityManager().createQuery(sql.toString(), Vigencia.class).setParameter("periodo", periodo).getSingleResult();
                } catch(Exception ex) {
                        ex.printStackTrace();
                        return null;
                }
        }
       
        @Override
        public void alterarSituacao(String campoTipo, Long sequencialVigencia, String situacao) {
                StringBuilder sql = new StringBuilder();
                sql.append("UPDATE Vigencia vigencia SET vigencia.");
                sql.append(campoTipo);
                sql.append(" = :situacao ");
                sql.append("WHERE vigencia.sequencial = :sequencialVigencia ");
                try {
                        getEntityManager().createQuery(sql.toString())
                                .setParameter("sequencialVigencia", sequencialVigencia)
                                .setParameter("situacao", situacao)
                                .executeUpdate();
                        getEntityManager().flush();
                } catch(Exception ex) {
                        ex.printStackTrace();
                }
        }
       
        /*
        @Override
        public List<Vigencia> consultarVigenciasSemAvaliacoes() {
                StringBuilder sql = new StringBuilder();
                sql.append("SELECT e FROM Vigencia e WHERE (SELECT COUNT(*) FROM Avaliacao a WHERE a.vigencia.sequencial = e.sequencial) = 0 ");
                sql.append("ORDER BY e.dataInicio DESC");
                try {
                        return getEntityManager().createQuery(sql.toString(), Vigencia.class).getResultList();
                } catch(Exception ex) {
                        ex.printStackTrace();
                        return null;
                }
        }
       
        @Override
        public List<Vigencia> consultarUltimasVigencias() {
                StringBuilder sql = new StringBuilder();
                sql.append("SELECT e FROM Vigencia e ");
                sql.append("ORDER BY e.dataInicio DESC");
                try {
                        return getEntityManager().createQuery(sql.toString(), Vigencia.class).setMaxResults(5).getResultList();
                } catch(Exception ex) {
                        ex.printStackTrace();
                        return null;
                }
        }
       
        @Override
        public List<Vigencia> consultarVigenciasDoAno(String ano) {
                StringBuilder sql = new StringBuilder();
                sql.append("SELECT e FROM Vigencia e ");
                sql.append("WHERE :dataInicial <= e.dataInicio AND :dataFinal >= e.dataFim ");
                sql.append("ORDER BY e.dataInicio");
                try {
                        Date dataInicial = DataUtils.getPrimeiroDiaDoAno(new Integer(ano));
                        Date dataFinal = DataUtils.getUltimoDiaDoAno(new Integer(ano));
                        TypedQuery<Vigencia> query = (TypedQuery<Vigencia>) getEntityManager().createQuery(sql.toString(), Vigencia.class);
                        query.setParameter("dataInicial", dataInicial);
                        query.setParameter("dataFinal", dataFinal);
                        return query.getResultList();
                } catch(Exception ex) {
                        ex.printStackTrace();
                        return null;
                }
        }
        */

}