leonardo 2017-07-27 13:46:27 +00:00
parent 526891a3bb
commit 4d9a17a151
5 changed files with 54 additions and 22 deletions

View File

@ -4,11 +4,14 @@
*/ */
package com.rjconsultores.ventaboletos.dao; package com.rjconsultores.ventaboletos.dao;
import java.util.List;
import com.rjconsultores.ventaboletos.entidad.ClaseServicio; import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
import com.rjconsultores.ventaboletos.entidad.OrgaoTramo;
import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Tramo; import com.rjconsultores.ventaboletos.entidad.Tramo;
import com.rjconsultores.ventaboletos.entidad.TramoServicio;
import com.rjconsultores.ventaboletos.entidad.Via; import com.rjconsultores.ventaboletos.entidad.Via;
import java.util.List;
/** /**
* *
@ -24,6 +27,8 @@ public interface TramoDAO extends GenericDAO<Tramo, Integer> {
public Tramo busca(Parada origem, Parada destino, Via via); public Tramo busca(Parada origem, Parada destino, Via via);
public List<OrgaoTramo> getLsOrgaoTramo(Tramo tramo);
/** /**
* Hace la búsqueda del tramo que tiene origen - destino - via - clase servicio. * Hace la búsqueda del tramo que tiene origen - destino - via - clase servicio.
@ -41,4 +46,5 @@ public interface TramoDAO extends GenericDAO<Tramo, Integer> {
public Long count(Via via); public Long count(Via via);
public List<Via> obtenerViasOrigemDestino(Parada origem, Parada destino); public List<Via> obtenerViasOrigemDestino(Parada origem, Parada destino);
public List<Tramo> obtenerPorOrigemDestinoFetchLazy(Parada origem, Parada destino) ; public List<Tramo> obtenerPorOrigemDestinoFetchLazy(Parada origem, Parada destino) ;
public List<TramoServicio> obtenerTramosServiciosPorTramo(Tramo t);
} }

View File

@ -18,8 +18,10 @@ import org.springframework.stereotype.Repository;
import com.rjconsultores.ventaboletos.dao.TramoDAO; import com.rjconsultores.ventaboletos.dao.TramoDAO;
import com.rjconsultores.ventaboletos.entidad.ClaseServicio; import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
import com.rjconsultores.ventaboletos.entidad.OrgaoTramo;
import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Tramo; import com.rjconsultores.ventaboletos.entidad.Tramo;
import com.rjconsultores.ventaboletos.entidad.TramoServicio;
import com.rjconsultores.ventaboletos.entidad.Via; import com.rjconsultores.ventaboletos.entidad.Via;
/** /**
@ -44,6 +46,10 @@ public class TramoHibernateDAO extends GenericHibernateDAO<Tramo, Integer>
return c.list(); return c.list();
} }
public List<TramoServicio> obtenerTramosServiciosPorTramo(Tramo t){
return obtenerID(t.getTramoId()).getTramoServicioList();
}
public Tramo obtenerPorOrigemDestino(Parada origem, Parada destino) { public Tramo obtenerPorOrigemDestino(Parada origem, Parada destino) {
Criteria c = getSession().createCriteria(getPersistentClass()); Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("origem", origem)); c.add(Restrictions.eq("origem", origem));
@ -171,4 +177,8 @@ public class TramoHibernateDAO extends GenericHibernateDAO<Tramo, Integer>
return HibernateFix.count(c.list()); return HibernateFix.count(c.list());
} }
public List<OrgaoTramo> getLsOrgaoTramo(Tramo tramo){
return obtenerID(tramo.getTramoId()).getLsOrgaoTramo();
}
} }

View File

@ -187,19 +187,17 @@ public class Tramo implements Serializable {
this.rutaCombinacionList = rutaCombinacionList; this.rutaCombinacionList = rutaCombinacionList;
} }
public List<TramoServicio> getTramoServicioList() { public List<TramoServicio> getTramoServicioList() throws LazyInitializationException{
List<TramoServicio> lsTramoServicio = new ArrayList<TramoServicio>(); List<TramoServicio> lsTramoServicio = new ArrayList<TramoServicio>();
try{
for (TramoServicio tramoServicio : this.tramoServicioList) {
if (tramoServicio.getActivo()) {
lsTramoServicio.add(tramoServicio);
}
}
this.tramoServicioList = lsTramoServicio; for (TramoServicio tramoServicio : this.tramoServicioList) {
} catch (LazyInitializationException le){ if (tramoServicio.getActivo()) {
Log.error("", le); lsTramoServicio.add(tramoServicio);
}
} }
this.tramoServicioList = lsTramoServicio;
return lsTramoServicio; return lsTramoServicio;
} }

View File

@ -7,6 +7,7 @@ package com.rjconsultores.ventaboletos.service;
import java.util.List; import java.util.List;
import com.rjconsultores.ventaboletos.entidad.ClaseServicio; import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
import com.rjconsultores.ventaboletos.entidad.OrgaoTramo;
import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Tramo; import com.rjconsultores.ventaboletos.entidad.Tramo;
import com.rjconsultores.ventaboletos.entidad.Via; import com.rjconsultores.ventaboletos.entidad.Via;
@ -63,6 +64,8 @@ public interface TramoService {
public Tramo suscribirActualizar(Tramo tramo) throws BusinessException ; public Tramo suscribirActualizar(Tramo tramo) throws BusinessException ;
public List<OrgaoTramo> getLsOrgaoTramoByTramo(Tramo tramo);
/** /**
* Gerar a descrição automática do tramo * Gerar a descrição automática do tramo
* *

View File

@ -10,6 +10,7 @@ import java.util.List;
import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.collections.Predicate; import org.apache.commons.collections.Predicate;
import org.hibernate.LazyInitializationException;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
@ -17,6 +18,7 @@ import org.springframework.transaction.annotation.Transactional;
import com.rjconsultores.ventaboletos.dao.RutaCombinacionDAO; import com.rjconsultores.ventaboletos.dao.RutaCombinacionDAO;
import com.rjconsultores.ventaboletos.dao.TramoDAO; import com.rjconsultores.ventaboletos.dao.TramoDAO;
import com.rjconsultores.ventaboletos.entidad.ClaseServicio; import com.rjconsultores.ventaboletos.entidad.ClaseServicio;
import com.rjconsultores.ventaboletos.entidad.OrgaoTramo;
import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Tramo; import com.rjconsultores.ventaboletos.entidad.Tramo;
import com.rjconsultores.ventaboletos.entidad.TramoServicio; import com.rjconsultores.ventaboletos.entidad.TramoServicio;
@ -175,6 +177,14 @@ public class TramoServiceImpl implements TramoService {
return tramoDAO.obtenerPorOrigemDestinoFetchLazy(origem, destino); return tramoDAO.obtenerPorOrigemDestinoFetchLazy(origem, destino);
} }
private List<TramoServicio> getListTramoService(Tramo t){
return tramoDAO.obtenerTramosServiciosPorTramo(t);
}
public List<OrgaoTramo> getLsOrgaoTramoByTramo(Tramo tramo){
return tramoDAO.getLsOrgaoTramo(tramo);
}
@Override @Override
@Transactional(rollbackFor = BusinessException.class) @Transactional(rollbackFor = BusinessException.class)
public Tramo suscribirActualizar(Tramo tramo) throws BusinessException { public Tramo suscribirActualizar(Tramo tramo) throws BusinessException {
@ -217,19 +227,24 @@ public class TramoServiceImpl implements TramoService {
// Esa validación tambien permite que el usuario quite una clase y la agregue de nuevo con otro tiempo de recorrido // Esa validación tambien permite que el usuario quite una clase y la agregue de nuevo con otro tiempo de recorrido
List<TramoServicio> lsTramoServicioOriginal = tramoOriginal.getTramoServicioList(); List<TramoServicio> lsTramoServicioOriginal = tramoOriginal.getTramoServicioList();
for (final TramoServicio ts : lsTramoServicioOriginal) { for (final TramoServicio ts : lsTramoServicioOriginal) {
boolean existe = CollectionUtils.exists(tramo.getTramoServicioList(), new Predicate() {
@Override
public boolean evaluate(Object o) { boolean alterouClaseTramoServico = true;
TramoServicio t = (TramoServicio) o;
if (t.getActivo()) { try{
return t.getClaseServicio().equals(ts.getClaseServicio()); tramo.getTramoServicioList();
} } catch(LazyInitializationException le){
return false; tramo.setTramoServicioList(getListTramoService(tramo));
}
for( TramoServicio tsNovo : tramo.getTramoServicioList()){
if (tsNovo.getClaseServicio().equals(ts.getClaseServicio())){
alterouClaseTramoServico = false;
break;
} }
}); }
if (!existe) { if (alterouClaseTramoServico) {
if (rutaCombinacionDAO.existeTramo(tramo, ts.getClaseServicio())) { if (rutaCombinacionDAO.existeTramo(tramo, ts.getClaseServicio())) {
throw new BusinessException("TramoServiceImpl.msg.validacionTramoServicio"); throw new BusinessException("TramoServiceImpl.msg.validacionTramoServicio");
} }