package com.rjconsultores.ventaboletos.dao.hibernate; import java.util.List; import org.apache.log4j.Logger; import org.hibernate.Query; import org.hibernate.SessionFactory; import org.hibernate.transform.Transformers; import org.hibernate.type.BooleanType; import org.hibernate.type.LongType; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Repository; import org.springframework.transaction.annotation.Transactional; import com.rjconsultores.ventaboletos.dao.EmbarcadaDispOperadorDAO; import com.rjconsultores.ventaboletos.entidad.EmbarcadaDispOperador; @Repository("embarcadaDispOperadorDAO") public class EmbarcadaDispOperadorHibernateDAO extends GenericHibernateDAO implements EmbarcadaDispOperadorDAO { private static final Logger log = Logger.getLogger(EmbarcadaDispOperadorHibernateDAO.class); @Autowired public EmbarcadaDispOperadorHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) { setSessionFactory(factory); } @SuppressWarnings("unchecked") @Override public List buscarEmbarcadaDispOperadorPorPuntoVenta(Long puntoVentaId) { StringBuilder sQuery = new StringBuilder(); sQuery.append("select EMBARCADADISPOPERADOR_ID as embarcadaDispOperador, ") .append(" DISPOSITIVOEMBARCADA_ID as dispositivoEmbarcadaId, ") .append(" USUARIO_ID as usuarioId, ") .append(" PUNTOVENTA_ID as puntoVentaId, ") .append(" ACTIVO as activo ") .append(" from embarcada_disp_operador embdispop ") .append(" where ") .append(" embdispop.puntoventa_id = :puntoVentaId ") .append(" and embdispop.activo = 1 "); Query qr = getSession().createSQLQuery(sQuery.toString()) .addScalar("embarcadaDispOperador", new LongType()) .addScalar("dispositivoEmbarcadaId", new LongType()) .addScalar("usuarioId", new LongType()) .addScalar("puntoVentaId", new LongType()) .addScalar("activo", new BooleanType()) .setResultTransformer(Transformers.aliasToBean(EmbarcadaDispOperador.class)); qr.setLong("puntoVentaId", puntoVentaId); return (List) qr.list(); } @Transactional @Override public boolean removerListEmbarcadaDispOperador(List embarcadaDisOperadorList) { try { for (EmbarcadaDispOperador embarcadaDispOperador : embarcadaDisOperadorList) { StringBuilder sQuery = new StringBuilder(); sQuery.append("delete ") .append(" from embarcada_disp_operador embdispop ") .append(" where ") .append(" embdispop.usuario_id = :usuarioId ") .append(" and embdispop.dispositivoembarcada_id = :dispositivoEmbarcadaId ") .append(" and embdispop.activo = 1 "); Query qr = getSession().createSQLQuery(sQuery.toString()); qr.setLong("usuarioId", embarcadaDispOperador.getUsuarioId()); qr.setLong("dispositivoEmbarcadaId", embarcadaDispOperador.getDispositivoEmbarcadaId()); qr.executeUpdate(); } } catch (Exception e) { log.error("Erro ao deletar dispositivos usuários"); return false; } return true; } @SuppressWarnings("unchecked") @Override public List buscarEmbarcadaDispOperadorPorDispositivo(Long dispositivoEmbarcadaId) { StringBuilder sQuery = new StringBuilder(); sQuery.append("select embdispop.EMBARCADADISPOPERADOR_ID as embarcadaDispOperador, ") .append(" embdispop.DISPOSITIVOEMBARCADA_ID as dispositivoEmbarcadaId, ") .append(" embdispop.USUARIO_ID as usuarioId, ") .append(" embdispop.PUNTOVENTA_ID as puntoVentaId, ") .append(" embdispop.ACTIVO as activo ") .append(" from embarcada_disp_operador embdispop ") .append(" JOIN OPERADOR_EMBARCADA opeEmb ON (embdispop.USUARIO_ID = opeEmb.USUARIO_ID) ") .append(" where ") .append(" embdispop.dispositivoembarcada_id = :dispositivoEmbarcadaId ") .append(" and embdispop.activo = 1 ") .append(" and opeEmb.activo = 1 "); Query qr = getSession().createSQLQuery(sQuery.toString()) .addScalar("embarcadaDispOperador", new LongType()) .addScalar("dispositivoEmbarcadaId", new LongType()) .addScalar("usuarioId", new LongType()) .addScalar("puntoVentaId", new LongType()) .addScalar("activo", new BooleanType()) .setResultTransformer(Transformers.aliasToBean(EmbarcadaDispOperador.class)); qr.setLong("dispositivoEmbarcadaId", dispositivoEmbarcadaId); return (List) qr.list(); } }