コード例 #1
0
    /** 构建数据库主键字段的信息 */
    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;
    }
コード例 #2
0
    /** 构建数据库非主键字段的信息 */
    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;
    }