Commit b016c525 authored by terrymanu's avatar terrymanu
Browse files

refactor TableMetaData

parent 0e82afe3
Loading
Loading
Loading
Loading
+7 −7
Original line number Diff line number Diff line
@@ -35,7 +35,7 @@ import java.util.Map;
public final class ShardingTableMetaData {
    
    @Getter
    private final Map<String, TableMetaData> tableMetaDataMap;
    private final Map<String, TableMetaData> tables;
    
    /**
     * Get table meta data by table name.
@@ -43,7 +43,7 @@ public final class ShardingTableMetaData {
     * @return table mata data
     */
    public TableMetaData get(final String logicTableName) {
        return tableMetaDataMap.get(logicTableName);
        return tables.get(logicTableName);
    }
    
    /**
@@ -53,7 +53,7 @@ public final class ShardingTableMetaData {
     * @param tableMetaData table meta data
     */
    public void put(final String logicTableName, final TableMetaData tableMetaData) {
        tableMetaDataMap.put(logicTableName, tableMetaData);
        tables.put(logicTableName, tableMetaData);
    }
    
    /**
@@ -62,7 +62,7 @@ public final class ShardingTableMetaData {
     * @param logicTableName logic table name
     */
    public void remove(final String logicTableName) {
        tableMetaDataMap.remove(logicTableName);
        tables.remove(logicTableName);
    }
    
    /**
@@ -72,7 +72,7 @@ public final class ShardingTableMetaData {
     * @return contains table from table meta data or not
     */
    public boolean containsTable(final String tableName) {
        return tableMetaDataMap.containsKey(tableName);
        return tables.containsKey(tableName);
    }
    
    /**
@@ -83,7 +83,7 @@ public final class ShardingTableMetaData {
     * @return contains column from table meta data or not
     */
    public boolean containsColumn(final String tableName, final String column) {
        return containsTable(tableName) && tableMetaDataMap.get(tableName).getAllColumnNames().contains(column.toLowerCase());
        return containsTable(tableName) && tables.get(tableName).getAllColumnNames().contains(column.toLowerCase());
    }
    
    /**
@@ -93,7 +93,7 @@ public final class ShardingTableMetaData {
     * @return column names.
     */
    public Collection<String> getAllColumnNames(final String tableName) {
        TableMetaData tableMeta = tableMetaDataMap.get(tableName);
        TableMetaData tableMeta = tables.get(tableName);
        if (null == tableMeta) {
            return Collections.emptyList();
        }
+20 −11
Original line number Diff line number Diff line
@@ -18,25 +18,29 @@
package io.shardingsphere.core.metadata.table;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import lombok.ToString;

import java.util.Collection;
import java.util.LinkedList;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * Table metadata.
 *
 * @author panjuan
 */
@RequiredArgsConstructor
@Getter
@EqualsAndHashCode
@ToString
public final class TableMetaData {
    
    private final Collection<ColumnMetaData> columnMetaDataList;
    private final Map<String, ColumnMetaData> columns;
    
    public TableMetaData(final Collection<ColumnMetaData> columnMetaDataList) {
        columns = new LinkedHashMap<>(columnMetaDataList.size(), 1);
        for (ColumnMetaData each : columnMetaDataList) {
            columns.put(each.getColumnName(), each);
        }
    }
    
    /**
     * Get all column names.
@@ -44,10 +48,15 @@ public final class TableMetaData {
     * @return column names
     */
    public Collection<String> getAllColumnNames() {
        Collection<String> result = new LinkedList<>();
        for (ColumnMetaData each : columnMetaDataList) {
            result.add(each.getColumnName().toLowerCase());
        return columns.keySet();
    }
        return result;
    
    /**
     * Get all column meta data.
     *
     * @return column meta data
     */
    public Collection<ColumnMetaData> getAllColumns() {
        return columns.values();
    }
}
+1 −1
Original line number Diff line number Diff line
@@ -70,7 +70,7 @@ public final class TableMetaDataFactory {
    
    private static List<ColumnMetaData> createNewColumnMetaDataList(final AlterTableStatement alterTableStatement, final TableMetaData oldTableMetaData) {
        List<ColumnMetaData> result = new LinkedList<>();
        for (ColumnMetaData each : oldTableMetaData.getColumnMetaDataList()) {
        for (ColumnMetaData each : oldTableMetaData.getAllColumns()) {
            String columnName;
            String dataType;
            boolean primaryKey;
+1 −1
Original line number Diff line number Diff line
@@ -84,7 +84,7 @@ public final class AlterTableStatement extends DDLStatement {
        if (!shardingTableMetaData.containsTable(getTables().getSingleTableName())) {
            return Optional.absent();
        }
        for (ColumnMetaData each : shardingTableMetaData.get(getTables().getSingleTableName()).getColumnMetaDataList()) {
        for (ColumnMetaData each : shardingTableMetaData.get(getTables().getSingleTableName()).getAllColumns()) {
            if (columnName.equalsIgnoreCase(each.getColumnName())) {
                return Optional.of(new ColumnDefinitionSegment(columnName, each.getDataType(), each.isPrimaryKey()));
            }