gleimar 2013-04-01 22:11:01 +00:00
parent e23c010fd8
commit a30cdadab1
10 changed files with 373 additions and 84 deletions

View File

@ -4,11 +4,25 @@
*/ */
package com.rjconsultores.ventaboletos.dao; package com.rjconsultores.ventaboletos.dao;
import java.util.List;
import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus; import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus;
/** /**
* *
* @author Administrador * @author Administrador
*/ */
public interface DetDiagramaAutobusDAO extends GenericDAO<DetDiagramaAutobus, Short> { public interface DetDiagramaAutobusDAO {
public List<DetDiagramaAutobus> 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);
} }

View File

@ -4,9 +4,11 @@
*/ */
package com.rjconsultores.ventaboletos.dao; 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.Ruta;
import com.rjconsultores.ventaboletos.entidad.RutaSecuencia; import com.rjconsultores.ventaboletos.entidad.RutaSecuencia;
import java.util.List;
/** /**
* *
@ -15,5 +17,17 @@ import java.util.List;
public interface RutaSecuenciaDAO extends GenericDAO<RutaSecuencia, Integer> { public interface RutaSecuenciaDAO extends GenericDAO<RutaSecuencia, Integer> {
public List<RutaSecuencia> buscarSecuenciaOrdenado(Ruta ruta); public List<RutaSecuencia> buscarSecuenciaOrdenado(Ruta ruta);
public int borrarSecuencias(Ruta ruta); public int borrarSecuencias(Ruta ruta);
/**
* Hace la validación de la origen y destino dentro de la secuencia de la ruta. <br/>
*
* La parada de origen no puede tener el numero de secuencia mayor o igual a la parada de destino<br/>
* @param ruta
* @param origen
* @param destino
* @return
*/
public boolean paradaSecuenciaValida(Ruta ruta, Parada origen,Parada destino);
} }

View File

@ -4,9 +4,8 @@
*/ */
package com.rjconsultores.ventaboletos.dao.hibernate; package com.rjconsultores.ventaboletos.dao.hibernate;
import com.rjconsultores.ventaboletos.dao.DetDiagramaAutobusDAO;
import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus;
import java.util.List; import java.util.List;
import org.hibernate.Criteria; import org.hibernate.Criteria;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions; 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.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository; import org.springframework.stereotype.Repository;
import com.rjconsultores.ventaboletos.dao.DetDiagramaAutobusDAO;
import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus;
/** /**
* *
* @author Administrador * @author Administrador
*/ */
@Repository("detDiagramaAutobusDAO") @Repository("detDiagramaAutobusDAO")
public class DetDiagramaAutobusHibernateDAO extends GenericHibernateDAO<DetDiagramaAutobus, Short> public class DetDiagramaAutobusHibernateDAO extends GenericHibernateDAO<DetDiagramaAutobus, Short> implements DetDiagramaAutobusDAO {
implements DetDiagramaAutobusDAO {
@Autowired @Autowired
public DetDiagramaAutobusHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { public DetDiagramaAutobusHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {

View File

@ -43,9 +43,13 @@ public class EsquemaAsientoHibernateDAO extends GenericHibernateDAO<EsquemaAsien
c.add(Restrictions.eq("activo", Boolean.TRUE)); c.add(Restrictions.eq("activo", Boolean.TRUE));
EsquemaAsiento ea = new EsquemaAsiento(); EsquemaAsiento ea = new EsquemaAsiento();
if (c.list().size() > 0) {
ea = (EsquemaAsiento) c.uniqueResult(); List<EsquemaAsiento> lsAsientos = c.list();
if (!lsAsientos.isEmpty()) {
ea = lsAsientos.get(0);
} }
return ea; return ea;
} }
} }

View File

@ -5,6 +5,7 @@
package com.rjconsultores.ventaboletos.dao.hibernate; package com.rjconsultores.ventaboletos.dao.hibernate;
import com.rjconsultores.ventaboletos.dao.RutaSecuenciaDAO; import com.rjconsultores.ventaboletos.dao.RutaSecuenciaDAO;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Ruta; import com.rjconsultores.ventaboletos.entidad.Ruta;
import com.rjconsultores.ventaboletos.entidad.RutaSecuencia; import com.rjconsultores.ventaboletos.entidad.RutaSecuencia;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
@ -13,6 +14,7 @@ import java.util.List;
import org.hibernate.Criteria; import org.hibernate.Criteria;
import org.hibernate.Query; import org.hibernate.Query;
import org.hibernate.SessionFactory; import org.hibernate.SessionFactory;
import org.hibernate.criterion.Projections;
import org.hibernate.criterion.Restrictions; import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
@ -20,34 +22,79 @@ import org.springframework.stereotype.Repository;
import org.hibernate.criterion.Order; import org.hibernate.criterion.Order;
/** /**
* *
* @author Rafius * @author Rafius
*/ */
@Repository("rutaSecuenciaDAO") @Repository("rutaSecuenciaDAO")
public class RutaSecuenciaHibernateDAO extends GenericHibernateDAO<RutaSecuencia, Integer> public class RutaSecuenciaHibernateDAO extends GenericHibernateDAO<RutaSecuencia, Integer>
implements RutaSecuenciaDAO { implements RutaSecuenciaDAO {
@Autowired @Autowired
public RutaSecuenciaHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { public RutaSecuenciaHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
setSessionFactory(factory); setSessionFactory(factory);
} }
public List<RutaSecuencia> buscarSecuenciaOrdenado(Ruta ruta) { public List<RutaSecuencia> buscarSecuenciaOrdenado(Ruta ruta) {
Criteria c = getSession().createCriteria(getPersistentClass()); Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("activo", Boolean.TRUE)); c.add(Restrictions.eq("activo", Boolean.TRUE));
c.add(Restrictions.eq("ruta", ruta)); 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");
public int borrarSecuencias(Ruta ruta) { query.setParameter("usuario", UsuarioLogado.getUsuarioLogado().getUsuarioId());
Query query = this.getSession().createQuery("UPDATE RutaSecuencia SET activo = false, fecmodif = current_timestamp(), usuarioId= :usuario where ruta = :ruta"); query.setParameter("ruta", ruta);
query.setParameter("usuario", UsuarioLogado.getUsuarioLogado().getUsuarioId());
query.setParameter("ruta", ruta); return query.executeUpdate();
}
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;
}
} }

View File

@ -4,11 +4,23 @@
*/ */
package com.rjconsultores.ventaboletos.service; package com.rjconsultores.ventaboletos.service;
import java.util.List;
import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus; import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus;
/** /**
* *
* @author Administrador * @author Administrador
*/ */
public interface DetDiagramaAutobusService extends GenericService<DetDiagramaAutobus, Short> { public interface DetDiagramaAutobusService {
public List<DetDiagramaAutobus> obtenerTodos();
public DetDiagramaAutobus obtenerID(Short id);
public DetDiagramaAutobus suscribir(DetDiagramaAutobus entidad);
public DetDiagramaAutobus actualizacion(DetDiagramaAutobus entidad);
public void borrar(DetDiagramaAutobus entidad);
} }

View File

@ -4,17 +4,27 @@
*/ */
package com.rjconsultores.ventaboletos.service; package com.rjconsultores.ventaboletos.service;
import com.rjconsultores.ventaboletos.entidad.DiagramaAutobus;
import java.util.List; import java.util.List;
import com.rjconsultores.ventaboletos.entidad.DiagramaAutobus;
/** /**
* *
* @author Administrador * @author Administrador
*/ */
public interface DiagramaAutobusService extends GenericService<DiagramaAutobus, Short> { public interface DiagramaAutobusService {
public List<DiagramaAutobus> buscar(String descDiagrama, Short maxparados, public List<DiagramaAutobus> obtenerTodos();
Short cantasientos);
public DiagramaAutobus obtenerID(Short id);
public DiagramaAutobus suscribir(DiagramaAutobus entidad);
public DiagramaAutobus actualizacion(DiagramaAutobus entidad);
public void borrar(DiagramaAutobus entidad);
public List<DiagramaAutobus> buscar(String descDiagrama, Short maxparados, Short cantasientos);
public List<DiagramaAutobus> buscar(String descDiagrama); public List<DiagramaAutobus> buscar(String descDiagrama);
} }

View File

@ -4,17 +4,50 @@
*/ */
package com.rjconsultores.ventaboletos.service; package com.rjconsultores.ventaboletos.service;
import java.util.List;
import com.rjconsultores.ventaboletos.entidad.EsquemaAsiento; import com.rjconsultores.ventaboletos.entidad.EsquemaAsiento;
import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida; import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida;
import java.util.List; import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.exception.BusinessException;
/** /**
* *
* @author Rafius * @author Rafius
*/ */
public interface EsquemaAsientoService extends GenericService<EsquemaAsiento, Integer> { 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<EsquemaAsiento> obtenerPorCorrida(EsquemaCorrida esquemaCorrida); public List<EsquemaAsiento> obtenerPorCorrida(EsquemaCorrida esquemaCorrida);
public EsquemaAsiento obtenerPorCorridaeAsiento(EsquemaCorrida esquemaCorrida, String asiento); public EsquemaAsiento obtenerPorCorridaeAsiento(EsquemaCorrida esquemaCorrida, String asiento);
/***
* Hace la configuración de bloqueo de asientos de acuerdo la origen informada. <br/>
*
*
*
* @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). <br/>
*
* @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;
} }

View File

@ -4,16 +4,18 @@
*/ */
package com.rjconsultores.ventaboletos.service.impl; 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.dao.DiagramaAutobusDAO;
import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus; import com.rjconsultores.ventaboletos.entidad.DetDiagramaAutobus;
import com.rjconsultores.ventaboletos.entidad.DiagramaAutobus; import com.rjconsultores.ventaboletos.entidad.DiagramaAutobus;
import com.rjconsultores.ventaboletos.service.DiagramaAutobusService; import com.rjconsultores.ventaboletos.service.DiagramaAutobusService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; 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); diagramaAutobusDAO.actualizacion(entidad);
} }
public List<DiagramaAutobus> buscar(String descDiagrama, Short maxparados, public List<DiagramaAutobus> buscar(String descDiagrama, Short maxparados,Short cantasientos) {
Short cantasientos) {
return diagramaAutobusDAO.buscar(descDiagrama, maxparados, cantasientos); return diagramaAutobusDAO.buscar(descDiagrama, maxparados, cantasientos);
} }

View File

@ -4,67 +4,220 @@
*/ */
package com.rjconsultores.ventaboletos.service.impl; package com.rjconsultores.ventaboletos.service.impl;
import com.rjconsultores.ventaboletos.dao.EsquemaAsientoDAO; import java.util.ArrayList;
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.Calendar; import java.util.Calendar;
import java.util.List; 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.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;
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 * @author Rafius
*/ */
@Service("esquemaAsientoService") @Service("esquemaAsientoService")
public class EsquemaAsientoServiceImpl implements EsquemaAsientoService { public class EsquemaAsientoServiceImpl implements EsquemaAsientoService {
@Autowired private static Logger log = LoggerFactory.getLogger(EsquemaAsientoServiceImpl.class);
private EsquemaAsientoDAO esquemaAsientoDAO; 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<EsquemaAsiento> obtenerTodos() { public EsquemaAsiento obtenerID(Integer id) {
return esquemaAsientoDAO.obtenerTodos(); return esquemaAsientoDAO.obtenerID(id);
} }
public EsquemaAsiento obtenerID(Integer id) { @Transactional
return esquemaAsientoDAO.obtenerID(id); public EsquemaAsiento suscribir(EsquemaAsiento entidad) {
} entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
entidad.setFecmodif(Calendar.getInstance().getTime());
entidad.setActivo(Boolean.TRUE);
@Transactional return esquemaAsientoDAO.suscribir(entidad);
public EsquemaAsiento suscribir(EsquemaAsiento entidad) { }
entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
entidad.setFecmodif(Calendar.getInstance().getTime());
entidad.setActivo(Boolean.TRUE);
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 return esquemaAsientoDAO.actualizacion(entidad);
public EsquemaAsiento actualizacion(EsquemaAsiento entidad) { }
entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
entidad.setFecmodif(Calendar.getInstance().getTime());
entidad.setActivo(Boolean.TRUE);
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 esquemaAsientoDAO.actualizacion(entidad);
public void borrar(EsquemaAsiento entidad) { }
entidad.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
entidad.setFecmodif(Calendar.getInstance().getTime());
entidad.setActivo(Boolean.FALSE);
esquemaAsientoDAO.actualizacion(entidad); public List<EsquemaAsiento> obtenerPorCorrida(EsquemaCorrida esquemaCorrida) {
} return esquemaAsientoDAO.obtenerPorCorrida(esquemaCorrida);
}
public List<EsquemaAsiento> obtenerPorCorrida(EsquemaCorrida esquemaCorrida) { public EsquemaAsiento obtenerPorCorridaeAsiento(EsquemaCorrida esquemaCorrida, String asiento) {
return esquemaAsientoDAO.obtenerPorCorrida(esquemaCorrida); return esquemaAsientoDAO.obtenerPorCorridaeAsiento(esquemaCorrida, asiento);
} }
public EsquemaAsiento obtenerPorCorridaeAsiento(EsquemaCorrida esquemaCorrida, String asiento) { @Transactional(rollbackFor=BusinessException.class)
return esquemaAsientoDAO.obtenerPorCorridaeAsiento(esquemaCorrida, asiento); @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<String> asientos = cargarAsientos(strAsiento);
DiagramaAutobus da = diagramaAutobusService.obtenerID(esquemaCorrida.getRolOperativo().getDiagramaAutobus().getDiagramaautobusId());
for (String asiento : asientos) {
boolean vende = true;
List<DetDiagramaAutobus> 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<br/>
*
* @param strAsientos
* @return
* @throws BusinessException
*/
private List<String> cargarAsientos(String strAsientos) throws BusinessException {
List<String> todosAsientos = new ArrayList<String>();
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;
}
} }