package com.lingbobu.flashdb.transfer.sqlfunc;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanFactory;
import org.springframework.beans.factory.BeanFactoryAware;
import com.lingbobu.flashdb.transfer.impl.FtpClientFactory;
import static com.lingbobu.flashdb.transfer.impl.FtpFileInput.*;
/**
* FTP 文件数据源的函数封装
*/
public class InputFtpFile {
/**
* 基于CSV文件的数据来源
*/
public static class FuncCsv implements BeanFactoryAware {
private BeanFactory beanFactory;
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.beanFactory = beanFactory;
}
public Csv call(String ftpFactoryBean, String filePath, String charsetName, String columnNames, boolean skipFirstLine) {
FtpClientFactory ftpFactory = beanFactory.getBean(ftpFactoryBean, FtpClientFactory.class);
return new Csv(ftpFactory, filePath, charsetName, columnNames, skipFirstLine);
}
public Csv call(String ftpFactoryBean, String filePath, String charsetName, String columnNames) {
FtpClientFactory ftpFactory = beanFactory.getBean(ftpFactoryBean, FtpClientFactory.class);
return new Csv(ftpFactory, filePath, charsetName, columnNames);
}
public Csv call(String ftpFactoryBean, String filePath, String charsetName) {
FtpClientFactory ftpFactory = beanFactory.getBean(ftpFactoryBean, FtpClientFactory.class);
return new Csv(ftpFactory, filePath, charsetName);
}
}
/**
* 基于JSON文件的数据来源
*/
public static class FuncJson implements BeanFactoryAware {
private BeanFactory beanFactory;
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.beanFactory = beanFactory;
}
public Json call(String ftpFactoryBean, String filePath, String charsetName, String fileExt, String[] childStringAsJson) {
FtpClientFactory ftpFactory = beanFactory.getBean(ftpFactoryBean, FtpClientFactory.class);
return new Json(ftpFactory, filePath, charsetName, fileExt, childStringAsJson);
}
public Json call(String ftpFactoryBean, String filePath, String charsetName, String fileExt) {
FtpClientFactory ftpFactory = beanFactory.getBean(ftpFactoryBean, FtpClientFactory.class);
return new Json(ftpFactory, filePath, charsetName, fileExt);
}
public Json call(String ftpFactoryBean, String filePath, String charsetName) {
FtpClientFactory ftpFactory = beanFactory.getBean(ftpFactoryBean, FtpClientFactory.class);
return new Json(ftpFactory, filePath, charsetName);
}
public Json call(String ftpFactoryBean, String filePath) {
FtpClientFactory ftpFactory = beanFactory.getBean(ftpFactoryBean, FtpClientFactory.class);
return new Json(ftpFactory, filePath);
}
}
/**
* 基于XML文件的数据来源
*/
public static class FuncXml implements BeanFactoryAware {
private BeanFactory beanFactory;
@Override
public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
this.beanFactory = beanFactory;
}
public Xml call(String ftpFactoryBean, String filePath, boolean multiItemsPerFile, String itemXPathExpr, String listFields, String listmapFields, String[] fieldsAndXPath) {
FtpClientFactory ftpFactory = beanFactory.getBean(ftpFactoryBean, FtpClientFactory.class);
return new Xml(ftpFactory, filePath, multiItemsPerFile, itemXPathExpr, listFields, listmapFields, fieldsAndXPath);
}
public Xml call(String ftpFactoryBean, String filePath, boolean multiItemsPerFile, String itemXPathExpr, String listFields, String listmapFields) {
FtpClientFactory ftpFactory = beanFactory.getBean(ftpFactoryBean, FtpClientFactory.class);
return new Xml(ftpFactory, filePath, multiItemsPerFile, itemXPathExpr, listFields, listmapFields);
}
public Xml call(String ftpFactoryBean, String filePath, boolean multiItemsPerFile, String itemXPathExpr) {
FtpClientFactory ftpFactory = beanFactory.getBean(ftpFactoryBean, FtpClientFactory.class);
return new Xml(ftpFactory, filePath, multiItemsPerFile, itemXPathExpr);
}
}
}