diff --git a/src/com/rjconsultores/ventaboletos/dao/TarifaDAO.java b/src/com/rjconsultores/ventaboletos/dao/TarifaDAO.java index 1a60a4e0b..9ae26b3df 100644 --- a/src/com/rjconsultores/ventaboletos/dao/TarifaDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/TarifaDAO.java @@ -9,14 +9,19 @@ import com.rjconsultores.ventaboletos.entidad.ClaseServicio; import com.rjconsultores.ventaboletos.entidad.Empresa; 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.service.TarifaService; + import java.util.List; +import org.zkoss.web.fn.ServletFns; + /** * * @author rodrigo @@ -27,7 +32,19 @@ public interface TarifaDAO extends GenericDAO { ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa, Categoria categoria, TipoPuntoVenta tipoPuntoVenta); - public boolean existe(Marca marca, Tramo tramo, Moneda moneda, ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa); + /** + * {@link TarifaService#existe(Marca, Tramo, Moneda, ClaseServicio, VigenciaTarifa, Ruta, OrgaoConcedente)} + * + * @param marca + * @param tramo + * @param moneda + * @param claseServicio + * @param vigenciaTarifa + * @param ruta + * @param orgaoConcedente + * @return + */ + public boolean existe(Marca marca, Tramo tramo, Moneda moneda, ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa, Ruta ruta, OrgaoConcedente orgaoConcedente); public List pesquisar(Marca marca, Tramo tramo, Moneda moneda, ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa); diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaHibernateDAO.java index d1ce4ee35..b23dd20bd 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/TarifaHibernateDAO.java @@ -4,22 +4,9 @@ */ package com.rjconsultores.ventaboletos.dao.hibernate; -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.Empresa; -import com.rjconsultores.ventaboletos.entidad.Marca; -import com.rjconsultores.ventaboletos.entidad.Moneda; -import com.rjconsultores.ventaboletos.entidad.Parada; -import com.rjconsultores.ventaboletos.entidad.Ruta; -import com.rjconsultores.ventaboletos.entidad.RutaCombinacion; -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 java.util.ArrayList; import java.util.List; + +import org.apache.commons.lang.Validate; import org.apache.log4j.Logger; import org.hibernate.Criteria; import org.hibernate.Query; @@ -30,6 +17,21 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Repository; +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.Empresa; +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; + /** * * @author rodrigo @@ -55,8 +57,7 @@ public class TarifaHibernateDAO extends GenericHibernateDAO return c.list(); } - public List pesquisar(Marca marca, Tramo tramo, Moneda moneda, - ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa) { + public List pesquisar(Marca marca, Tramo tramo, Moneda moneda,ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa) { Criteria c = getSession().createCriteria(getPersistentClass()); @@ -83,8 +84,17 @@ public class TarifaHibernateDAO extends GenericHibernateDAO return c.list(); } - public boolean existe(Marca marca, Tramo tramo, Moneda moneda, ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa) { - + 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)); @@ -92,14 +102,15 @@ public class TarifaHibernateDAO extends GenericHibernateDAO 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 pesquisar(Marca marca, Parada origem, Parada destino, Moneda moneda, - ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa, - Categoria categoria, TipoPuntoVenta tipoPuntoVenta) { + public List 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); @@ -173,133 +184,7 @@ public class TarifaHibernateDAO extends GenericHibernateDAO return c.list(); } - public List pesquisar(List lsMoneda, List lsMarca, - List lsClaseServicio, List lsCategoria, - List lsEmpresa, List lsRuta, - List lsTipoPuntoVenta, List lsVigenciaTarifa) { - // Criteria c = getSession().createCriteria(getPersistentClass()); - // c.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY); - // - // c.add(Restrictions.eq("activo", Boolean.TRUE)); - // - // if (!lsVigenciaTarifa.isEmpty()) { - // List lsAux = null; - // if (lsVigenciaTarifa.size() > 1000) { - // lsAux = new ArrayList(); - // for (VigenciaTarifa v : lsVigenciaTarifa) { - // lsAux.add(v); - // if (lsAux.size() == 1000) { - // c.add(Restrictions.in("vigenciaTarifa", lsAux)); - // lsAux = new ArrayList(); - // } - // } - // if (lsAux != null && lsAux.size() > 0) { - // c.add(Restrictions.in("vigenciaTarifa", lsAux)); - // } - // } else { - // c.add(Restrictions.in("vigenciaTarifa", lsVigenciaTarifa)); - // } - // } - // - // if (!lsMoneda.isEmpty()) { - // c.add(Restrictions.in("moneda", lsMoneda)); - // } - // - // if (!lsMarca.isEmpty()) { - // c.add(Restrictions.in("marca", lsMarca)); - // } - // - // if (!lsClaseServicio.isEmpty()) { - // c.add(Restrictions.in("claseServicio", lsClaseServicio)); - // } - // - // Criteria cCategoria = null; - // if (!lsCategoria.isEmpty()) { - // cCategoria = c.createCriteria("lsTarifaCategoria"); - // cCategoria.add(Restrictions.in("categoria", lsCategoria)); - // } - // - // Criteria cTipoPuntoVenta = null; - // if (!lsTipoPuntoVenta.isEmpty()) { - // cTipoPuntoVenta = c.createCriteria("lsTarifaTipoptovta"); - // cTipoPuntoVenta.add(Restrictions.in("tipoPuntoVenta", lsTipoPuntoVenta)); - // } - // - // if (!lsEmpresa.isEmpty()) { - // Criteria criteriaRuta = getSession().createCriteria(Ruta.class); - // Criteria cEmpresa = criteriaRuta.createCriteria("lsRutaEmpresa"); - // log.info("Excel: Qtd lsEmpresa" + lsEmpresa.size()); - // cEmpresa.add(Restrictions.in("empresa", lsEmpresa)); - // - // List lsRutasComEmpresa = criteriaRuta.list(); - // List lsTramos = new ArrayList(); - // for (Ruta ruta : lsRutasComEmpresa) { - // ruta = rutaDAO.obtenerID(ruta.getRutaId()); - // for (RutaCombinacion rc : ruta.getRutaCombinacionList()) { - // if (!lsTramos.contains(rc.getTramo())) { - // lsTramos.add(rc.getTramo()); - // } - // } - // } - // - // if (!lsTramos.isEmpty()) { - // List lsAux = null; - // if (lsTramos.size() > 1000) { - // lsAux = new ArrayList(); - // for (Tramo t : lsTramos) { - // lsAux.add(t); - // if (lsAux.size() == 500) { - // log.info("Excel: Qtd lsAux 1 - " + lsAux.size()); - // c.add(Restrictions.in("tramo", lsAux)); - // lsAux = new ArrayList(); - // } - // } - // if (lsAux != null && lsAux.size() > 0) { - // log.info("Excel: Qtd lsAux 2 - " + lsAux.size()); - // c.add(Restrictions.in("tramo", lsAux)); - // } - // } else { - // log.info("Excel: Qtd lsAux 3 - " + lsAux.size()); - // c.add(Restrictions.in("tramo", lsTramos)); - // } - // } - // } - // - // - // - // - // if (!lsRuta.isEmpty()) { - // List lsTramos = new ArrayList(); - // for (Ruta ruta : lsRuta) { - // ruta = rutaDAO.obtenerID(ruta.getRutaId()); - // for (RutaCombinacion rc : ruta.getRutaCombinacionList()) { - // if (!lsTramos.contains(rc.getTramo())) { - // lsTramos.add(rc.getTramo()); - // } - // } - // } - // - // if (!lsTramos.isEmpty()) { - // List lsAux = null; - // if (lsTramos.size() > 1000) { - // lsAux = new ArrayList(); - // for (Tramo t : lsTramos) { - // lsAux.add(t); - // if (lsAux.size() == 1000) { - // c.add(Restrictions.in("tramo", lsAux)); - // lsAux = new ArrayList(); - // } - // } - // if (lsAux != null && lsAux.size() > 0) { - // c.add(Restrictions.in("tramo", lsAux)); - // } - // } else { - // c.add(Restrictions.in("tramo", lsTramos)); - // } - // } - // } - // - // return c.list(); + public List pesquisar(List lsMoneda, List lsMarca,List lsClaseServicio, List lsCategoria,List lsEmpresa, List lsRuta,List lsTipoPuntoVenta, List lsVigenciaTarifa) { StringBuilder hql = new StringBuilder(" SELECT T FROM "); hql.append(" Tarifa as T "); diff --git a/src/com/rjconsultores/ventaboletos/service/TarifaService.java b/src/com/rjconsultores/ventaboletos/service/TarifaService.java index edc51ec42..18933c3f0 100644 --- a/src/com/rjconsultores/ventaboletos/service/TarifaService.java +++ b/src/com/rjconsultores/ventaboletos/service/TarifaService.java @@ -9,6 +9,7 @@ import com.rjconsultores.ventaboletos.entidad.ClaseServicio; import com.rjconsultores.ventaboletos.entidad.Empresa; 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.Plaza; import com.rjconsultores.ventaboletos.entidad.Ruta; @@ -28,24 +29,31 @@ public interface TarifaService extends GenericService { ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa, Categoria categoria, TipoPuntoVenta tipoPuntoVenta); - public List pesquisar(Marca marca, Tramo tramo, Moneda moneda, - ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa); + public List pesquisar(Marca marca, Tramo tramo, Moneda moneda,ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa); - public boolean existe(Marca marca, Tramo tramo, Moneda moneda, - ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa); + /** + * Método usado para checar se uma tarifa já está cadastrada no sistema. + * + * Uma tarifa é considerada única de acordo a marca, tramo, moneda, claseServicio, vigenciaTarifa, ruta e orgaoConcedente + * + * @param marca + * @param tramo + * @param moneda + * @param claseServicio + * @param vigenciaTarifa + * @param ruta + * @param orgaoConcedente + * @return + */ + public boolean existe(Marca marca, Tramo tramo, Moneda moneda,ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa, Ruta ruta, OrgaoConcedente orgaoConcedente); - public Tarifa buscar(Tramo tramo, Marca marca, ClaseServicio claseServicio, - VigenciaTarifa vigenciaTarifa, Moneda moneda); + public Tarifa buscar(Tramo tramo, Marca marca, ClaseServicio claseServicio,VigenciaTarifa vigenciaTarifa, Moneda moneda); public List buscarPorVigencia(VigenciaTarifa vigencia); - public List pesquisar(List lsMoneda, List lsMarca, - List lsClaseServicio, List lsCategoria, - List lsEmpresa, List lsRuta, - List lsTipoPuntoVenta, List lsVigenciaTarifa); + public List pesquisar(List lsMoneda, List lsMarca,List lsClaseServicio, List lsCategoria,List lsEmpresa, List lsRuta,List lsTipoPuntoVenta, List lsVigenciaTarifa); - public Boolean podeAlterarTarifaMinima(Tarifa tarifa, Marca marca, Parada origem, - Parada destino, ClaseServicio claseServicio, Plaza plaza, Moneda moneda); + public Boolean podeAlterarTarifaMinima(Tarifa tarifa, Marca marca, Parada origem,Parada destino, ClaseServicio claseServicio, Plaza plaza, Moneda moneda); public List buscarExisteVigencia(VigenciaTarifa vigenciaTarifa); diff --git a/src/com/rjconsultores/ventaboletos/service/impl/TarifaServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/TarifaServiceImpl.java index ff2605896..09df42cb3 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/TarifaServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/TarifaServiceImpl.java @@ -18,6 +18,7 @@ import com.rjconsultores.ventaboletos.entidad.Constante; import com.rjconsultores.ventaboletos.entidad.Empresa; 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.RutaCombinacion; @@ -260,9 +261,8 @@ public class TarifaServiceImpl implements TarifaService { return tarifaDAO.pesquisar(marca, tramo, moneda, claseServicio, vigenciaTarifa); } - public boolean existe(Marca marca, Tramo tramo, Moneda moneda, - ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa) { - return tarifaDAO.existe(marca, tramo, moneda, claseServicio, vigenciaTarifa); + public boolean existe(Marca marca, Tramo tramo, Moneda moneda,ClaseServicio claseServicio, VigenciaTarifa vigenciaTarifa, Ruta ruta, OrgaoConcedente orgaoConcedente) { + return tarifaDAO.existe(marca, tramo, moneda, claseServicio, vigenciaTarifa, ruta, orgaoConcedente); } public List pesquisar(Marca marca, Parada origem, Parada destino, Moneda moneda,