/** Add all the appropriate changes based on the column changes. */ @Override public void generate(DdlWrite writer, AlterColumn alterColumn) throws IOException { if (isTrue(alterColumn.isHistoryExclude())) { regenerateHistoryTriggers( alterColumn.getTableName(), HistoryTableUpdate.Change.EXCLUDE, alterColumn.getColumnName()); } else if (isFalse(alterColumn.isHistoryExclude())) { regenerateHistoryTriggers( alterColumn.getTableName(), HistoryTableUpdate.Change.INCLUDE, alterColumn.getColumnName()); } if (hasValue(alterColumn.getDropForeignKey())) { alterColumnDropForeignKey(writer, alterColumn); } if (hasValue(alterColumn.getReferences())) { alterColumnAddForeignKey(writer, alterColumn); } if (hasValue(alterColumn.getDropUnique())) { alterColumnDropUniqueConstraint(writer, alterColumn); } if (hasValue(alterColumn.getUnique())) { alterColumnAddUniqueConstraint(writer, alterColumn); } if (hasValue(alterColumn.getUniqueOneToOne())) { alterColumnAddUniqueOneToOneConstraint(writer, alterColumn); } boolean alterBaseAttributes = false; if (hasValue(alterColumn.getType())) { alterColumnType(writer, alterColumn); alterBaseAttributes = true; } if (hasValue(alterColumn.getDefaultValue())) { alterColumnDefaultValue(writer, alterColumn); alterBaseAttributes = true; } if (alterColumn.isNotnull() != null) { alterColumnNotnull(writer, alterColumn); alterBaseAttributes = true; } if (alterBaseAttributes) { alterColumnBaseAttributes(writer, alterColumn); } }
protected void alterColumnAddForeignKey(DdlWrite writer, AlterColumn alterColumn) throws IOException { String tableName = alterColumn.getTableName(); String fkName = alterColumn.getForeignKeyName(); String[] cols = {alterColumn.getColumnName()}; String references = alterColumn.getReferences(); int pos = references.lastIndexOf('.'); if (pos == -1) { throw new IllegalStateException( "Expecting period '.' character for table.column split but not found in [" + references + "]"); } String refTableName = references.substring(0, pos); String refColumnName = references.substring(pos + 1); String[] refCols = {refColumnName}; alterTableAddForeignKey(writer.apply(), fkName, tableName, cols, refTableName, refCols); }