• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Java Column类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中com.alibaba.otter.canal.protocol.CanalEntry.Column的典型用法代码示例。如果您正苦于以下问题:Java Column类的具体用法?Java Column怎么用?Java Column使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



Column类属于com.alibaba.otter.canal.protocol.CanalEntry包,在下文中一共展示了Column类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: convertProtobufRecord

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
public static <T extends Object> PairWrapper<String, Object> convertProtobufRecord(EntryHeader header, RowData rowData) {
   	PairWrapper<String, Object> wrapper = new PairWrapper<>();
	List<Column> Columns = null;
	if(header.isInsert() || header.isUpdate()){
		Columns = rowData.getAfterColumnsList();	
	}else if(header.isDelete()){
		Columns = rowData.getBeforeColumnsList();
	}
	wrapper.addProperties(Constants.MessageBodyKey.POS, header.getPos());
	wrapper.addProperties(Constants.MessageBodyKey.OP_TS, header.getTsTime());

	Map<String, Object> map = convert2map(Columns);
	for (Map.Entry<String, Object> entry : map.entrySet()) {
		wrapper.addPair(new Pair<>(entry.getKey(), CharSequence.class.isInstance(entry.getValue())?entry.getValue().toString():entry.getValue()));
	}

	return wrapper;
}
 
开发者ID:BriData,项目名称:DBus,代码行数:19,代码来源:Convertor.java


示例2: getColumnLengthAndPrecision

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
public static int[] getColumnLengthAndPrecision(Column column){
	int[] ret = new int[2];
	String data = StringUtils.substringBetween(column.getMysqlType(), "(",")");
	String length = StringUtils.substringBefore(data, ",");
	String precision = StringUtils.substringAfter(data, ",");
	String type = getColumnType(column).toUpperCase();
	if("SET".equals(type) || "ENUM".equals(type)){
		ret[0] = 0;
		ret[1] = 0;
	}else{
		if(StringUtils.isEmpty(length)){
			ret[0] = 0;
		}else{
			ret[0] = Integer.parseInt(length);
		}
		if(StringUtils.isEmpty(precision)){
			ret[1] = 0;
		}else{
			ret[1] = Integer.parseInt(precision);
		}
	}
	return ret;
}
 
开发者ID:BriData,项目名称:DBus,代码行数:24,代码来源:Support.java


示例3: addPayloadColumns

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
private int addPayloadColumns(List<Object> payloads ,  List<Column> columns , PairWrapper<String, Object> wrapper) {
    int payloadSize = 0;
    try {
        for (Column column : columns) {
            if (Support.isSupported(column)) {
                Pair<String, Object> pair = wrapper.getPair(column.getName());
                Object value = pair.getValue();
                payloads.add(value);
                if (value != null) {
                    payloadSize += value.toString().getBytes("utf-8").length;
                }
            }
        }
    } catch (Exception e) {
        logger.error("Build dbus message error while adding payload columns, abort this message, {}", e.getMessage(), e);
    }
    return payloadSize;
}
 
开发者ID:BriData,项目名称:DBus,代码行数:19,代码来源:MysqlWrapperDefaultHandler.java


示例4: createBuilderWithSchema

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
/**
 * 创建DBusMessageBuilder对象,同时生成ums schema
 */
private DbusMessageBuilder createBuilderWithSchema(MetaVersion version, MessageEntry msgEntry) {
    DbusMessageBuilder builder = new DbusMessageBuilder();
    String namespace = builder.buildNameSpace(Utils.getDataSourceNamespace(),
            msgEntry.getEntryHeader().getSchemaName(), msgEntry.getEntryHeader().getTableName(),
            version.getVersion(), msgEntry.getEntryHeader().getPartitionTableName());
    builder.build(DbusMessage.ProtocolType.DATA_INCREMENT_DATA, namespace, table.getBatchId());
    EventType eventType = msgEntry.getEntryHeader().getOperType();
    RowData rowData = msgEntry.getMsgColumn().getRowDataLst().get(0);
    List<Column> columns = Support.getFinalColumns(eventType, rowData);
    for (Column column : columns) {
        String colType = Support.getColumnType(column);
        if (Support.isSupported(colType)) {
            builder.appendSchema(column.getName(), DataType.convertMysqlDataType(colType), true);
        }
    }
    return builder;
}
 
开发者ID:BriData,项目名称:DBus,代码行数:21,代码来源:MysqlWrapperDefaultHandler.java


示例5: buildMeta

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
private MetaWrapper buildMeta(MessageEntry msgEntry) {
    MetaWrapper metaWrapper = new MetaWrapper();
    EntryHeader header = msgEntry.getEntryHeader();
    RowData rowData = msgEntry.getMsgColumn().getRowDataLst().get(0);
    List<Column> columns = Support.getFinalColumns(header.getOperType(), rowData);
    for (Column column : columns) {
        MetaWrapper.MetaCell cell = new MetaWrapper.MetaCell();
        cell.setColumnName(column.getName());
        cell.setDataType(Support.getColumnType(column));
        int[] ret = Support.getColumnLengthAndPrecision(column);
        cell.setDataLength(ret[0]);
        cell.setDataPrecision(ret[1]);
        cell.setDataScale(0);
        cell.setIsPk(column.getIsKey() ? "Y" : "N");
        cell.setNullAble("N");
        cell.setDdlTime(new Timestamp(header.getExecuteTime()));
        cell.setColumnId(column.getIndex());
        cell.setInternalColumnId(column.getIndex());
        cell.setHiddenColumn("NO");
        cell.setVirtualColumn("NO");
        metaWrapper.addMetaCell(cell);
    }
    return metaWrapper;
}
 
开发者ID:BriData,项目名称:DBus,代码行数:25,代码来源:MaDefaultHandler.java


示例6: isUpdate

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
private boolean isUpdate(List<Column> bfColumns, String newValue, int index) {
    if (bfColumns == null) {
        throw new CanalParseException("ERROR ## the bfColumns is null");
    }

    if (index < 0) {
        return false;
    }

    for (Column column : bfColumns) {
        if (column.getIndex() == index) {// �Ƚ�before / after��column index
            if (column.getIsNull() && newValue == null) {
                // ���ȫ��null
                return false;
            } else if (newValue != null && (!column.getIsNull() && column.getValue().equals(newValue))) {
                // fixed issue #135, old column is Null
                // �����Ϊnull���������
                return false;
            }
        }
    }

    // ����nolob/minialģʽ��,�����Ҳ���before��¼,��Ϊ���б仯
    return true;
}
 
开发者ID:BriData,项目名称:DBus,代码行数:26,代码来源:LogEventConvert 原始文件.java


示例7: isUpdate

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
private boolean isUpdate(List<Column> bfColumns, String newValue, int index) {
    if (bfColumns == null) {
        throw new CanalParseException("ERROR ## the bfColumns is null");
    }

    if (index < 0) {
        return false;
    }

    for (Column column : bfColumns) {
        if (column.getIndex() == index) {// 比较before / after的column index
            if (column.getIsNull() && newValue == null) {
                // 如果全是null
                return false;
            } else if (newValue != null && (!column.getIsNull() && column.getValue().equals(newValue))) {
                // fixed issue #135, old column is Null
                // 如果不为null,并且相等
                return false;
            }
        }
    }

    // 比如nolob/minial模式下,可能找不到before记录,认为是有变化
    return true;
}
 
开发者ID:BriData,项目名称:DBus,代码行数:26,代码来源:LogEventConvert.java


示例8: isKey

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
private boolean isKey(TableInfoHolder tableHolder, String tableName, Column column) {
    boolean isEKey = column.getIsKey();
    if (tableHolder == null || tableHolder.getTable() == null || !tableHolder.isUseTableTransform()) {
        return isEKey;
    }

    org.apache.ddlutils.model.Column dbColumn = tableHolder.getTable().findColumn(column.getName(), false);
    if (dbColumn == null) {
        // 可能存在ddl,重新reload一下table
        tableHolder.reload();
        dbColumn = tableHolder.getTable().findColumn(column.getName(), false);
        if (dbColumn == null) {
            throw new SelectException(String.format("not found column[%s] in table[%s]",
                column.getName(),
                tableHolder.getTable().toVerboseString()));
        }
    }

    boolean isMKey = dbColumn.isPrimaryKey();
    if (isMKey != isEKey) {
        logger.info("table [{}] column [{}] is not match , isMeky: {}, isEkey {}",
            new Object[] { tableName, column.getName(), isMKey, isEKey });
    }
    return isMKey;
}
 
开发者ID:luoyaogui,项目名称:otter-G,代码行数:26,代码来源:MessageParser.java


示例9: convertProtobufRecordBeforeUpdate

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
public static <T extends Object> PairWrapper<String, Object> convertProtobufRecordBeforeUpdate(EntryHeader header, RowData rowData) {
	PairWrapper<String, Object> wrapper = new PairWrapper<>();
	List<Column> Columns = rowData.getBeforeColumnsList();
	Map<String, Object> map = convert2map(Columns);
	for (Map.Entry<String, Object> entry : map.entrySet()) {
		wrapper.addPair(new Pair<>(entry.getKey(), CharSequence.class.isInstance(entry.getValue())?entry.getValue().toString():entry.getValue()));
	}

	return wrapper;
}
 
开发者ID:BriData,项目名称:DBus,代码行数:11,代码来源:Convertor.java


示例10: convert2map

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
private static Map<String, Object> convert2map(List<Column> cols) {
	Map<String, Object> map = Maps.newHashMap();
	if(cols != null){
		for(Column col : cols){
 		String colName = col.getName();
if(col.getIsNull()){
	map.put(colName, null);
} else {
	map.put(colName, col.getValue());
}
		}
	}
	return map;
}
 
开发者ID:BriData,项目名称:DBus,代码行数:15,代码来源:Convertor.java


示例11: getFinalColumns

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
public static List<Column> getFinalColumns(EventType type, RowData rowData){
	List<Column> Columns = null;
	if(type == EventType.INSERT || type == EventType.UPDATE){
		Columns = rowData.getAfterColumnsList();	
	}else if(type == EventType.DELETE){
		Columns = rowData.getBeforeColumnsList();
	}
	return Columns;
}
 
开发者ID:BriData,项目名称:DBus,代码行数:10,代码来源:Support.java


示例12: checkCompatibleLoopback

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
/**
 * 检查otter3.0的兼容表处理,主要部分业务使用了3.0的功能,需要考虑兼容支持,后续可删除
 */
private int checkCompatibleLoopback(Pipeline pipeline, RowData rowData) {
    // 检查_info字段
    // 首先检查下after记录,从无变有的过程,一般出现在事务头
    Column infokColumn = getColumnIgnoreCase(rowData.getAfterColumnsList(), compatibleMarkInfoColumn);
    // 匹配对应的channel id
    if (infokColumn != null && infokColumn.getValue().toUpperCase().endsWith(RETL_CLIENT_FLAG)) {
        return 1;
    }

    infokColumn = getColumnIgnoreCase(rowData.getBeforeColumnsList(), compatibleMarkInfoColumn);
    if (infokColumn != null && infokColumn.getValue().toUpperCase().endsWith(RETL_CLIENT_FLAG)) {
        return 1;
    }

    // 检查_id字段
    Column markColumn = getColumnIgnoreCase(rowData.getAfterColumnsList(), compatibleMarkIdentifierColumn);
    // 匹配对应的channel id
    if (markColumn != null && pipeline.getChannelId().equals(Long.parseLong(markColumn.getValue()))) {
        return 2;
    }

    markColumn = getColumnIgnoreCase(rowData.getBeforeColumnsList(), compatibleMarkIdentifierColumn);
    if (markColumn != null && pipeline.getChannelId().equals(Long.parseLong(markColumn.getValue()))) {
        return 2;
    }

    return 0;
}
 
开发者ID:luoyaogui,项目名称:otter-G,代码行数:32,代码来源:MessageParser.java


示例13: getColumnIgnoreCase

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
private Column getColumnIgnoreCase(List<Column> columns, String columName) {
    for (Column column : columns) {
        if (column.getName().equalsIgnoreCase(columName)) {
            return column;
        }
    }

    return null;
}
 
开发者ID:luoyaogui,项目名称:otter-G,代码行数:10,代码来源:MessageParser.java


示例14: copyEventColumn

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
/**
 * 把 erosa-protocol's Column 转化成 otter's model EventColumn.
 * 
 * @param column
 * @return
 */
private EventColumn copyEventColumn(Column column, boolean isUpdate, TableInfoHolder tableHolder) {
    EventColumn eventColumn = new EventColumn();
    eventColumn.setIndex(column.getIndex());
    eventColumn.setKey(column.getIsKey());
    eventColumn.setNull(column.getIsNull());
    eventColumn.setColumnName(column.getName());
    eventColumn.setColumnValue(column.getValue());
    eventColumn.setUpdate(isUpdate);
    eventColumn.setColumnType(column.getSqlType());

    if (tableHolder != null && tableHolder.getTable() != null
        && (tableHolder.isUseTableTransform() || tableHolder.isOracle())) {
        org.apache.ddlutils.model.Column dbColumn = tableHolder.getTable().findColumn(column.getName(), false);
        if (dbColumn == null) {
            // 可能存在ddl,重新reload一下table
            tableHolder.reload();
            dbColumn = tableHolder.getTable().findColumn(column.getName(), false);
        }

        if (dbColumn != null) {
            int sqlType = dbColumn.getTypeCode();
            if (sqlType != column.getSqlType()) {
                // 针对oracle的erosa给出的字段为非标准的jdbc,需要做一次类型反查
                eventColumn.setColumnType(sqlType);
                logger.info("table [{}] column [{}] is not match , MeType: {}, EType {}", new Object[] {
                        tableHolder.getTable().getName(), column.getName(), sqlType, column.getSqlType() });
            }
        }
    }

    return eventColumn;
}
 
开发者ID:luoyaogui,项目名称:otter-G,代码行数:39,代码来源:MessageParser.java


示例15: doSync

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
@Override
protected void doSync(String database, String table, String index, String type, RowData rowData) {
    List<Column> columns = rowData.getAfterColumnsList();
    String primaryKey = Optional.ofNullable(mappingService.getTablePrimaryKeyMap().get(database + "." + table)).orElse("id");
    Column idColumn = columns.stream().filter(column -> column.getIsKey() && primaryKey.equals(column.getName())).findFirst().orElse(null);
    if (idColumn == null || StringUtils.isBlank(idColumn.getValue())) {
        logger.warn("update_column_find_null_warn update从column中找不到主键,database=" + database + ",table=" + table);
        return;
    }
    logger.debug("update_column_id_info update主键id,database=" + database + ",table=" + table + ",id=" + idColumn.getValue());
    Map<String, Object> dataMap = parseColumnsToMap(columns);
    elasticsearchService.update(index, type, idColumn.getValue(), dataMap);
    logger.debug("update_es_info 同步es插入操作成功!database=" + database + ",table=" + table + ",data=" + dataMap);
}
 
开发者ID:starcwang,项目名称:canal_mysql_elasticsearch_sync,代码行数:15,代码来源:UpdateCanalListener.java


示例16: doSync

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
@Override
protected void doSync(String database, String table, String index, String type, RowData rowData) {
    List<Column> columns = rowData.getAfterColumnsList();
    String primaryKey = Optional.ofNullable(mappingService.getTablePrimaryKeyMap().get(database + "." + table)).orElse("id");
    Column idColumn = columns.stream().filter(column -> column.getIsKey() && primaryKey.equals(column.getName())).findFirst().orElse(null);
    if (idColumn == null || StringUtils.isBlank(idColumn.getValue())) {
        logger.warn("insert_column_find_null_warn insert从column中找不到主键,database=" + database + ",table=" + table);
        return;
    }
    logger.debug("insert_column_id_info insert主键id,database=" + database + ",table=" + table + ",id=" + idColumn.getValue());
    Map<String, Object> dataMap = parseColumnsToMap(columns);
    elasticsearchService.insertById(index, type, idColumn.getValue(), dataMap);
    logger.debug("insert_es_info 同步es插入操作成功!database=" + database + ",table=" + table + ",data=" + JsonUtil.toJson(dataMap));
}
 
开发者ID:starcwang,项目名称:canal_mysql_elasticsearch_sync,代码行数:15,代码来源:InsertCanalListener.java


示例17: doSync

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
@Override
protected void doSync(String database, String table, String index, String type, RowData rowData) {
    List<Column> columns = rowData.getBeforeColumnsList();
    String primaryKey = Optional.ofNullable(mappingService.getTablePrimaryKeyMap().get(database + "." + table)).orElse("id");
    Column idColumn = columns.stream().filter(column -> column.getIsKey() && primaryKey.equals(column.getName())).findFirst().orElse(null);
    if (idColumn == null || StringUtils.isBlank(idColumn.getValue())) {
        logger.warn("insert_column_find_null_warn insert从column中找不到主键,database=" + database + ",table=" + table);
        return;
    }
    logger.debug("insert_column_id_info insert主键id,database=" + database + ",table=" + table + ",id=" + idColumn.getValue());
    elasticsearchService.deleteById(index, type, idColumn.getValue());
    logger.debug("insert_es_info 同步es插入操作成功!database=" + database + ",table=" + table + ",id=" + idColumn.getValue());
}
 
开发者ID:starcwang,项目名称:canal_mysql_elasticsearch_sync,代码行数:14,代码来源:DeleteCanalListener.java


示例18: parseColumnsToMap

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
Map<String, Object> parseColumnsToMap(List<Column> columns) {
    Map<String, Object> jsonMap = new HashMap<>();
    columns.forEach(column -> {
        if (column == null) {
            return;
        }
        jsonMap.put(column.getName(), column.getIsNull() ? null : mappingService.getElasticsearchTypeObject(column.getMysqlType(), column.getValue()));
    });
    return jsonMap;
}
 
开发者ID:starcwang,项目名称:canal_mysql_elasticsearch_sync,代码行数:11,代码来源:AbstractCanalListener.java


示例19: printColumn

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
protected void printColumn(List<Column> columns) {
    for (Column column : columns) {
        StringBuilder builder = new StringBuilder();
        builder.append(column.getName() + " : " + column.getValue());
        builder.append("    type=" + column.getMysqlType());
        if (column.getUpdated()) {
            builder.append("    update=" + column.getUpdated());
        }
        builder.append(SEP);
        logger.info(builder.toString());
    }
}
 
开发者ID:alibaba,项目名称:canal,代码行数:13,代码来源:AbstractCanalClientTest.java


示例20: isSupported

import com.alibaba.otter.canal.protocol.CanalEntry.Column; //导入依赖的package包/类
public static boolean isSupported(Column column){
	String type = StringUtils.substringBefore(column.getMysqlType(), "(");
	return SupportedMysqlDataType.isSupported(type);
}
 
开发者ID:BriData,项目名称:DBus,代码行数:5,代码来源:Support.java



注:本文中的com.alibaba.otter.canal.protocol.CanalEntry.Column类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java Containers类代码示例发布时间:2022-05-22
下一篇:
Java Util类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap