package com.rjconsultores.ventaboletos.dao.hibernate; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; import org.apache.log4j.Logger; import org.hibernate.Criteria; import org.hibernate.SessionFactory; 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.AidfDAO; import com.rjconsultores.ventaboletos.entidad.Aidf; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.vo.aidf.AidfVo; @Repository("aidfDAO") public class AidfHibernateDAO extends GenericHibernateDAO implements AidfDAO{ private static Logger log = Logger.getLogger(AidfHibernateDAO.class); @Autowired public AidfHibernateDAO( @Qualifier("sessionFactory") SessionFactory factory) { setSessionFactory(factory); } @Override public List obtenerTodos() { Criteria c = getSession().createCriteria(getPersistentClass()); c.add(Restrictions.eq("activo", Boolean.TRUE)); return (List)c.list(); } @Override public List obtenerAidfFromSerieDocfiscal(String serie, String docfiscal, Connection conn){ PreparedStatement pstmt = null; ResultSet rs = null; StringBuilder sb = new StringBuilder(); sb.append(" select x.AIDF_ID, "); sb.append(" x.ESTADO_ID, "); sb.append(" REGEXP_REPLACE( x.docfiscal ,'[^[:alnum:]'' '']', NULL) , "); sb.append(" x.ACFISCAL, "); sb.append(" x.SERIE, "); sb.append(" x.FORMINICIAL, "); sb.append(" x.FORMFINAL, "); sb.append(" x.FECADQUISICION, "); sb.append(" x.FECVENCIMIENTO, "); sb.append(" x.INSCESTADUAL, "); sb.append(" x.EMPRESA_ID, "); sb.append(" x.AIDFESP_ID, "); sb.append(" x.AIDFTIPO_ID, "); sb.append(" x.ACTIVO, "); sb.append(" x.FECMODIF, "); sb.append(" x.USUARIO_ID, "); sb.append(" x.SUBSERIE, "); sb.append(" x.CNPJ, "); sb.append(" x.TIPOVALIDAVENTA "); sb.append(" from AIDF x where x.SERIE like '"+serie+"' "); sb.append(" and REGEXP_REPLACE( x.docfiscal ,'[^[:alnum:]'' '']', NULL) like '"+docfiscal+"' "); sb.append(" and x.activo = 1 "); List ls = new ArrayList(); try{ pstmt = conn.prepareStatement(sb.toString()); rs = pstmt.executeQuery(); while (rs.next()){ AidfVo a = new AidfVo(); a.setAidfId(rs.getLong(1)); a.setDocfiscal(rs.getString(3)); a.setSerie(rs.getString(5)); a.setForminicial(rs.getString(6)); a.setFormfinal(rs.getString(7)); ls.add(a); } } catch (Exception e){ log.error("", e); } finally { try { rs.close(); } catch (Exception ignore) { log.error("", ignore); } try { pstmt.close(); } catch (Exception ignore) { log.error("", ignore); } } return ls; }; @Override public List buscaAidfsPorEmpresas(List empresas) { Criteria c = getSession().createCriteria(getPersistentClass()); c.add(Restrictions.eq("activo", Boolean.TRUE)); c.add(Restrictions.in("empresa", empresas)); return (List)c.list(); } }