com.alipay.rdf.file.codec.ColumnInfoVerticalCodec Maven / Gradle / Ivy
package com.alipay.rdf.file.codec;
import com.alipay.rdf.file.exception.RdfErrorEnum;
import com.alipay.rdf.file.exception.RdfFileException;
import com.alipay.rdf.file.interfaces.FileReader;
import com.alipay.rdf.file.interfaces.FileWriter;
import com.alipay.rdf.file.meta.FileColumnMeta;
import com.alipay.rdf.file.model.FileConfig;
import com.alipay.rdf.file.model.FileDataTypeEnum;
import com.alipay.rdf.file.util.RdfFileUtil;
/**
* Copyright (C) 2013-2018 Ant Financial Services Group
*
* 字段信息纵向编码解码
*
* 不涉及字段分隔符
*
* @author hongwei.quhw
* @version $Id: ColumnInfoVerticalCodec.java, v 0.1 2017-1-3 下午5:50:00 hongwei.quhw Exp $
*/
public class ColumnInfoVerticalCodec extends AbstractColumnInfoCodec {
public static final ColumnInfoVerticalCodec instance = new ColumnInfoVerticalCodec();
public static void serialize(FileDataTypeEnum layoutType, FileDataTypeEnum dataType, FileConfig fileConfig,
FileWriter writer, String method) {
//按行写入column字段
for (FileColumnMeta colMeta : getColumnMetas(fileConfig, dataType)) {
writer.writeLine(getValue(colMeta, method));
}
}
public static T deserialize(FileDataTypeEnum layoutType, FileDataTypeEnum dataType, FileConfig fileConfig,
FileReader reader, String method) {
for (FileColumnMeta colMeta : getColumnMetas(fileConfig, dataType)) {
String columnName = RdfFileUtil.assertTrimNotBlank(reader.readLine());
RdfFileUtil.assertNotBlank(columnName, "文件=" + fileConfig.getFilePath() + ", " + layoutType.name() + " 内容缺失");
String tempalteValue = getValue(colMeta, method);
if (!tempalteValue.equals(columnName)) {
throw new RdfFileException(
"rdf-file#" + layoutType.name() + "模板中定义的column为[" + tempalteValue + "], 文件中读取的column为[" + columnName + "]不一致",
RdfErrorEnum.VALIDATE_ERROR);
}
}
return null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy