AdmMono/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaHibernateDAO.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);
}
}