Package liquibase.change.core.supplier

Source Code of liquibase.change.core.supplier.DropUniqueConstraintChangeSupplier

package liquibase.change.core.supplier;

import liquibase.change.Change;
import liquibase.change.ColumnConfig;
import liquibase.change.ConstraintsConfig;
import liquibase.change.core.AddUniqueConstraintChange;
import liquibase.change.core.CreateTableChange;
import liquibase.change.core.DropUniqueConstraintChange;
import liquibase.diff.DiffResult;
import liquibase.sdk.supplier.change.AbstractChangeSupplier;
import liquibase.structure.core.Column;
import liquibase.structure.core.UniqueConstraint;

import static junit.framework.Assert.assertNotNull;

public class DropUniqueConstraintChangeSupplier extends AbstractChangeSupplier<DropUniqueConstraintChange>  {

    public DropUniqueConstraintChangeSupplier() {
        super(DropUniqueConstraintChange.class);
    }

    @Override
    public Change[]  prepareDatabase(DropUniqueConstraintChange change) throws Exception {
        CreateTableChange createTableChange = new CreateTableChange();
        createTableChange.setCatalogName(change.getCatalogName());
        createTableChange.setSchemaName(change.getSchemaName());
        createTableChange.setTableName(change.getTableName());
        String uniqueColumns = change.getUniqueColumns();

        if (uniqueColumns == null) {
            uniqueColumns = "test_col";
        }

        for (String column : uniqueColumns.split(",")) {
            createTableChange.addColumn(new ColumnConfig().setName(column.trim()).setType("int").setConstraints(new ConstraintsConfig().setNullable(false)));
        }
        createTableChange.addColumn(new ColumnConfig().setName("other_column").setType("int"));

        AddUniqueConstraintChange addUniqueConstraintChange = new AddUniqueConstraintChange();
        addUniqueConstraintChange.setCatalogName(change.getCatalogName());
        addUniqueConstraintChange.setSchemaName(change.getSchemaName());
        addUniqueConstraintChange.setTableName(change.getTableName());
        addUniqueConstraintChange.setColumnNames(uniqueColumns);
        addUniqueConstraintChange.setConstraintName(change.getConstraintName());

        return new Change[] {createTableChange, addUniqueConstraintChange };
    }

    @Override
    public void checkDiffResult(DiffResult diffResult, DropUniqueConstraintChange change) {
        Column[] columns = null;
        if (change.getUniqueColumns() != null) {
            String[] columnNames = change.getUniqueColumns().split(",");
            for (int i=0; i<columnNames.length; i++) {
                columns[i] = new Column(columnNames[i]);
            }
        }

        assertNotNull(diffResult.getMissingObject(new UniqueConstraint(change.getConstraintName(), change.getCatalogName(), change.getSchemaName(), change.getTableName(), columns)));
    }
}
TOP

Related Classes of liquibase.change.core.supplier.DropUniqueConstraintChangeSupplier

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.