From b81e10558a99d0a339c400ac987814073b01af87 Mon Sep 17 00:00:00 2001 From: emerson Date: Tue, 25 Jun 2019 17:44:52 +0000 Subject: [PATCH] =?UTF-8?q?fixes=20bug#0014751=20dev:=20thiago=20qua:=20Co?= =?UTF-8?q?rre=C3=A7=C3=A3o=20efetuada.=20Foi=20feito=20uma=20altera=C3=A7?= =?UTF-8?q?=C3=A3o=20para=20que=20as=20sequences=20n=C3=A3o=20existentes?= =?UTF-8?q?=20no=20banco=20sejam=20criadas=20quando=20a=20empresa=20for=20?= =?UTF-8?q?salva=20no=20cadastro.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@94993 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../dao/hibernate/EmpresaHibernateDAO.java | 86 ++++++++++++------- 1 file changed, 55 insertions(+), 31 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/EmpresaHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/EmpresaHibernateDAO.java index 217ee44da..1bfa53b33 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/EmpresaHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/EmpresaHibernateDAO.java @@ -6,6 +6,7 @@ package com.rjconsultores.ventaboletos.dao.hibernate; import java.sql.Connection; import java.sql.SQLException; +import java.sql.Statement; import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -45,7 +46,7 @@ import com.rjconsultores.ventaboletos.vo.busquedapacotes.transformer.DatosEmpres */ @Repository("empresaDAO") public class EmpresaHibernateDAO extends GenericHibernateDAO implements EmpresaDAO { - + @Autowired private DataSource dataSource; @@ -176,49 +177,72 @@ public class EmpresaHibernateDAO extends GenericHibernateDAO i } @Override - public Empresa suscribir(Empresa entity) throws RuntimeException { + public Empresa suscribir(Empresa entity) { entity = super.suscribir(entity); getSession().flush(); - gerarSeqNumFolioSistema(entity.getEmpresaId()); + try { + gerarSeqNumFolioSistema(entity.getEmpresaId()); + } catch (SQLException e) { + e.printStackTrace(); + } + + return entity; + } + + @Override + public Empresa actualizacion(Empresa entity) { + entity = super.actualizacion(entity); + + try { + gerarSeqNumFolioSistema(entity.getEmpresaId()); + } catch (SQLException e) { + e.printStackTrace(); + } return entity; } - private void gerarSeqNumFolioSistema(Integer idEmpresa) throws RuntimeException { - Connection conn = null; + private void gerarSeqNumFolioSistema(Integer idEmpresa) throws SQLException { + final Connection conn = dataSource.getConnection(); try { - conn = dataSource.getConnection(); - String[] sequences = { "AC", "AL", "AM", "AP", "BA", "CE", "DF", "ES", "GO", "MA", "MG", "MS", "MT", "PA", "PB", "PE", "PI", "PR", "RJ", "RN", "RO", "RR", "RS", "SC", "SE", "SP", "TO" }; - if (!conn.createStatement().executeQuery("select SEQUENCE_NAME from DBA_SEQUENCES where SEQUENCE_NAME like 'FOLIO_SISTEMA_" + idEmpresa + "_SEQ%'").next()) { - for (String sequence : sequences) { - conn.createStatement().execute("CREATE SEQUENCE FOLIO_SISTEMA_" + (sequence == "" ? sequence : (sequence + "_") + idEmpresa + "_SEQ INCREMENT BY 1 START WITH 1 NOCACHE ORDER NOCYCLE")); - } - } - - /* - * Cria as sequences de numeração dos bilhetes do BPe - */ - if (!conn.createStatement().executeQuery("select SEQUENCE_NAME from DBA_SEQUENCES where SEQUENCE_NAME like 'FOLIO_SISTEMA_BPE_" + idEmpresa + "_SEQ%'").next()) { - for (String sequence : sequences) { - conn.createStatement().execute("CREATE SEQUENCE FOLIO_SISTEMA_BPE_" + (sequence == "" ? sequence : (sequence + "_") + idEmpresa + "_SEQ MINVALUE 1 MAXVALUE 999999999 INCREMENT BY 1 START WITH 1 ORDER NOCACHE CYCLE")); - } - } - } catch (SQLException e) { - throw new RuntimeException(e); - }finally { - try { - if(conn != null && !conn.isClosed()){ - conn.close(); - } - } catch (SQLException e) { - e.printStackTrace(); - } + geraSequence(conn, idEmpresa, false); + geraSequence(conn, idEmpresa, true); + } finally { + conn.close(); } } + @SuppressWarnings("unchecked") + private void geraSequence(final Connection conn, final Integer idEmpresa, final Boolean isFolioBpe) throws SQLException { + final Statement statement = conn.createStatement(); + try { + List lista = getSession().createSQLQuery(obtemSqlSequence(idEmpresa, isFolioBpe)).list(); + for (String instrucao : lista) { + statement.execute(instrucao); + } + } finally { + statement.close(); + } + } + + private String obtemSqlSequence(Integer idEmpresa, Boolean isFolioBpe) { + StringBuilder sql = new StringBuilder(); + sql.append("SELECT 'CREATE SEQUENCE ' || SEQUENCIA || ' INCREMENT BY 1 START WITH 1 NOCACHE ORDER NOCYCLE' FROM ("); + sql.append(" SELECT DISTINCT '" + obtemNomeFolio(isFolioBpe) +"'||CVEESTADO||'_" + idEmpresa + "_SEQ' SEQUENCIA "); + sql.append(" FROM ESTADO WHERE ACTIVO = 1) TMP "); + sql.append("WHERE TMP.SEQUENCIA NOT IN( "); + sql.append(" SELECT SEQUENCE_NAME FROM DBA_SEQUENCES "); + sql.append(" WHERE SEQUENCE_NAME LIKE '" + obtemNomeFolio(isFolioBpe) + "%_" + idEmpresa + "_SEQ')"); + return sql.toString(); + } + + private String obtemNomeFolio(Boolean isFolioBpe) { + return isFolioBpe ? "FOLIO_SISTEMA_BPE_" : "FOLIO_SISTEMA_"; + } + @Override @SuppressWarnings("unchecked") public List obtenerTodosIncluindoEmpresaTodas() {