private void updateSchema(List<SchemaVersion> pending, UpdateUI ui, ReviewDb db) throws OrmException, SQLException { for (SchemaVersion v : pending) { ui.message(String.format("Upgrading schema to %d ...", v.getVersionNbr())); v.preUpdateSchema(db); } JdbcSchema s = (JdbcSchema) db; try (JdbcExecutor e = new JdbcExecutor(s)) { s.updateSchema(e); } }
/** Runs check on the prior schema version, and then upgrades. */ protected void upgradeFrom( UpdateUI ui, CurrentSchemaVersion curr, ReviewDb db, boolean toTargetVersion) throws OrmException, SQLException { final JdbcSchema s = (JdbcSchema) db; if (curr.versionNbr > versionNbr) { throw new OrmException( "Cannot downgrade database schema from version " + curr.versionNbr + " to " + versionNbr + "."); } prior.get().check(ui, curr, db, false); ui.message( "Upgrading database schema from version " + curr.versionNbr + " to " + versionNbr + " ..."); preUpdateSchema(db); final JdbcExecutor e = new JdbcExecutor(s); try { s.updateSchema(e); migrateData(db, ui); if (toTargetVersion) { final List<String> pruneList = new ArrayList<String>(); s.pruneSchema( new StatementExecutor() { public void execute(String sql) { pruneList.add(sql); } }); if (!pruneList.isEmpty()) { ui.pruneSchema(e, pruneList); } } } finally { e.close(); } finish(curr, db); }