Subversion Repositories Integrator Subversion

Rev

Rev 523 | 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 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 List<VigenciaDTO> consultarVigencias() {
                StringBuilder jpql = new StringBuilder();
                jpql.append("SELECT new br.com.ec.domain.dto.VigenciaDTO(v.sequencial, v.descricao, v.dataInicio, v.dataFim) ");
                jpql.append("FROM Vigencia v ");
                jpql.append("ORDER BY v.dataInicio DESC");
                try {
                        return getEntityManager().createQuery(jpql.toString(), VigenciaDTO.class).getResultList();
                } catch(Exception ex) {
                        ex.printStackTrace();
                        return null;
                }
        }
       
        /*
        @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 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 Vigencia consultarProximaVigencia(Vigencia vigencia) {
                StringBuilder sql = new StringBuilder();
                sql.append("SELECT e FROM Vigencia e WHERE e.sequencial = :sequencial ");
                try {
                        return getEntityManager().createQuery(sql.toString(), Vigencia.class).setParameter("sequencial", vigencia.getSequencial() + 1).getSingleResult();
                } 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;
                }
        }
        */

}