package liquibase.ext.ora.grant.addgrant;
import liquibase.change.Change;
import liquibase.change.ChangeMetaData;
import liquibase.change.DatabaseChange;
import liquibase.database.Database;
import liquibase.ext.ora.grant.AbstractObjectPermissionChange;
import liquibase.ext.ora.grant.AbstractObjectPermissionStatement;
import liquibase.ext.ora.grant.revokegrant.RevokeObjectPermissionChange;
import liquibase.statement.SqlStatement;
@DatabaseChange(name="grantObjectPermission", description = "Grant Schema Object Permission", priority = ChangeMetaData.PRIORITY_DEFAULT)
public class GrantObjectPermissionChange extends AbstractObjectPermissionChange {
public GrantObjectPermissionChange() {}
public GrantObjectPermissionChange( AbstractObjectPermissionChange other ) {
super(other);
}
@Override
public SqlStatement[] generateStatements(Database database) {
String schemaName = getSchemaName() == null ? database.getDefaultSchemaName() : getSchemaName();
AbstractObjectPermissionStatement statement = new GrantObjectPermissionStatement(schemaName, getObjectName(), getRecipientList() );
statement.setSelect(getSelect());
statement.setUpdate(getUpdate());
statement.setInsert(getInsert());
statement.setDelete(getDelete());
statement.setExecute(getExecute());
return new SqlStatement[]{statement};
}
@Override
public String getConfirmationMessage() {
return "Grants on " + getObjectName() + " have been given to " + getRecipientList();
}
@Override
protected Change[] createInverses() {
RevokeObjectPermissionChange inverse = new RevokeObjectPermissionChange(this);
return new Change[]{inverse};
}
}