package jef.database.meta; import java.util.List; import jef.database.dialect.ColumnType; import jef.database.meta.ColumnChange.Change; /** * 描述在一个数据库列上,实际的模型和框架中的模型之间的差异 * * @author Jiyi * */ public final class ColumnModification { private Column from; private ColumnType newColumn; private List<ColumnChange> changes; /** * 构造 * * @param beforeChange * 变更前的列定义 * @param changes * 对比出来的变化 * @param changeTo * 变更后的列类型 */ public ColumnModification(Column beforeChange, List<ColumnChange> changes, ColumnType changeTo) { this.from = beforeChange; this.changes = changes; this.newColumn = changeTo; } @Override public String toString() { return from.toString(); } /** * 得到数据库中(实际)的列定义 * * @return 数据库中的列定义 */ public Column getFrom() { return from; } /** * 获得数据库列上的数据类型变更 * * @return 在一个列上的变更列表(比如Default值变化、null/not null变化、数据类型变化、数据长度变化等) * @see ColumnChange */ public List<ColumnChange> getChanges() { return changes; } /** * 得到模型会将数据库列更改为类型 * * @return 更改后的类型 * @see ColumnType */ public ColumnType getNewColumn() { return newColumn; } /** * 返回列名 * * @return 列名 */ public String getColumnName() { return from.getColumnName(); } public boolean hasChange(Change type) { if (changes != null) { for (ColumnChange cc : changes) { if (cc.getType() == type) { return true; } } } return false; } }