From 418e1c2c3f75e18ac533ba783d8704a39943787a Mon Sep 17 00:00:00 2001 From: gleimar Date: Tue, 18 Apr 2017 13:40:32 +0000 Subject: [PATCH] fixes bug#8905 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@68122 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../ventaboletos/dao/util/IdAidfStore.java | 53 +++++++++++++++++-- 1 file changed, 50 insertions(+), 3 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/dao/util/IdAidfStore.java b/src/com/rjconsultores/ventaboletos/dao/util/IdAidfStore.java index bada2933d..38b1bc6a6 100644 --- a/src/com/rjconsultores/ventaboletos/dao/util/IdAidfStore.java +++ b/src/com/rjconsultores/ventaboletos/dao/util/IdAidfStore.java @@ -6,9 +6,9 @@ import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; +import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.hibernate.HibernateException; -import org.hibernate.engine.SessionImplementor; /** * Classe que trata a geração do ID da tabela Aidf. * @@ -21,7 +21,9 @@ import org.hibernate.engine.SessionImplementor; public class IdAidfStore { private static Logger log = Logger.getLogger(IdAidfStore.class); - + + private static final String LIMITE_ID_AIDF = "LIMITE_ID_AIDF"; + private static IdAidfStore INSTANCE = new IdAidfStore(); private int indiceAtual = 1; @@ -34,10 +36,55 @@ public class IdAidfStore { return INSTANCE; } + /** + * Buscar novo limite de aidf. + * + * Por padrão é 999. Com o intuito de ativar de forma gradual, foi criado uma constante para essa função + * @param connection + * @return + */ + private int buscarLimiteAidf(Connection connection){ + int qtdMaxima = 999; + PreparedStatement ps; + + log.info("buscando constante limite aidf ..."); + + try { + + ps = connection.prepareStatement("select VALORCONSTANTE from constante where NOMBCONSTANTE = :1"); + ps.setString(1, LIMITE_ID_AIDF); + + ResultSet rs = ps.executeQuery(); + + if (rs.next()){ + + String tmp = rs.getString("VALORCONSTANTE"); + + if (StringUtils.isNotBlank(tmp)){ + qtdMaxima = Integer.parseInt(tmp); + + log.info(String.format("constante encontrada : %s",tmp)); + } + }else{ + log.info("constante não parametrizada"); + } + + rs.close(); + ps.close(); + + }catch(Throwable e){ + log.error("erro buscar constante",e); + } + + return qtdMaxima; + } public synchronized Serializable getNextId(Connection connection) throws HibernateException { - int qtdMaxima = 999; + int qtdMaxima = this.buscarLimiteAidf(connection); + + log.info(String.format("qtdMaxima:%s",qtdMaxima)); + long idEncontrado = -1; PreparedStatement ps;