/** 构建数据库主键字段的信息 */ private TableData buildTableData(Table table, List<EventColumn> keys) { Column[] tableColumns = table.getColumns(); TableData data = new TableData(); data.indexs = new int[keys.size()]; data.columnNames = new String[keys.size()]; data.columnTypes = new int[keys.size()]; data.columnValues = new Object[keys.size()]; int i = 0; int index = 0; for (EventColumn keyColumn : keys) { for (Column tableColumn : tableColumns) { if (StringUtils.equalsIgnoreCase(keyColumn.getColumnName(), tableColumn.getName())) { data.indexs[i] = index; data.columnNames[i] = tableColumn.getName(); data.columnTypes[i] = tableColumn.getTypeCode(); data.columnValues[i] = SqlUtils.stringToSqlValue( keyColumn.getColumnValue(), tableColumn.getTypeCode(), tableColumn.isRequired(), false); i++; break; } index++; } } if (i != keys.size()) { throw new ExtractException( "keys is not found in table " + table.toString() + " keys : " + dumpEventColumn(keys)); } return data; }
/** 构建数据库非主键字段的信息 */ private TableData buildTableData( Table table, List<EventColumn> columns, boolean needAll, List<String> viewColumnNames) { Column[] tableColumns = table.getColumns(); List<Column> noPkcolumns = new ArrayList<Column>(); for (Column tableColumn : tableColumns) { if (!tableColumn.isPrimaryKey()) { noPkcolumns.add(tableColumn); } } TableData data = new TableData(); int size = columns.size(); if (needAll) { size = viewColumnNames.size() != 0 ? viewColumnNames.size() : noPkcolumns.size(); // 如果view不为空就使用view作为反查字段 } data.indexs = new int[size]; data.columnNames = new String[size]; data.columnTypes = new int[size]; data.columnValues = new Object[size]; int i = 0; if (needAll) { int index = 0; if (viewColumnNames.size() != 0) { // 存在视图定义 for (Column tableColumn : tableColumns) { if (viewColumnNames.contains(tableColumn.getName())) { // 只放入在view中定义的 data.indexs[i] = index; // 计算下下标 data.columnNames[i] = tableColumn.getName(); data.columnTypes[i] = tableColumn.getTypeCode(); i++; } index++; } } else { for (Column tableColumn : tableColumns) { if (!tableColumn.isPrimaryKey()) { data.indexs[i] = index; // 计算下下标 data.columnNames[i] = tableColumn.getName(); data.columnTypes[i] = tableColumn.getTypeCode(); i++; } index++; } } } else { for (EventColumn column : columns) { int index = 0; for (Column tableColumn : tableColumns) { if (StringUtils.equalsIgnoreCase(column.getColumnName(), tableColumn.getName())) { data.indexs[i] = index; // 计算下下标 data.columnNames[i] = tableColumn.getName(); data.columnTypes[i] = tableColumn.getTypeCode(); i++; break; } index++; } } if (i != columns.size()) { throw new ExtractException( "columns is not found in table " + table.toString() + " columns : " + dumpEventColumn(columns)); } } return data; }