package liquibase.ext.mssql.change; import java.util.ArrayList; import java.util.List; import liquibase.change.ChangeMetaData; import liquibase.change.DatabaseChange; import liquibase.database.Database; import liquibase.ext.mssql.database.MSSQLDatabase; import liquibase.ext.mssql.statement.InsertStatementMSSQL; import liquibase.statement.SqlStatement; import liquibase.statement.core.InsertStatement; @DatabaseChange(name="insert", description = "Inserts data into an existing table", priority = ChangeMetaData.PRIORITY_DATABASE, appliesTo = "table") public class InsertDataChangeMSSQL extends liquibase.change.core.InsertDataChange { private Boolean identityInsertEnabled; public Boolean getIdentityInsertEnabled() { return identityInsertEnabled; } public void setIdentityInsertEnabled(Boolean identityInsertEnabled) { this.identityInsertEnabled = identityInsertEnabled; } @Override public SqlStatement[] generateStatements(Database database) { SqlStatement[] statements = super.generateStatements(database); if (!MSSQLDatabase.PRODUCT_NAME.equals(database.getDatabaseProductName())) { return statements; } List<SqlStatement> wrappedStatements = new ArrayList<SqlStatement>(statements.length); for (SqlStatement statement : statements) { if (statement instanceof InsertStatement) { wrappedStatements.add(new InsertStatementMSSQL((InsertStatement) statement, identityInsertEnabled)); } else { wrappedStatements.add(statement); } } return wrappedStatements.toArray(new SqlStatement[0]); } @Override public boolean supports(Database database) { return database instanceof MSSQLDatabase; } }