AdmMono/src/com/rjconsultores/ventaboletos/dao/hibernate/ConexionRutaConfHibernateDA...

135 lines
5.9 KiB
Java

package com.rjconsultores.ventaboletos.dao.hibernate;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.MatchMode;
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 com.rjconsultores.ventaboletos.dao.ConexionRutaConfDAO;
import com.rjconsultores.ventaboletos.entidad.ConexionRutaConf;
@Repository("conexionRutaConfDAO")
public class ConexionRutaConfHibernateDAO extends GenericHibernateDAO<ConexionRutaConf, Integer> implements ConexionRutaConfDAO {
@Autowired
public ConexionRutaConfHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
setSessionFactory(factory);
}
@Override
public List<ConexionRutaConf> buscarPorDescricao(String descricao) {
Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("activo", Boolean.TRUE));
c.add(Restrictions.ilike("descricao", descricao, MatchMode.ANYWHERE));
return c.list();
}
@Override
public List<ConexionRutaConf> obtenerTodosActivo() {
Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("activo", Boolean.TRUE));
return c.list();
}
@Override
public void excluirConfiguracao(ConexionRutaConf conexion, Integer usuarioId, boolean excluirConexionRutaConf) {
List<String> comandos = carregarComandosInativarConfiguracao(excluirConexionRutaConf);
for (String comando : comandos) {
Query qr = getSession().createSQLQuery(comando);
qr.setParameter("usuarioId", usuarioId);
qr.setParameter("conexionrutaconfId", conexion.getConexionRutaConfId());
qr.setParameter("fecmodif", Calendar.getInstance().getTime());
qr.executeUpdate();
}
}
private List<String> carregarComandosInativarConfiguracao(boolean excluirConexionRutaConf) {
List<String> comandos = new ArrayList<String>(0);
StringBuilder sb = new StringBuilder();
if(excluirConexionRutaConf) {
sb.append("update conexion_ruta_conf ")
.append("set activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif ")
.append("where conexionrutaconf_id = :conexionrutaconfId");
comandos.add(sb.toString());
}
sb = new StringBuilder();
sb.append("update conexion_ruta_ctrl ")
.append("set activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif ")
.append("where conexionrutaconf_id = :conexionrutaconfId");
comandos.add(sb.toString());
sb = new StringBuilder();
sb.append("update conexion_ruta_excepcion_ptovta ")
.append("set activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif ")
.append("where conexionrutaconf_id = :conexionrutaconfId");
comandos.add(sb.toString());
sb = new StringBuilder();
sb.append("update conexion_rutaexcepciontipopta ")
.append("set activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif ")
.append("where conexionrutaconf_id = :conexionrutaconfId");
comandos.add(sb.toString());
sb = new StringBuilder();
sb.append("merge into conexion_ruta_tramo_ctrl c ")
.append("using ( ")
.append("select c1.conexionrutatramoctrl_id ")
.append("from conexion_ruta_tramo_ctrl c1 ")
.append("join conexion_ruta_ctrl c2 on c1.conexionrutactrl_id = c2.conexionrutactrl_id ")
.append("where c2.conexionrutaconf_id = :conexionrutaconfId and c1.activo = 1) t on (t.conexionrutatramoctrl_id = c.conexionrutatramoctrl_id) ")
.append("when matched then update set c.activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif ");
comandos.add(sb.toString());
sb = new StringBuilder();
sb.append("merge into conexion c ")
.append("using ( ")
.append("select c.conexion_id ")
.append("from conexion c ")
.append("join conexion_ruta_tramo_ctrl c1 on c.conexionrutatramoctrl_id = c1.conexionrutatramoctrl_id ")
.append("join conexion_ruta_ctrl c2 on c1.conexionrutactrl_id = c2.conexionrutactrl_id ")
.append("where c2.conexionrutaconf_id = :conexionrutaconfId and c.activo = 1) t on (t.conexion_id = c.conexion_id) ")
.append("when matched then update set c.activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif");
comandos.add(sb.toString());
sb = new StringBuilder();
sb.append("merge into conexion_ctrl c ")
.append("using ( ")
.append("select distinct c.conexionctrl_id ")
.append("from conexion_ctrl c ")
.append("join conexion c3 on c3.conexionctrl_id = c.conexionctrl_id ")
.append("join conexion_ruta_tramo_ctrl c1 on c3.conexionrutatramoctrl_id = c1.conexionrutatramoctrl_id ")
.append("join conexion_ruta_ctrl c2 on c1.conexionrutactrl_id = c2.conexionrutactrl_id ")
.append("where c2.conexionrutaconf_id = :conexionrutaconfId and c.activo = 1) t on (t.conexionctrl_id = c.conexionctrl_id) ")
.append("when matched then update set c.activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif");
comandos.add(sb.toString());
sb = new StringBuilder();
sb.append("merge into conexion_conf c ")
.append("using ( ")
.append("select distinct c.conexionconf_id ")
.append("from conexion_conf c ")
.append("join conexion_ctrl c4 on c4.conexionctrl_id = c.conexionctrl_id ")
.append("join conexion c3 on c3.conexionctrl_id = c4.conexionctrl_id ")
.append("join conexion_ruta_tramo_ctrl c1 on c3.conexionrutatramoctrl_id = c1.conexionrutatramoctrl_id ")
.append("join conexion_ruta_ctrl c2 on c1.conexionrutactrl_id = c2.conexionrutactrl_id ")
.append("where c2.conexionrutaconf_id = :conexionrutaconfId and c.activo = 1) t on (t.conexionconf_id = c.conexionconf_id) ")
.append("when matched then update set c.activo = 0, usuario_id = :usuarioId, fecmodif = :fecmodif ");
comandos.add(sb.toString());
return comandos;
}
}