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 implements ConexionCtrlDAO { @Autowired private ConexionRutaConfHibernateDAO confRutaDAO; @Autowired public ConexionCtrlHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { setSessionFactory(factory); } @Override public List 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 list = query.list(); return list; } @Override @SuppressWarnings("unchecked") public List buscarTodasConexionesCtrlPricing() { StringBuilder sb = new StringBuilder(); sb.append(" from ConexionCtrl "); sb.append(" where activo = 1 and indPricing = 1 "); Query query = getSession().createQuery(sb.toString()); List list = query.list(); return list; } @SuppressWarnings("unchecked") @Override public List 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 localidadesCombinadas = new ArrayList(0); List listConexionCtrl = new ArrayList(0); List listConexionCtrlVO = new ArrayList(0); List result = qr.list(); confRutaDAO.transformarObjetosConexao(localidadesCombinadas, listConexionCtrl, listConexionCtrlVO, result); Collections.sort(localidadesCombinadas, new OrdenarLocalidadesGeradas()); return localidadesCombinadas; } @SuppressWarnings("unchecked") @Override public List 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 localidadesCombinadas = new ArrayList(0); List 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(); } }