Nazar - Melhorias

bug#12464
dev:trevezani
qua:

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/BD/FlyWay/trunk@87513 d1611594-4594-4d17-8e1d-87c2c4800839
master
alberto 2018-11-29 13:26:56 +00:00
parent 7ee8bf797e
commit da4f03b58d
1 changed files with 38 additions and 24 deletions

View File

@ -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.");
boolean reexecute = false;
File scriptFile = new File(JBOSS_DATA, "flyway");
scriptFile = new File(scriptFile, errorCallback.getScriptError());
do {
reexecute = false;
if (scriptFile.exists()) {
log.info("[Flyway] Excluindo fisicamente o script: " + errorCallback.getScriptError() + ". " + (scriptFile.delete() ? "OK" : "ERROR"));
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) {
}
}
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();
}
flyway.repair();
}
} while (reexecute);
} else {
flyway.migrate();
}