@Override public SqlStatement[] generateRollbackStatements(final Database database) throws RollbackImpossibleException { List<SqlStatement> result = new ArrayList<SqlStatement>(); String permissionId = getPermissionForeignKey(database, getName(), getNamespace(), getTemplate()); final DeleteDataChange removePerm = new DeleteDataChange(); removePerm.setTableName("krim_perm_t"); removePerm.setWhereClause(String.format("perm_id = '%s'", permissionId)); for (AddPermissionAttribute attribute : attributes) { attribute.setPermissionId(permissionId); result.addAll(Arrays.asList(attribute.generateRollbackStatements(database))); } result.addAll(Arrays.asList(removePerm.generateStatements(database))); return result.toArray(new SqlStatement[result.size()]); }
/** * Generates the SQL statements required to run the change. * * @param database databasethe target {@link liquibase.database.Database} associated to this * change's statements * @return an array of {@link String}s with the statements */ public SqlStatement[] generateStatements(final Database database) { final List<SqlStatement> attributeStatements = new ArrayList<SqlStatement>(); for (final AddPermissionAttribute attribute : getAttributes()) { for (final SqlStatement statement : attribute.generateStatements(database)) { attributeStatements.add(statement); } } return new SqlStatement[] { new CreatePermissionStatement( getTemplate(), getNamespace(), getName(), getDescription(), getActive(), attributeStatements) }; }