public TableMetaData(final Collection<ColumnMetaData> columnMetaDataList) { columns = new LinkedHashMap<>(columnMetaDataList.size(), 1); for (ColumnMetaData each : columnMetaDataList) { columns.put(each.getColumnName(), each); } } }
private static Optional<ColumnMetaData> find(final String columnName, final List<ColumnMetaData> columnMetaDataList) { for (ColumnMetaData each : columnMetaDataList) { if (columnName.equals(each.getColumnName())) { return Optional.of(each); } } return Optional.absent(); }
private static void dropColumnDefinitions(final Collection<String> droppedColumnNames, final List<ColumnMetaData> columnMetaDataList) { List<ColumnMetaData> droppedColumnMetaDataList = new LinkedList<>(); for (ColumnMetaData each : columnMetaDataList) { if (droppedColumnNames.contains(each.getColumnName())) { droppedColumnMetaDataList.add(each); } } columnMetaDataList.removeAll(droppedColumnMetaDataList); } }
private static List<ColumnMetaData> createColumnMetaDataList( final Map<String, ColumnDefinitionSegment> modifiedColumnDefinitions, final boolean dropPrimaryKey, final TableMetaData oldTableMetaData) { List<ColumnMetaData> result = new LinkedList<>(); for (ColumnMetaData each : oldTableMetaData.getColumns().values()) { ColumnMetaData columnMetaData; if (modifiedColumnDefinitions.containsKey(each.getColumnName())) { ColumnDefinitionSegment columnDefinition = modifiedColumnDefinitions.get(each.getColumnName()); columnMetaData = new ColumnMetaData(columnDefinition.getColumnName(), columnDefinition.getDataType(), !dropPrimaryKey && columnDefinition.isPrimaryKey()); } else { columnMetaData = new ColumnMetaData(each.getColumnName(), each.getDataType(), !dropPrimaryKey && each.isPrimaryKey()); } result.add(columnMetaData); } return result; }
/** * Find column definition from meta data. * * @param columnName column name * @param shardingTableMetaData sharding table meta data * @return column definition */ public Optional<ColumnDefinitionSegment> findColumnDefinitionFromMetaData(final String columnName, final ShardingTableMetaData shardingTableMetaData) { if (!shardingTableMetaData.containsTable(getTables().getSingleTableName())) { return Optional.absent(); } for (ColumnMetaData each : shardingTableMetaData.get(getTables().getSingleTableName()).getColumns().values()) { if (columnName.equalsIgnoreCase(each.getColumnName())) { return Optional.of(new ColumnDefinitionSegment(columnName, each.getDataType(), each.isPrimaryKey())); } } return Optional.absent(); }