com.alipay.rdf.file.spi.RdfFileFunctionSpi Maven / Gradle / Ivy
package com.alipay.rdf.file.spi;
import java.util.List;
import java.util.Map;
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.meta.FileMeta;
import com.alipay.rdf.file.model.FileConfig;
import com.alipay.rdf.file.model.FileDataTypeEnum;
import com.alipay.rdf.file.processor.ProcessorTypeEnum;
import com.alipay.rdf.file.protocol.RowDefinition;
/**
* Copyright (C) 2013-2018 Ant Financial Services Group
*
* 函数扩展spi
*
* @author hongwei.quhw
* @version $Id: RdfFileFunctionSpi.java, v 0.1 2017年8月19日 下午2:59:30 hongwei.quhw Exp $
*/
public interface RdfFileFunctionSpi {
/**
* 获取函数表达式
* */
String getExpression();
/**
* 设置函数表达式
*
* @param expression
*/
void setExpression(String expression);
/**
* 获取执行函数方法参数
*
* @return
*/
String[] getParams();
/**
* 设置执行函数方法参数
*
* @param params
*/
void setParams(String[] params);
/**
* 检查函数执行参数
*/
void checkParams();
/**
* 执行函数
*
* @param ctx
* @return
*/
Object execute(FuncContext ctx);
/**
* 获取函数执行所在的数据类型
*
* @return
*/
FileDataTypeEnum getRowType();
/**
* 设置函数执行所在的数据类型
*
* @param rowType
*/
void setRowType(FileDataTypeEnum rowType);
/**
* 此函数操作涉及的行数
*
*/
int rowsAffected(RowDefinition rd, FileMeta fileMeta);
/**
* 函数执行上下文
*/
public static class FuncContext {
public String protocolName;
public CodecType codecType;
public Object rowBean;
public FileWriter writer;
public FileReader reader;
public Object field;
public FileColumnMeta columnMeta;
public FileConfig fileConfig;
public Map> processors;
}
/**
* 函数执行编码类型
*
* @author hongwei.quhw
* @version $Id: RdfFileFunctionSpi.java, v 0.1 2017年8月19日 下午3:02:09 hongwei.quhw Exp $
*/
public enum CodecType {
SERIALIZE, DESERIALIZE;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy