222 lines
8.1 KiB
Java
222 lines
8.1 KiB
Java
/*
|
|
* To change this template, choose Tools | Templates
|
|
* and open the template in the editor.
|
|
*/
|
|
package com.rjconsultores.ventaboletos.dao.hibernate;
|
|
|
|
import java.util.List;
|
|
|
|
import org.apache.commons.lang.Validate;
|
|
import org.apache.log4j.Logger;
|
|
import org.hibernate.Criteria;
|
|
import org.hibernate.SQLQuery;
|
|
import org.hibernate.SessionFactory;
|
|
import org.hibernate.criterion.Projections;
|
|
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 org.springframework.transaction.annotation.Transactional;
|
|
|
|
import com.rjconsultores.ventaboletos.dao.RutaDAO;
|
|
import com.rjconsultores.ventaboletos.dao.TarifaDAO;
|
|
import com.rjconsultores.ventaboletos.entidad.Categoria;
|
|
import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
|
|
import com.rjconsultores.ventaboletos.entidad.Marca;
|
|
import com.rjconsultores.ventaboletos.entidad.Moneda;
|
|
import com.rjconsultores.ventaboletos.entidad.OrgaoConcedente;
|
|
import com.rjconsultores.ventaboletos.entidad.Parada;
|
|
import com.rjconsultores.ventaboletos.entidad.Ruta;
|
|
import com.rjconsultores.ventaboletos.entidad.Tarifa;
|
|
import com.rjconsultores.ventaboletos.entidad.TipoPuntoVenta;
|
|
import com.rjconsultores.ventaboletos.entidad.Tramo;
|
|
import com.rjconsultores.ventaboletos.entidad.VigenciaTarifa;
|
|
import com.rjconsultores.ventaboletos.exception.BusinessException;
|
|
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
|
|
|
|
/**
|
|
*
|
|
* @author rodrigo
|
|
*/
|
|
@Repository("tarifaDAO")
|
|
public class TarifaHibernateDAO extends GenericHibernateDAO<Tarifa, Integer> implements TarifaDAO {
|
|
|
|
@Autowired
|
|
private RutaDAO rutaDAO;
|
|
private static Logger log = Logger.getLogger(TarifaHibernateDAO.class);
|
|
|
|
@Autowired
|
|
public TarifaHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
|
|
setSessionFactory(factory);
|
|
}
|
|
|
|
@Override
|
|
public List<Tarifa> obtenerTodos() {
|
|
Criteria c = getSession().createCriteria(getPersistentClass());
|
|
c.add(Restrictions.eq("activo", Boolean.TRUE));
|
|
|
|
return c.list();
|
|
}
|
|
|
|
public boolean existe(Marca marca, Tramo tramo, Moneda moneda, ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa, Ruta ruta, OrgaoConcedente orgaoConcedente) {
|
|
|
|
Validate.notNull(marca);
|
|
Validate.notNull(tramo);
|
|
Validate.notNull(moneda);
|
|
Validate.notNull(claseServicio);
|
|
Validate.notNull(vigenciaTarifa);
|
|
Validate.notNull(ruta);
|
|
Validate.notNull(orgaoConcedente);
|
|
|
|
|
|
Criteria c = getSession().createCriteria(getPersistentClass());
|
|
|
|
c.add(Restrictions.eq("marca", marca));
|
|
c.add(Restrictions.eq("tramo", tramo));
|
|
c.add(Restrictions.eq("moneda", moneda));
|
|
c.add(Restrictions.eq("claseServicio", claseServicio));
|
|
c.add(Restrictions.eq("vigenciaTarifa", vigenciaTarifa));
|
|
c.add(Restrictions.eq("ruta", ruta));
|
|
c.add(Restrictions.eq("orgaoConcedente", orgaoConcedente));
|
|
|
|
c.setProjection(Projections.rowCount());
|
|
|
|
return (HibernateFix.count(c.list()) > 0);
|
|
}
|
|
|
|
public List<Tarifa> pesquisar(Marca marca, Parada origem, Parada destino, Moneda moneda,ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa,Categoria categoria, TipoPuntoVenta tipoPuntoVenta) {
|
|
|
|
Criteria c = getSession().createCriteria(getPersistentClass());
|
|
c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
|
|
|
|
Criteria cCategoria = null;
|
|
if (categoria != null) {
|
|
cCategoria = c.createCriteria("lsTarifaCategoria");
|
|
cCategoria.add(Restrictions.eq("categoria", categoria));
|
|
cCategoria.add(Restrictions.eq("activo", Boolean.TRUE));
|
|
}
|
|
|
|
Criteria cTipoPuntoVenta = null;
|
|
if (tipoPuntoVenta != null) {
|
|
cTipoPuntoVenta = c.createCriteria("lsTarifaTipoptovta");
|
|
cTipoPuntoVenta.add(Restrictions.eq("tipoPuntoVenta", tipoPuntoVenta));
|
|
cTipoPuntoVenta.add(Restrictions.eq("activo", Boolean.TRUE));
|
|
}
|
|
|
|
if (marca != null) {
|
|
c.add(Restrictions.eq("marca", marca));
|
|
}
|
|
|
|
Criteria cTramo = c.createCriteria("tramo");
|
|
if (origem != null) {
|
|
cTramo.add(Restrictions.eq("origem", origem));
|
|
}
|
|
|
|
if (destino != null) {
|
|
cTramo.add(Restrictions.eq("destino", destino));
|
|
}
|
|
|
|
if (moneda != null) {
|
|
c.add(Restrictions.eq("moneda", moneda));
|
|
}
|
|
|
|
if (claseServicio != null) {
|
|
c.add(Restrictions.eq("claseServicio", claseServicio));
|
|
}
|
|
|
|
if (vigenciaTarifa != null) {
|
|
c.add(Restrictions.eq("vigenciaTarifa", vigenciaTarifa));
|
|
}
|
|
|
|
return c.list();
|
|
}
|
|
|
|
public Tarifa buscar(Tramo tramo, Marca marca, ClaseServicio claseServicio,VigenciaTarifa vigenciaTarifa, Moneda moneda, Ruta ruta) {
|
|
|
|
Criteria c = getSession().createCriteria(getPersistentClass());
|
|
c.add(Restrictions.eq("marca", marca));
|
|
|
|
Criteria cTramo = c.createCriteria("tramo");
|
|
cTramo.add(Restrictions.eq("activo", true));
|
|
|
|
c.add(Restrictions.eq("tramo", tramo));
|
|
c.add(Restrictions.eq("claseServicio", claseServicio));
|
|
c.add(Restrictions.eq("vigenciaTarifa", vigenciaTarifa));
|
|
c.add(Restrictions.eq("moneda", moneda));
|
|
c.add(Restrictions.eq("ruta", ruta));
|
|
c.add(Restrictions.eq("activo", Boolean.TRUE));
|
|
|
|
return (Tarifa) c.uniqueResult();
|
|
}
|
|
|
|
public List<Tarifa> buscarTarifasAtivasInativasPorVigencia(VigenciaTarifa vigencia) {
|
|
Criteria c = getSession().createCriteria(getPersistentClass());
|
|
|
|
if (vigencia != null) {
|
|
c.add(Restrictions.eq("vigenciaTarifa", vigencia));
|
|
}
|
|
|
|
return c.list();
|
|
}
|
|
|
|
public List<Tarifa> buscarTarifasAtivasPorVigencia(VigenciaTarifa vigenciaTarifa) {
|
|
Criteria c = getSession().createCriteria(getPersistentClass());
|
|
c.add(Restrictions.eq("activo", Boolean.TRUE));
|
|
c.add(Restrictions.eq("vigenciaTarifa", vigenciaTarifa));
|
|
|
|
return c.list();
|
|
}
|
|
|
|
public boolean buscarTarifaExisteTramo(Tramo tramo) {
|
|
Criteria c = this.makeCriteria();
|
|
c.add(Restrictions.eq("tramo", tramo));
|
|
c.add(Restrictions.eq("activo", Boolean.TRUE));
|
|
c.setProjection(Projections.rowCount());
|
|
|
|
return (HibernateFix.count(c.list()) > 0);
|
|
}
|
|
|
|
@Override
|
|
@Transactional(rollbackFor = BusinessException.class)
|
|
public void copiarTarifas(VigenciaTarifa vigenciaTarifaOrigem, VigenciaTarifa vigenciaTarifaDestino, boolean excluirTarifasDestino) throws BusinessException {
|
|
try {
|
|
StringBuilder sQuery = null;
|
|
if(excluirTarifasDestino) {
|
|
sQuery = new StringBuilder("DELETE FROM TARIFA WHERE VIGENCIATARIFA_ID = :VIGENCIATARIFAID ");
|
|
SQLQuery qrUpdate = getSession().createSQLQuery(sQuery.toString());
|
|
qrUpdate.setParameter("VIGENCIATARIFAID", vigenciaTarifaDestino.getVigenciatarifaId());
|
|
qrUpdate.executeUpdate();
|
|
}
|
|
|
|
sQuery = new StringBuilder("INSERT INTO TARIFA( ");
|
|
sQuery.append("TARIFA_ID,PRECIO,PRECIOREDABIERTO,TRAMO_ID,MARCA_ID,CLASESERVICIO_ID,PRECIOORIGINAL,MONEDA_ID,VIGENCIATARIFA_ID,STATUSTARIFA,ACTIVO,FECMODIF,")
|
|
.append("USUARIO_ID,IMPORTETAXAEMBARQUE,IMPORTEPEDAGIO,IMPORTEOUTROS,IMPORTESEGURO,ORGAOCONCEDENTE_ID,RUTA_ID,ORIGEN_ID,DESTINO_ID) ")
|
|
.append("SELECT ")
|
|
.append("TARIFA_SEQ.NEXTVAL,PRECIO,PRECIOREDABIERTO,TRAMO_ID,MARCA_ID,CLASESERVICIO_ID,PRECIOORIGINAL,MONEDA_ID,:VIGENCIATARIFAIDDESTINO,STATUSTARIFA,1,sysdate,")
|
|
.append(":USUARIOID,IMPORTETAXAEMBARQUE,IMPORTEPEDAGIO,IMPORTEOUTROS,IMPORTESEGURO,ORGAOCONCEDENTE_ID,RUTA_ID,ORIGEN_ID,DESTINO_ID ")
|
|
.append("FROM TARIFA ")
|
|
.append("WHERE ACTIVO = 1 ")
|
|
.append("AND VIGENCIATARIFA_ID = :VIGENCIATARIFAIDORIGEM ");
|
|
|
|
SQLQuery qrInsert = getSession().createSQLQuery(sQuery.toString());
|
|
qrInsert.setParameter("VIGENCIATARIFAIDORIGEM", vigenciaTarifaOrigem.getVigenciatarifaId());
|
|
qrInsert.setParameter("VIGENCIATARIFAIDDESTINO", vigenciaTarifaDestino.getVigenciatarifaId());
|
|
qrInsert.setParameter("USUARIOID", UsuarioLogado.getUsuarioLogado().getUsuarioId());
|
|
qrInsert.executeUpdate();
|
|
|
|
} catch (Exception e) {
|
|
log.error(e.getMessage());
|
|
throw new BusinessException(e.getMessage(), e.getCause());
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public boolean existeTarifas(VigenciaTarifa vigenciaTarifa) {
|
|
Criteria c = getSession().createCriteria(getPersistentClass());
|
|
c.add(Restrictions.eq("activo", Boolean.TRUE));
|
|
c.add(Restrictions.eq("vigenciaTarifa", vigenciaTarifa));
|
|
c.setProjection(Projections.rowCount());
|
|
return (HibernateFix.count(c.list()) > 0);
|
|
}
|
|
}
|