From a30cdadab10491083bcdde37af4fcc0329ea5020 Mon Sep 17 00:00:00 2001 From: gleimar Date: Mon, 1 Apr 2013 22:11:01 +0000 Subject: [PATCH] git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@25461 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../dao/DetDiagramaAutobusDAO.java | 18 +- .../ventaboletos/dao/RutaSecuenciaDAO.java | 16 +- .../DetDiagramaAutobusHibernateDAO.java | 9 +- .../hibernate/EsquemaAsientoHibernateDAO.java | 8 +- .../hibernate/RutaSecuenciaHibernateDAO.java | 87 +++++-- .../service/DetDiagramaAutobusService.java | 14 +- .../service/DiagramaAutobusService.java | 18 +- .../service/EsquemaAsientoService.java | 37 ++- .../impl/DiagramaAutobusServiceImpl.java | 15 +- .../impl/EsquemaAsientoServiceImpl.java | 235 +++++++++++++++--- 10 files changed, 373 insertions(+), 84 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/DetDiagramaAutobusDAO.java b/src/com/rjconsultores/ventaboletos/dao/DetDiagramaAutobusDAO.java index 251fc6a9e..43ac0daf2 100644 --- a/src/com/rjconsultores/ventaboletos/dao/DetDiagramaAutobusDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/DetDiagramaAutobusDAO.java @@ -4,11 +4,25 @@ */ package com.rjconsultores.ventaboletos.dao; +import java.util.List; + import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus; /** - * + * * @author Administrador */ -public interface DetDiagramaAutobusDAO extends GenericDAO { +public interface DetDiagramaAutobusDAO { + + public List obtenerTodos(); + + public DetDiagramaAutobus obtenerID(Short id); + + public DetDiagramaAutobus suscribir(DetDiagramaAutobus entidad); + + public DetDiagramaAutobus actualizacion(DetDiagramaAutobus entidad); + + public void borrar(DetDiagramaAutobus entidad); + + public Long count(String campo, Object o); } diff --git a/src/com/rjconsultores/ventaboletos/dao/RutaSecuenciaDAO.java b/src/com/rjconsultores/ventaboletos/dao/RutaSecuenciaDAO.java index 34d095699..b4140e875 100644 --- a/src/com/rjconsultores/ventaboletos/dao/RutaSecuenciaDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/RutaSecuenciaDAO.java @@ -4,9 +4,11 @@ */ package com.rjconsultores.ventaboletos.dao; +import java.util.List; + +import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Ruta; import com.rjconsultores.ventaboletos.entidad.RutaSecuencia; -import java.util.List; /** * @@ -15,5 +17,17 @@ import java.util.List; public interface RutaSecuenciaDAO extends GenericDAO { public List buscarSecuenciaOrdenado(Ruta ruta); + public int borrarSecuencias(Ruta ruta); + + /** + * Hace la validación de la origen y destino dentro de la secuencia de la ruta.
+ * + * La parada de origen no puede tener el numero de secuencia mayor o igual a la parada de destino
+ * @param ruta + * @param origen + * @param destino + * @return + */ + public boolean paradaSecuenciaValida(Ruta ruta, Parada origen,Parada destino); } diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/DetDiagramaAutobusHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/DetDiagramaAutobusHibernateDAO.java index 8e52d2410..803fe5ca1 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/DetDiagramaAutobusHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/DetDiagramaAutobusHibernateDAO.java @@ -4,9 +4,8 @@ */ package com.rjconsultores.ventaboletos.dao.hibernate; -import com.rjconsultores.ventaboletos.dao.DetDiagramaAutobusDAO; -import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus; import java.util.List; + import org.hibernate.Criteria; import org.hibernate.SessionFactory; import org.hibernate.criterion.Restrictions; @@ -14,13 +13,15 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Repository; +import com.rjconsultores.ventaboletos.dao.DetDiagramaAutobusDAO; +import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus; + /** * * @author Administrador */ @Repository("detDiagramaAutobusDAO") -public class DetDiagramaAutobusHibernateDAO extends GenericHibernateDAO - implements DetDiagramaAutobusDAO { +public class DetDiagramaAutobusHibernateDAO extends GenericHibernateDAO implements DetDiagramaAutobusDAO { @Autowired public DetDiagramaAutobusHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/EsquemaAsientoHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/EsquemaAsientoHibernateDAO.java index 5cf26b3ef..21aabab94 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/EsquemaAsientoHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/EsquemaAsientoHibernateDAO.java @@ -43,9 +43,13 @@ public class EsquemaAsientoHibernateDAO extends GenericHibernateDAO 0) { - ea = (EsquemaAsiento) c.uniqueResult(); + + List lsAsientos = c.list(); + + if (!lsAsientos.isEmpty()) { + ea = lsAsientos.get(0); } + return ea; } } diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/RutaSecuenciaHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/RutaSecuenciaHibernateDAO.java index ed00a50aa..a1b435521 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/RutaSecuenciaHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/RutaSecuenciaHibernateDAO.java @@ -5,6 +5,7 @@ package com.rjconsultores.ventaboletos.dao.hibernate; import com.rjconsultores.ventaboletos.dao.RutaSecuenciaDAO; +import com.rjconsultores.ventaboletos.entidad.Parada; import com.rjconsultores.ventaboletos.entidad.Ruta; import com.rjconsultores.ventaboletos.entidad.RutaSecuencia; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; @@ -13,6 +14,7 @@ import java.util.List; import org.hibernate.Criteria; import org.hibernate.Query; 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; @@ -20,34 +22,79 @@ import org.springframework.stereotype.Repository; import org.hibernate.criterion.Order; /** - * + * * @author Rafius */ @Repository("rutaSecuenciaDAO") public class RutaSecuenciaHibernateDAO extends GenericHibernateDAO - implements RutaSecuenciaDAO { + implements RutaSecuenciaDAO { - @Autowired - public RutaSecuenciaHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { - setSessionFactory(factory); - } + @Autowired + public RutaSecuenciaHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { + setSessionFactory(factory); + } - public List buscarSecuenciaOrdenado(Ruta ruta) { - Criteria c = getSession().createCriteria(getPersistentClass()); + public List buscarSecuenciaOrdenado(Ruta ruta) { + Criteria c = getSession().createCriteria(getPersistentClass()); - c.add(Restrictions.eq("activo", Boolean.TRUE)); - c.add(Restrictions.eq("ruta", ruta)); + c.add(Restrictions.eq("activo", Boolean.TRUE)); + c.add(Restrictions.eq("ruta", ruta)); - c.addOrder(Order.asc("numsecuencia")); + c.addOrder(Order.asc("numsecuencia")); + return c.list(); + } - return c.list(); - } - public int borrarSecuencias(Ruta ruta) { - Query query = this.getSession().createQuery("UPDATE RutaSecuencia SET activo = false, fecmodif = current_timestamp(), usuarioId= :usuario where ruta = :ruta"); - query.setParameter("usuario", UsuarioLogado.getUsuarioLogado().getUsuarioId()); - query.setParameter("ruta", ruta); - - return query.executeUpdate(); - } + public int borrarSecuencias(Ruta ruta) { + Query query = this.getSession().createQuery("UPDATE RutaSecuencia SET activo = false, fecmodif = current_timestamp(), usuarioId= :usuario where ruta = :ruta"); + query.setParameter("usuario", UsuarioLogado.getUsuarioLogado().getUsuarioId()); + query.setParameter("ruta", ruta); + + return query.executeUpdate(); + } + + @Override + public boolean paradaSecuenciaValida(Ruta ruta, Parada origen, Parada destino) { + Criteria cOrigen = makeCriteria(); + cOrigen.add(Restrictions.eq("activo", Boolean.TRUE)); + cOrigen.add(Restrictions.eq("ruta", ruta)); + cOrigen.setProjection(Projections.property("numsecuencia")); + + Criteria cOrigenTramo = cOrigen.createCriteria("tramo"); + cOrigenTramo.add(Restrictions.eq("origem", origen)); + + + Short numSecOrigen = (Short) cOrigen.uniqueResult(); + + Criteria cDestino = makeCriteria(); + cDestino.add(Restrictions.eq("activo", Boolean.TRUE)); + cDestino.add(Restrictions.eq("ruta", ruta)); + cDestino.setProjection(Projections.property("numsecuencia")); + + Criteria cDestinoTramo = cDestino.createCriteria("tramo"); + cDestinoTramo.add(Restrictions.eq("origem", destino)); + + + Short numSecDestino = (Short) cDestino.uniqueResult(); + + // destino final da ruta + if (numSecDestino == null) { + cDestino = makeCriteria(); + cDestino.add(Restrictions.eq("activo", Boolean.TRUE)); + cDestino.add(Restrictions.eq("ruta", ruta)); + cDestino.setProjection(Projections.property("numsecuencia")); + + cDestinoTramo = cDestino.createCriteria("tramo"); + cDestinoTramo.add(Restrictions.eq("destino", destino)); + + + numSecDestino = (Short) cDestino.uniqueResult(); + } + + if ((numSecOrigen != null) && (numSecDestino != null)) { + return (numSecOrigen.compareTo(numSecDestino) < 0); + } + + return false; + } } diff --git a/src/com/rjconsultores/ventaboletos/service/DetDiagramaAutobusService.java b/src/com/rjconsultores/ventaboletos/service/DetDiagramaAutobusService.java index f83703675..1b2abbe3c 100644 --- a/src/com/rjconsultores/ventaboletos/service/DetDiagramaAutobusService.java +++ b/src/com/rjconsultores/ventaboletos/service/DetDiagramaAutobusService.java @@ -4,11 +4,23 @@ */ package com.rjconsultores.ventaboletos.service; +import java.util.List; + import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus; /** * * @author Administrador */ -public interface DetDiagramaAutobusService extends GenericService { +public interface DetDiagramaAutobusService { + + public List obtenerTodos(); + + public DetDiagramaAutobus obtenerID(Short id); + + public DetDiagramaAutobus suscribir(DetDiagramaAutobus entidad); + + public DetDiagramaAutobus actualizacion(DetDiagramaAutobus entidad); + + public void borrar(DetDiagramaAutobus entidad); } diff --git a/src/com/rjconsultores/ventaboletos/service/DiagramaAutobusService.java b/src/com/rjconsultores/ventaboletos/service/DiagramaAutobusService.java index feda5f371..faf601420 100644 --- a/src/com/rjconsultores/ventaboletos/service/DiagramaAutobusService.java +++ b/src/com/rjconsultores/ventaboletos/service/DiagramaAutobusService.java @@ -4,17 +4,27 @@ */ package com.rjconsultores.ventaboletos.service; -import com.rjconsultores.ventaboletos.entidad.DiagramaAutobus; import java.util.List; +import com.rjconsultores.ventaboletos.entidad.DiagramaAutobus; + /** * * @author Administrador */ -public interface DiagramaAutobusService extends GenericService { +public interface DiagramaAutobusService { - public List buscar(String descDiagrama, Short maxparados, - Short cantasientos); + public List obtenerTodos(); + + public DiagramaAutobus obtenerID(Short id); + + public DiagramaAutobus suscribir(DiagramaAutobus entidad); + + public DiagramaAutobus actualizacion(DiagramaAutobus entidad); + + public void borrar(DiagramaAutobus entidad); + + public List buscar(String descDiagrama, Short maxparados, Short cantasientos); public List buscar(String descDiagrama); } diff --git a/src/com/rjconsultores/ventaboletos/service/EsquemaAsientoService.java b/src/com/rjconsultores/ventaboletos/service/EsquemaAsientoService.java index f7d6e6689..1b8aa6786 100644 --- a/src/com/rjconsultores/ventaboletos/service/EsquemaAsientoService.java +++ b/src/com/rjconsultores/ventaboletos/service/EsquemaAsientoService.java @@ -4,17 +4,50 @@ */ package com.rjconsultores.ventaboletos.service; +import java.util.List; + import com.rjconsultores.ventaboletos.entidad.EsquemaAsiento; import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida; -import java.util.List; +import com.rjconsultores.ventaboletos.entidad.Parada; +import com.rjconsultores.ventaboletos.exception.BusinessException; /** * * @author Rafius */ -public interface EsquemaAsientoService extends GenericService { +public interface EsquemaAsientoService { + public EsquemaAsiento obtenerID(Integer id); + + public EsquemaAsiento suscribir(EsquemaAsiento entidad); + + public EsquemaAsiento actualizacion(EsquemaAsiento entidad); + + public void borrar(EsquemaAsiento entidad); + public List obtenerPorCorrida(EsquemaCorrida esquemaCorrida); public EsquemaAsiento obtenerPorCorridaeAsiento(EsquemaCorrida esquemaCorrida, String asiento); + + /*** + * Hace la configuración de bloqueo de asientos de acuerdo la origen informada.
+ * + * + * + * @param asiento - Indica los asientos. Ej.: 1,2,3,4 o 1-4, + * @param origenId + * @return + */ + public void bloqueoAsientoExclusivo(EsquemaCorrida esquemaCorrida,String asiento,Parada origen) throws BusinessException; + + /** + * Hace la configuración de ocupación de bloqueo de asientos de acuerdo con el tramo informado (origen - destino).
+ * + * @param asiento- Indica los asientos. Ej.: 1,2,3,4 o 1-4, + * @param origenId + * @param destinoId + * @param motivoOcupacion + * @return + */ + public void bloqueoAsientoOcupacion(EsquemaCorrida esquemaCorrida,String asiento,Parada origen,Parada destino,String motivoOcupacion) throws BusinessException; } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/DiagramaAutobusServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/DiagramaAutobusServiceImpl.java index fa435e434..41dea8b55 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/DiagramaAutobusServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/DiagramaAutobusServiceImpl.java @@ -4,16 +4,18 @@ */ package com.rjconsultores.ventaboletos.service.impl; +import java.util.Calendar; +import java.util.List; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + import com.rjconsultores.ventaboletos.dao.DiagramaAutobusDAO; import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus; import com.rjconsultores.ventaboletos.entidad.DiagramaAutobus; import com.rjconsultores.ventaboletos.service.DiagramaAutobusService; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; -import java.util.Calendar; -import java.util.List; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; /** * @@ -67,8 +69,7 @@ public class DiagramaAutobusServiceImpl implements DiagramaAutobusService { diagramaAutobusDAO.actualizacion(entidad); } - public List buscar(String descDiagrama, Short maxparados, - Short cantasientos) { + public List buscar(String descDiagrama, Short maxparados,Short cantasientos) { return diagramaAutobusDAO.buscar(descDiagrama, maxparados, cantasientos); } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/EsquemaAsientoServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/EsquemaAsientoServiceImpl.java index e47bb4c4b..aa2b70bc8 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/EsquemaAsientoServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/EsquemaAsientoServiceImpl.java @@ -4,67 +4,220 @@ */ package com.rjconsultores.ventaboletos.service.impl; -import com.rjconsultores.ventaboletos.dao.EsquemaAsientoDAO; -import com.rjconsultores.ventaboletos.entidad.EsquemaAsiento; -import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida; -import com.rjconsultores.ventaboletos.service.EsquemaAsientoService; -import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; +import java.util.ArrayList; import java.util.Calendar; import java.util.List; + +import org.apache.commons.lang.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import com.rjconsultores.ventaboletos.dao.EsquemaAsientoDAO; +import com.rjconsultores.ventaboletos.dao.RutaSecuenciaDAO; +import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus; +import com.rjconsultores.ventaboletos.entidad.DiagramaAutobus; +import com.rjconsultores.ventaboletos.entidad.EsquemaAsiento; +import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida; +import com.rjconsultores.ventaboletos.entidad.Parada; +import com.rjconsultores.ventaboletos.exception.BusinessException; +import com.rjconsultores.ventaboletos.service.DiagramaAutobusService; +import com.rjconsultores.ventaboletos.service.EsquemaAsientoService; +import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; + /** - * + * * @author Rafius */ @Service("esquemaAsientoService") public class EsquemaAsientoServiceImpl implements EsquemaAsientoService { - @Autowired - private EsquemaAsientoDAO esquemaAsientoDAO; + private static Logger log = LoggerFactory.getLogger(EsquemaAsientoServiceImpl.class); + private static final String BLOQUEO_EXCLUSIVO = "BLOQUEO_EXCLUSIVO"; + private static final String BLOQUEO_OCUPACION = "BLOQUEO_OCUPACION"; + @Autowired + private EsquemaAsientoDAO esquemaAsientoDAO; + @Autowired + private RutaSecuenciaDAO rutaSecuenciaDAO; + @Autowired + private DiagramaAutobusService diagramaAutobusService; - public List obtenerTodos() { - return esquemaAsientoDAO.obtenerTodos(); - } + public EsquemaAsiento obtenerID(Integer id) { + return esquemaAsientoDAO.obtenerID(id); + } - public EsquemaAsiento obtenerID(Integer id) { - return esquemaAsientoDAO.obtenerID(id); - } + @Transactional + public EsquemaAsiento suscribir(EsquemaAsiento entidad) { + entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + entidad.setFecmodif(Calendar.getInstance().getTime()); + entidad.setActivo(Boolean.TRUE); - @Transactional - public EsquemaAsiento suscribir(EsquemaAsiento entidad) { - entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - entidad.setFecmodif(Calendar.getInstance().getTime()); - entidad.setActivo(Boolean.TRUE); + return esquemaAsientoDAO.suscribir(entidad); + } - return esquemaAsientoDAO.suscribir(entidad); - } + @Transactional + public EsquemaAsiento actualizacion(EsquemaAsiento entidad) { + entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + entidad.setFecmodif(Calendar.getInstance().getTime()); + entidad.setActivo(Boolean.TRUE); - @Transactional - public EsquemaAsiento actualizacion(EsquemaAsiento entidad) { - entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - entidad.setFecmodif(Calendar.getInstance().getTime()); - entidad.setActivo(Boolean.TRUE); + return esquemaAsientoDAO.actualizacion(entidad); + } - return esquemaAsientoDAO.actualizacion(entidad); - } + @Transactional + public void borrar(EsquemaAsiento entidad) { + entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + entidad.setFecmodif(Calendar.getInstance().getTime()); + entidad.setActivo(Boolean.FALSE); - @Transactional - public void borrar(EsquemaAsiento entidad) { - entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); - entidad.setFecmodif(Calendar.getInstance().getTime()); - entidad.setActivo(Boolean.FALSE); + esquemaAsientoDAO.actualizacion(entidad); + } - esquemaAsientoDAO.actualizacion(entidad); - } + public List obtenerPorCorrida(EsquemaCorrida esquemaCorrida) { + return esquemaAsientoDAO.obtenerPorCorrida(esquemaCorrida); + } - public List obtenerPorCorrida(EsquemaCorrida esquemaCorrida) { - return esquemaAsientoDAO.obtenerPorCorrida(esquemaCorrida); - } + public EsquemaAsiento obtenerPorCorridaeAsiento(EsquemaCorrida esquemaCorrida, String asiento) { + return esquemaAsientoDAO.obtenerPorCorridaeAsiento(esquemaCorrida, asiento); + } - public EsquemaAsiento obtenerPorCorridaeAsiento(EsquemaCorrida esquemaCorrida, String asiento) { - return esquemaAsientoDAO.obtenerPorCorridaeAsiento(esquemaCorrida, asiento); - } + @Transactional(rollbackFor=BusinessException.class) + @Override + public void bloqueoAsientoExclusivo(EsquemaCorrida esquemaCorrida, String strAsiento, Parada origen) throws BusinessException { + + if (origen == null) { + throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.origenObligatoria"); + } + + + hacerBloqueo(BLOQUEO_EXCLUSIVO, esquemaCorrida, strAsiento, origen, null, null); + } + + private boolean hacerBloqueo(String tipoBloqueo,EsquemaCorrida esquemaCorrida, String strAsiento, Parada origen, Parada destino, String motivoOcupacion) throws BusinessException { + List asientos = cargarAsientos(strAsiento); + + DiagramaAutobus da = diagramaAutobusService.obtenerID(esquemaCorrida.getRolOperativo().getDiagramaAutobus().getDiagramaautobusId()); + + for (String asiento : asientos) { + + boolean vende = true; + List listDda = da.getDetDiagramaAutobusList(); + for (DetDiagramaAutobus dd : listDda) { + if (dd.getAsiento().equals(asiento)) { + if (!dd.getVendible()) { + vende = false; + } + } + } + if (vende) { + EsquemaAsiento es = new EsquemaAsiento(); + es.setActivo(Boolean.TRUE); + es.setFecmodif(Calendar.getInstance().getTime()); + es.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId()); + es.setNumasiento(asiento.toString()); + + if (tipoBloqueo.equals(BLOQUEO_EXCLUSIVO)){ + es.setIndvendible(Boolean.TRUE); + es.setParada(origen); + }else{ + es.setIndvendible(Boolean.FALSE); + es.setParada(origen); + es.setDestino(destino); + es.setMotivobloqueo(motivoOcupacion); + } + + es.setEsquemaCorrida(esquemaCorrida); + + EsquemaAsiento esquemaAsientoBusqueda = obtenerPorCorridaeAsiento(esquemaCorrida, asiento); + if (esquemaAsientoBusqueda.getEsquemaasientoId() == null) { + es = suscribir(es); + + //validação extra para garantir que salvou corretamente + if (tipoBloqueo.equals(BLOQUEO_EXCLUSIVO)){ + + if ( !(es.getIndvendible() && (es.getParada() != null) && (es.getDestino() == null))){ + throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.validacionGrabacion"); + } + + }else{ + //validação extra para garantir que salvou corretamente + if ( !(!es.getIndvendible() && (es.getParada() != null) && (es.getDestino() != null))){ + throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.validacionGrabacion"); + } + } + } else { + throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.poltronaJahConfigurada",new Object[]{asiento}); + } + + } else { + throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.poltronaNoVendible",new Object[]{asiento}); + } + } + + return true; + } + + @Transactional(rollbackFor=BusinessException.class) + @Override + public void bloqueoAsientoOcupacion(EsquemaCorrida esquemaCorrida, String strAsiento, Parada origen, Parada destino, String motivoOcupacion) throws BusinessException { + + if (origen == null) { + throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.origenObligatoria"); + } + if (destino == null) { + throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.destinoObligatoria"); + } + if (StringUtils.isBlank(motivoOcupacion)) { + throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.motivo"); + } + + if (!rutaSecuenciaDAO.paradaSecuenciaValida(esquemaCorrida.getRuta(), origen, destino)){ + throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.tramo"); + } + + + hacerBloqueo(BLOQUEO_OCUPACION, esquemaCorrida, strAsiento, origen, destino, motivoOcupacion); + } + + /** + * Hace la conversion de la string strAsientos en una lista de asientos + * válidos
+ * + * @param strAsientos + * @return + * @throws BusinessException + */ + private List cargarAsientos(String strAsientos) throws BusinessException { + List todosAsientos = new ArrayList(); + + try { + String asientos[] = strAsientos.split(","); + + for (int i = 0; i < asientos.length; i++) { + if (asientos[i].contains("-")) { + String intervalo[] = asientos[i].split("-"); + Integer ini = Integer.parseInt(intervalo[0]); + Integer fim = Integer.parseInt(intervalo[1]); + + while (ini <= fim) { + todosAsientos.add(ini.toString()); + ini++; + } + } else { + Integer.parseInt(asientos[i]);//para validar + todosAsientos.add(asientos[i]); + } + } + } catch (NumberFormatException t) { + throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.invalido"); + } catch (Throwable t) { + log.error("", t); + + throw new BusinessException("editarConfiguracionCorridaAsientoController.MSG.invalido"); + } + + return todosAsientos; + } }