166 lines
4.4 KiB
Java
166 lines
4.4 KiB
Java
package com.rjconsultores.ventaboletos.dao.hibernate;
|
|
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
|
|
import org.hibernate.Criteria;
|
|
import org.hibernate.Query;
|
|
import org.hibernate.SessionFactory;
|
|
import org.hibernate.criterion.Restrictions;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Qualifier;
|
|
import org.springframework.stereotype.Repository;
|
|
|
|
import com.rjconsultores.ventaboletos.dao.VoucherDAO;
|
|
import com.rjconsultores.ventaboletos.entidad.Voucher;
|
|
|
|
@SuppressWarnings("unchecked")
|
|
@Repository("voucherDAO")
|
|
public class VoucherHibernateDAO extends GenericHibernateDAO<Voucher, Long> implements VoucherDAO {
|
|
|
|
@Autowired
|
|
public VoucherHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
|
|
setSessionFactory(factory);
|
|
}
|
|
|
|
@Override
|
|
public List<Voucher> obtenerTodos() {
|
|
Criteria c = getSession().createCriteria(getPersistentClass());
|
|
c.add(Restrictions.eq(ACTIVO, Boolean.TRUE));
|
|
|
|
return c.list();
|
|
}
|
|
|
|
@Override
|
|
public List<Voucher> buscarConsulta(Long voucherId,
|
|
String numContrato,
|
|
String nit,
|
|
String nomeTransportadora,
|
|
Date dataInicial,
|
|
Date dataFinal,
|
|
Integer origemId,
|
|
Integer destinoId) {
|
|
|
|
StringBuilder hql = new StringBuilder();
|
|
hql.append("SELECT v, ori.descParada AS descOrigem , des.descParada AS descDestino ");
|
|
hql.append("FROM Voucher v ");
|
|
|
|
setJoins( numContrato,
|
|
nit,
|
|
nomeTransportadora,
|
|
hql);
|
|
|
|
hql.append("WHERE v.activo = 1 ");
|
|
|
|
setClausulas(voucherId,
|
|
numContrato,
|
|
nit,
|
|
nomeTransportadora,
|
|
dataInicial,
|
|
dataFinal,
|
|
origemId,
|
|
destinoId,
|
|
hql);
|
|
|
|
hql.append("ORDER BY voucherId ");
|
|
|
|
Query query = getSession().createQuery(hql.toString());
|
|
|
|
setParametros(voucherId,
|
|
numContrato,
|
|
nit,
|
|
nomeTransportadora,
|
|
dataInicial,
|
|
dataFinal,
|
|
origemId,
|
|
destinoId,
|
|
query);
|
|
|
|
return query.list();
|
|
}
|
|
|
|
private void setJoins(String numContrato, String nit, String nomeTransportadora, StringBuilder hql) {
|
|
hql.append("LEFT JOIN Parada ori ON v.origenId = ori.origenId ");
|
|
hql.append("LEFT JOIN Parada des ON v.origenId = des.origenId ");
|
|
|
|
}
|
|
|
|
private void setClausulas(Long voucherId, String numContrato, String nit, String nomeTransportadora,
|
|
Date dataInicial, Date dataFinal, Integer origemId, Integer destinoId, StringBuilder hql) {
|
|
if(voucherId != null ){
|
|
hql.append(" AND v.voucherId = :voucherId ");
|
|
}
|
|
|
|
if(numContrato != null ){
|
|
hql.append(" AND v.voucherId = :voucherId ");
|
|
}
|
|
|
|
if(nit != null ){
|
|
hql.append(" AND v.voucherId = :voucherId ");
|
|
}
|
|
|
|
if(nomeTransportadora != null ){
|
|
hql.append(" AND v.voucherId = :voucherId ");
|
|
}
|
|
|
|
if(dataInicial != null ){
|
|
hql.append(" AND v.dataValidade >= :dataInicial ");
|
|
}
|
|
|
|
if(dataFinal != null ){
|
|
hql.append(" AND v.dataValidade <= :dataFinal ");
|
|
}
|
|
|
|
if(origemId != null ){
|
|
hql.append(" AND v.origenId = :origemId ");
|
|
}
|
|
|
|
if(destinoId != null ){
|
|
hql.append(" AND v.destinoId = :destinoId ");
|
|
}
|
|
}
|
|
|
|
private void setParametros(Long voucherId,
|
|
String numContrato,
|
|
String nit,
|
|
String nomeTransportadora,
|
|
Date dataInicial,
|
|
Date dataFinal,
|
|
Integer origemId,
|
|
Integer destinoId,
|
|
Query query) {
|
|
|
|
if(voucherId != null ){
|
|
query.setLong("voucherId", voucherId);
|
|
}
|
|
|
|
if(numContrato != null ){
|
|
query.setString("numContrato", numContrato);
|
|
}
|
|
|
|
if(nit != null ){
|
|
query.setString("nit", nit);
|
|
}
|
|
|
|
if(nomeTransportadora != null ){
|
|
query.setString("nomeTransportadora", nomeTransportadora);
|
|
}
|
|
|
|
if(dataInicial != null ){
|
|
query.setDate("dataInicial", dataInicial);
|
|
}
|
|
|
|
if(dataFinal != null ){
|
|
query.setDate("dataFinal", dataFinal);
|
|
}
|
|
|
|
if(origemId != null ){
|
|
query.setInteger("origemId", origemId);
|
|
}
|
|
|
|
if(destinoId != null ){
|
|
query.setInteger("destinoId", destinoId);
|
|
}
|
|
}
|
|
}
|