IDEMPIERE-568 Review proper closing of JDBC statements and resultsets
This commit is contained in:
parent
f737c1fc87
commit
555e234496
|
|
@ -44,67 +44,73 @@ import org.compiere.util.DB;
|
||||||
public class ApplyMigrationScripts extends SvrProcess {
|
public class ApplyMigrationScripts extends SvrProcess {
|
||||||
|
|
||||||
/** Logger */
|
/** Logger */
|
||||||
private static CLogger log = CLogger
|
private static CLogger log = CLogger.getCLogger(ApplyMigrationScripts.class);
|
||||||
.getCLogger(ApplyMigrationScripts.class);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String doIt() throws Exception {
|
protected String doIt() throws Exception {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
log.info("Applying migrations scripts");
|
log.info("Applying migrations scripts");
|
||||||
StringBuilder sql = new StringBuilder()
|
StringBuilder sql = new StringBuilder()
|
||||||
.append("select ad_migrationscript_id, script, name from ad_migrationscript where isApply = 'Y' and status = 'IP' order by name, created");
|
.append("select ad_migrationscript_id, script, name from ad_migrationscript where isApply = 'Y' and status = 'IP' order by name, created");
|
||||||
PreparedStatement pstmt = DB.prepareStatement(sql.toString(), this.get_TrxName());
|
PreparedStatement pstmt = null;
|
||||||
ResultSet rs = pstmt.executeQuery();
|
ResultSet rs = null;
|
||||||
while (rs.next()) {
|
try {
|
||||||
byte[] scriptArray = rs.getBytes(2);
|
pstmt = DB.prepareStatement(sql.toString(), this.get_TrxName());
|
||||||
int seqID = rs.getInt(1);
|
rs = pstmt.executeQuery();
|
||||||
boolean execOk = true;
|
while (rs.next()) {
|
||||||
try {
|
byte[] scriptArray = rs.getBytes(2);
|
||||||
StringBuilder tmpSql = new StringBuilder(new String(scriptArray));
|
int seqID = rs.getInt(1);
|
||||||
|
boolean execOk = true;
|
||||||
if (tmpSql.length() > 0) {
|
|
||||||
log.info("Executing script " + rs.getString(3));
|
|
||||||
execOk = executeScript(tmpSql.toString(), rs.getString(3));
|
|
||||||
System.out.println();
|
|
||||||
}
|
|
||||||
} catch (SQLException e) {
|
|
||||||
execOk = false;
|
|
||||||
e.printStackTrace();
|
|
||||||
StringBuilder msglog = new StringBuilder("Script: ").append(rs.getString(3)).append(" - ").append(e.getMessage());
|
|
||||||
log.saveError("Error", msglog.toString());
|
|
||||||
log.severe(e.getMessage());
|
|
||||||
} finally {
|
|
||||||
sql = new StringBuilder("UPDATE ad_migrationscript SET status = ? , isApply = 'N' WHERE ad_migrationscript_id = ? ");
|
|
||||||
pstmt = DB.prepareStatement(sql.toString(), this.get_TrxName());
|
|
||||||
if (execOk) {
|
|
||||||
pstmt.setString(1, "CO");
|
|
||||||
pstmt.setInt(2, seqID);
|
|
||||||
} else {
|
|
||||||
pstmt.setString(1, "ER");
|
|
||||||
pstmt.setInt(2, seqID);
|
|
||||||
}
|
|
||||||
try {
|
try {
|
||||||
pstmt.executeUpdate();
|
StringBuilder tmpSql = new StringBuilder(new String(scriptArray));
|
||||||
if (!execOk) {
|
|
||||||
pstmt.close();
|
if (tmpSql.length() > 0) {
|
||||||
return null;
|
log.info("Executing script " + rs.getString(3));
|
||||||
|
execOk = executeScript(tmpSql.toString(), rs.getString(3));
|
||||||
|
System.out.println();
|
||||||
}
|
}
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
|
execOk = false;
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
StringBuilder msglog = new StringBuilder("Script: ").append(rs.getString(3)).append(" - ").append(e.getMessage());
|
StringBuilder msglog = new StringBuilder("Script: ").append(rs.getString(3)).append(" - ").append(e.getMessage());
|
||||||
log.saveError("Error", msglog.toString());
|
log.saveError("Error", msglog.toString());
|
||||||
log.severe(e.getMessage());
|
log.severe(e.getMessage());
|
||||||
|
} finally {
|
||||||
|
sql = new StringBuilder("UPDATE ad_migrationscript SET status = ? , isApply = 'N' WHERE ad_migrationscript_id = ? ");
|
||||||
|
PreparedStatement pstmtu = DB.prepareStatement(sql.toString(), this.get_TrxName());
|
||||||
|
if (execOk) {
|
||||||
|
pstmtu.setString(1, "CO");
|
||||||
|
pstmtu.setInt(2, seqID);
|
||||||
|
} else {
|
||||||
|
pstmtu.setString(1, "ER");
|
||||||
|
pstmtu.setInt(2, seqID);
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
pstmtu.executeUpdate();
|
||||||
|
if (!execOk) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
StringBuilder msglog = new StringBuilder("Script: ").append(rs.getString(3)).append(" - ").append(e.getMessage());
|
||||||
|
log.saveError("Error", msglog.toString());
|
||||||
|
log.severe(e.getMessage());
|
||||||
|
} finally {
|
||||||
|
DB.close(pstmtu);
|
||||||
|
pstmtu = null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
} catch (SQLException e) {
|
||||||
|
throw e;
|
||||||
|
} finally {
|
||||||
|
DB.close(rs, pstmt);
|
||||||
|
rs = null; pstmt = null;
|
||||||
}
|
}
|
||||||
rs.close();
|
|
||||||
pstmt.close();
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void prepare() {
|
protected void prepare() {
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -156,7 +162,8 @@ public class ApplyMigrationScripts extends SvrProcess {
|
||||||
log.saveError("Error", msglog.toString());
|
log.saveError("Error", msglog.toString());
|
||||||
log.severe(e.getMessage());
|
log.severe(e.getMessage());
|
||||||
} finally {
|
} finally {
|
||||||
if (stmt != null)stmt.close();
|
DB.close(stmt);
|
||||||
|
stmt = null;
|
||||||
if(execOk)
|
if(execOk)
|
||||||
conn.commit();
|
conn.commit();
|
||||||
else
|
else
|
||||||
|
|
|
||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue