Package org.ngrinder.infra.init

Source Code of org.ngrinder.infra.init.RenameColumnExGenerator

/*
* Licensed under the Apache License, Version 2.0 (the "License");
*  you may not use this file except in compliance with the License.
*  You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.ngrinder.infra.init;

import liquibase.database.Database;
import liquibase.database.core.CUBRIDDatabase;
import liquibase.database.core.DerbyDatabase;
import liquibase.database.core.FirebirdDatabase;
import liquibase.database.core.H2Database;
import liquibase.database.core.HsqlDatabase;
import liquibase.database.core.InformixDatabase;
import liquibase.database.core.MSSQLDatabase;
import liquibase.database.core.MaxDBDatabase;
import liquibase.database.core.MySQLDatabase;
import liquibase.database.core.SybaseASADatabase;
import liquibase.sql.Sql;
import liquibase.sql.UnparsedSql;
import liquibase.sqlgenerator.SqlGeneratorChain;
import liquibase.sqlgenerator.core.RenameColumnGenerator;
import liquibase.statement.core.RenameColumnStatement;

/**
* Rename Column sql generator. Modified to support Cubrid.
*
* @since 3.1
* @author Matt
*/
public class RenameColumnExGenerator extends RenameColumnGenerator {

  /*
   * (non-Javadoc)
   *
   * @see liquibase.sqlgenerator.core.RenameColumnGenerator#generateSql(liquibase.statement.core.
   * RenameColumnStatement, liquibase.database.Database, liquibase.sqlgenerator.SqlGeneratorChain)
   */
  @Override
  public Sql[] generateSql(RenameColumnStatement statement, Database database, SqlGeneratorChain sqlGeneratorChain) {
    String sql;
    if (database instanceof MSSQLDatabase) {
      sql = "exec sp_rename '"
              + database.escapeTableName(statement.getSchemaName(), statement.getTableName())
              + "."
              + database.escapeColumnName(statement.getSchemaName(), statement.getTableName(),
                      statement.getOldColumnName()) + "', '" + statement.getNewColumnName() + "'";
    } else if (database instanceof MySQLDatabase) {
      sql = "ALTER TABLE "
              + database.escapeTableName(statement.getSchemaName(), statement.getTableName())
              + " CHANGE "
              + database.escapeColumnName(statement.getSchemaName(), statement.getTableName(),
                      statement.getOldColumnName())
              + " "
              + database.escapeColumnName(statement.getSchemaName(), statement.getTableName(),
                      statement.getNewColumnName()) + " " + statement.getColumnDataType();
    } else if (database instanceof HsqlDatabase || database instanceof H2Database) {
      sql = "ALTER TABLE "
              + database.escapeTableName(statement.getSchemaName(), statement.getTableName())
              + " ALTER COLUMN "
              + database.escapeColumnName(statement.getSchemaName(), statement.getTableName(),
                      statement.getOldColumnName())
              + " RENAME TO "
              + database.escapeColumnName(statement.getSchemaName(), statement.getTableName(),
                      statement.getNewColumnName());
    } else if (database instanceof FirebirdDatabase) {
      sql = "ALTER TABLE "
              + database.escapeTableName(statement.getSchemaName(), statement.getTableName())
              + " ALTER COLUMN "
              + database.escapeColumnName(statement.getSchemaName(), statement.getTableName(),
                      statement.getOldColumnName())
              + " TO "
              + database.escapeColumnName(statement.getSchemaName(), statement.getTableName(),
                      statement.getNewColumnName());
    } else if ((database instanceof MaxDBDatabase) || (database instanceof DerbyDatabase)
            || (database instanceof InformixDatabase)) {
      sql = "RENAME COLUMN "
              + database.escapeTableName(statement.getSchemaName(), statement.getTableName())
              + "."
              + database.escapeColumnName(statement.getSchemaName(), statement.getTableName(),
                      statement.getOldColumnName())
              + " TO "
              + database.escapeColumnName(statement.getSchemaName(), statement.getTableName(),
                      statement.getNewColumnName());
    } else if (database instanceof SybaseASADatabase) {
      sql = "ALTER TABLE "
              + database.escapeTableName(statement.getSchemaName(), statement.getTableName())
              + " RENAME "
              + database.escapeColumnName(statement.getSchemaName(), statement.getTableName(),
                      statement.getOldColumnName())
              + " TO "
              + database.escapeColumnName(statement.getSchemaName(), statement.getTableName(),
                      statement.getNewColumnName());
    } else if (database instanceof CUBRIDDatabase) {
      sql = "ALTER TABLE "
              + database.escapeTableName(statement.getSchemaName(), statement.getTableName())
              + " RENAME COLUMN "
              + database.escapeColumnName(statement.getSchemaName(), statement.getTableName(),
                      statement.getOldColumnName())
              + " AS "
              + database.escapeColumnName(statement.getSchemaName(), statement.getTableName(),
                      statement.getNewColumnName());
    } else {
      sql = "ALTER TABLE "
              + database.escapeTableName(statement.getSchemaName(), statement.getTableName())
              + " RENAME COLUMN "
              + database.escapeColumnName(statement.getSchemaName(), statement.getTableName(),
                      statement.getOldColumnName())
              + " TO "
              + database.escapeColumnName(statement.getSchemaName(), statement.getTableName(),
                      statement.getNewColumnName());
    }
    return new Sql[] { new UnparsedSql(sql) };
  }
}
TOP

Related Classes of org.ngrinder.infra.init.RenameColumnExGenerator

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.