diff --git a/src/com/rjconsultores/ventaboletos/FlyWay.java b/src/com/rjconsultores/ventaboletos/FlyWay.java index d1b577c80..8aacdc24c 100644 --- a/src/com/rjconsultores/ventaboletos/FlyWay.java +++ b/src/com/rjconsultores/ventaboletos/FlyWay.java @@ -172,31 +172,45 @@ public class FlyWay { FlywayCallback[] callbacks = new FlywayCallback[]{ errorCallback }; flyway.setCallbacks(callbacks); - try { - flyway.migrate(); - } catch (final Exception e) { - if (errorCallback.getScriptError() != null) { - log.error("[Flyway] Erro ao executar o script: " + errorCallback.getScriptError() + ". Este script sera desabilitado na tabela FLYWAY_SCRIPTS."); - - File scriptFile = new File(JBOSS_DATA, "flyway"); - scriptFile = new File(scriptFile, errorCallback.getScriptError()); - - if (scriptFile.exists()) { - log.info("[Flyway] Excluindo fisicamente o script: " + errorCallback.getScriptError() + ". " + (scriptFile.delete() ? "OK" : "ERROR")); - } - - try { - Connection c = flyway.getDataSource().getConnection(); - PreparedStatement ps = c.prepareStatement("update flyway_scripts set activo = 0 where nome like ?"); - ps.setString(1, errorCallback.getScriptError().replace(".sql", "")); - ps.executeUpdate(); - - } catch (SQLException e1) { - } - } + boolean reexecute = false; + + do { + reexecute = false; - flyway.repair(); - } + try { + flyway.migrate(); + } catch (final Exception e) { + if (errorCallback.getScriptError() != null) { + reexecute = true; + + log.error("[Flyway] Erro ao executar o script: " + errorCallback.getScriptError() + ". Este script sera desabilitado na tabela FLYWAY_SCRIPTS."); + + File scriptFile = new File(JBOSS_DATA, "flyway"); + scriptFile = new File(scriptFile, errorCallback.getScriptError()); + + if (scriptFile.exists()) { + boolean success = scriptFile.delete(); + + log.info("[Flyway] Excluindo fisicamente o script: " + errorCallback.getScriptError() + ". " + (success ? "OK" : "ERROR")); + + if (!success) { + reexecute = false; + } + } + + try { + Connection c = flyway.getDataSource().getConnection(); + PreparedStatement ps = c.prepareStatement("update flyway_scripts set activo = 0 where nome like ?"); + ps.setString(1, errorCallback.getScriptError().replace(".sql", "")); + ps.executeUpdate(); + + } catch (SQLException e1) { + } + } + + flyway.repair(); + } + } while (reexecute); } else { flyway.migrate(); }