private void upgradeSchema()

in src/main/java/com/googlesource/gerrit/plugins/verifystatus/init/InitPlugin.java [175:228]


  private void upgradeSchema() throws OrmException {
    final List<String> pruneList = new ArrayList<>();
    update(
        new UpdateUI() {
          @Override
          public void message(String msg) {
            System.err.println(msg);
            System.err.flush();
          }

          @Override
          public boolean yesno(boolean def, String msg) {
            return ui.yesno(def, msg);
          }

          @Override
          public boolean isBatch() {
            return ui.isBatch();
          }

          @Override
          public void pruneSchema(StatementExecutor e, List<String> prune) {
            for (String p : prune) {
              if (!pruneList.contains(p)) {
                pruneList.add(p);
              }
            }
          }
        });

    if (!pruneList.isEmpty()) {
      StringBuilder msg = new StringBuilder();
      msg.append("Execute the following SQL to drop unused objects:\n");
      msg.append("\n");
      for (String sql : pruneList) {
        msg.append("  ");
        msg.append(sql);
        msg.append(";\n");
      }

      if (ui.isBatch()) {
        System.err.print(msg);
        System.err.flush();

      } else if (ui.yesno(true, "%s\nExecute now", msg)) {
        try (JdbcSchema db = (JdbcSchema) dbFactory.open();
            JdbcExecutor e = new JdbcExecutor(db)) {
          for (String sql : pruneList) {
            e.execute(sql);
          }
        }
      }
    }
  }