示例#1
0
  /**
   * Executes this operation on this Flyway instance.
   *
   * @param flyway The Flyway instance.
   * @param operation The operation to execute.
   * @param sqlStatements The current list of all pending migrations.
   */
  private static void executeOperation(
      final FlywayWithDryRun flyway,
      final String operation,
      final Iterable<SqlStatement> sqlStatements) {
    if ("clean".equals(operation)) {
      flyway.clean();
    } else if ("baseline".equals(operation)) {
      flyway.baseline();
    } else if ("migrate".equals(operation)) {
      flyway.migrate();
    } else if ("dryRunMigrate".equals(operation)) {
      flyway.dryRunMigrate();

      final StringBuilder stringBuilder = new StringBuilder("BEGIN;\n");
      for (final SqlStatement sqlStatement : sqlStatements) {
        stringBuilder.append(sqlStatement.getSql()).append(";\n");
      }
      stringBuilder.append("COMMIT;");
      LOG.info("\n" + stringBuilder.toString());
    } else if ("validate".equals(operation)) {
      flyway.validate();
    } else if ("info".equals(operation)) {
      LOG.info("\n" + MigrationInfoDumper.dumpToAsciiTable(flyway.info().all()));
    } else if ("repair".equals(operation)) {
      flyway.repair();
    } else {
      LOG.error("Invalid operation: " + operation);
      printUsage();
      System.exit(1);
    }
  }