本文整理汇总了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;未经允许,请勿转载。 |
请发表评论