package jef.database.meta; import java.util.Collection; import java.util.Collections; import jef.database.Field; import jef.database.VarObject; import jef.database.dialect.ColumnType; import jef.database.dialect.type.ColumnMapping; /** * 所有字段均为动态属性的动态表。 * * @author jiyi * */ public final class TupleMetadata extends DynamicMetadata { /** * 构造 * * @param tableName * 表名 */ public TupleMetadata(String tableName) { super(tableName); } /** * 构造 * * @param schema * schema名 * @param tableName * 表名 */ public TupleMetadata(String schema, String tableName) { super(schema, tableName); } public VarObject newInstance() { return new VarObject(this); } public ColumnMapping getColumnDef(Field field) { return schemaMap.get(field); } /** * 向动态模型中放入一个字段 * @param field * @param type */ public void putJavaField(Field field, ColumnType type) { boolean pk = (type instanceof ColumnType.AutoIncrement) || (type instanceof ColumnType.GUID); this.internalUpdateColumn(field, field.name(), type, pk, false); } /** * 更新或添加一个列 * * @param columnName * @param type * @return */ public boolean updateColumn(String columnName, ColumnType type) { boolean pk = (type instanceof ColumnType.AutoIncrement) || (type instanceof ColumnType.GUID); return updateColumn(columnName, columnName, type, pk, true); } /** * 删除指定的列 * * @param columnName * @return false如果没找到此列 */ public boolean removeColumn(String columnName) { if (columnName == null) return false; Field field = lowerColumnToFieldName.get(columnName.toLowerCase()); if (field != null) { removeColumnByFieldName(field.name()); return true; } return false; } @Override public Collection<ColumnMapping> getColumns() { return Collections.unmodifiableCollection(orderdColumns); } }