AdmMono/src/com/rjconsultores/ventaboletos/dao/hibernate/ConexionCtrlHibernateDAO.java

165 lines
5.5 KiB
Java

package com.rjconsultores.ventaboletos.dao.hibernate;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.SQLQuery;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import com.rjconsultores.ventaboletos.dao.ConexionCtrlDAO;
import com.rjconsultores.ventaboletos.entidad.ConexionCtrl;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.PricingConexao;
import com.rjconsultores.ventaboletos.vo.conexion.OrdenarLocalidadesGeradas;
import com.rjconsultores.ventaboletos.vo.parada.ConexionCtrlVO;
import com.rjconsultores.ventaboletos.vo.parada.ParadaVOConexionRuta;
@Repository("conexionCtrlDAO")
public class ConexionCtrlHibernateDAO extends GenericHibernateDAO<ConexionCtrl, Long>
implements ConexionCtrlDAO {
@Autowired
private ConexionRutaConfHibernateDAO confRutaDAO;
@Autowired
public ConexionCtrlHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
setSessionFactory(factory);
}
@Override
public List<ConexionCtrl> buscarConexionesCtrl(Integer origenId, Integer destinoId) {
StringBuilder sb = new StringBuilder();
sb.append(" from ConexionCtrl ");
sb.append(" where activo = 1 ");
if (origenId != null) {
sb.append(" and origenId = ").append(origenId);
}
if (destinoId != null) {
sb.append(" and destinoId = ").append(destinoId);
}
Query query = getSession().createQuery(sb.toString());
List<ConexionCtrl> list = query.list();
return list;
}
@Override
@SuppressWarnings("unchecked")
public List<ConexionCtrl> buscarTodasConexionesCtrlPricing() {
StringBuilder sb = new StringBuilder();
sb.append(" from ConexionCtrl ");
sb.append(" where activo = 1 and indPricing = 1 ");
Query query = getSession().createQuery(sb.toString());
List<ConexionCtrl> list = query.list();
return list;
}
@SuppressWarnings("unchecked")
@Override
public List<ParadaVOConexionRuta> carregarConexoesCadastradas(Long conexionctrlId) {
if(conexionctrlId == null) {
return null;
}
StringBuilder sQuery = new StringBuilder();
sQuery.append(confRutaDAO.getSQLCarregarConexoesCadastradas())
.append(" where ")
.append(" coctrl.activo = 1 and coctrl.conexionctrl_id = :conexionctrl_id ");
Query qr = getSession().createSQLQuery(sQuery.toString());
qr.setParameter("conexionctrl_id", conexionctrlId);
List<ParadaVOConexionRuta> localidadesCombinadas = new ArrayList<ParadaVOConexionRuta>(0);
List<ConexionCtrl> listConexionCtrl = new ArrayList<ConexionCtrl>(0);
List<ConexionCtrlVO> listConexionCtrlVO = new ArrayList<ConexionCtrlVO>(0);
List<Object[]> result = qr.list();
confRutaDAO.transformarObjetosConexao(localidadesCombinadas, listConexionCtrl, listConexionCtrlVO, result);
Collections.sort(localidadesCombinadas, new OrdenarLocalidadesGeradas());
return localidadesCombinadas;
}
@SuppressWarnings("unchecked")
@Override
public List<ParadaVOConexionRuta> carregarConexoesCadastradas(Integer origenId, Integer destinoId, Long conexionctrlId) {
if(origenId == null || destinoId == null) {
return null;
}
StringBuilder sQuery = new StringBuilder();
sQuery.append(" select distinct ")
.append(" origem.descparada as origem, destino.descparada as destino, c.conexionctrl_id ")
.append(" from")
.append(" conexion_ctrl c inner join ")
.append(" parada origem on origem.parada_id = c.origen_id inner join ")
.append(" parada destino on destino.parada_id = c.destino_id ")
.append(" where ")
.append(" c.activo = 1 and c.indpricing = 1 and c.origen_id = :origenId and c.destino_id = :destinoId ");
if(conexionctrlId != null) {
sQuery.append(" and c.conexionctrl_id = :conexionctrlId ");
}
Query qr = getSession().createSQLQuery(sQuery.toString());
qr.setParameter("origenId", origenId);
qr.setParameter("destinoId", destinoId);
if(conexionctrlId != null) {
qr.setParameter("conexionctrlId", conexionctrlId);
}
List<ParadaVOConexionRuta> localidadesCombinadas = new ArrayList<ParadaVOConexionRuta>(0);
List<Object[]> result = qr.list();
for (Object[] tupla : result) {
Parada paradaOrigem = new Parada(origenId, null, tupla[0].toString());
Parada paradaDestino = new Parada(destinoId, null, tupla[1].toString());
conexionctrlId = Long.valueOf(tupla[2].toString());
ConexionCtrlVO conex = new ConexionCtrlVO(origenId, destinoId);
conex.setConexionctrlId(conexionctrlId);
conex.setIndPricing(true);
conex.setOrigenId(origenId);
conex.setDestinoId(destinoId);
ParadaVOConexionRuta parada = new ParadaVOConexionRuta();
parada.setParadaOrigem(paradaOrigem);
parada.setParadaDestino(paradaDestino);
parada.setConexionCtrl(conex);
localidadesCombinadas.add(parada);
}
return localidadesCombinadas;
}
public void limparPesquisaPricingConexao(Integer pricingId) {
StringBuilder sQuery = new StringBuilder("DELETE FROM PRICING_CONEXAO_VALOR WHERE PRICING_ID = :pricingId AND TRUNC(FECMODIF) = TRUNC(SYSDATE) ");
SQLQuery qrUpdate = getSession().createSQLQuery(sQuery.toString());
qrUpdate.setParameter("pricingId", pricingId);
qrUpdate.executeUpdate();
}
}