程序包 com.walker.di

类 AbstractDataImportor

java.lang.Object
com.walker.di.AbstractDataImportor
所有已实现的接口:
DataImportor
直接已知子类:
InputStreamDataImportor

public abstract class AbstractDataImportor extends Object implements DataImportor
  • 字段详细资料

    • logger

      protected final transient org.slf4j.Logger logger
    • MAX_BATCH_SIZE

      protected static final long MAX_BATCH_SIZE
      另请参阅:
  • 构造器详细资料

    • AbstractDataImportor

      public AbstractDataImportor()
  • 方法详细资料

    • setBatchLoadListener

      public void setBatchLoadListener(BatchLoadListener batchLoadListener)
    • load

      public void load() throws DataImportException
      从接口复制的说明: DataImportor
      加载并导入数据,业务调用该方法完成导入具体操作。
      指定者:
      load 在接口中 DataImportor
      抛出:
      DataImportException
    • doExecuteImport

      protected void doExecuteImport(List<Object[]> rows, List<String> fieldNames) throws DataImportException
      执行一次导入保存操作,无论一次还是批量都调用该方法。
           1)一次性的仅执行一次
           2)批量的会多次执行
       
      参数:
      rows -
      fieldNames -
      抛出:
      DataImportException
    • doValidate

      protected boolean doValidate(List<Object[]> rows)
    • getDataMap

      protected TreeMap<String,String> getDataMap(Object[] data)
      把加载的数据转换成 Map 对象,key = column_name, value = data_object
      参数:
      data -
      返回:
    • getKeyValueList

      protected List<KeyValue<String,String>> getKeyValueList(Object[] data, List<String> fieldNames)
    • isBatchSupport

      public boolean isBatchSupport()
      从接口复制的说明: DataImportor
      是否支持批量导入,对于大数据量导入会提高效率。

      此时导入策略会启用批量加载并小块写入方式,避免内存溢出并提高效率。

      指定者:
      isBatchSupport 在接口中 DataImportor
      返回:
    • isBrokenContinue

      public boolean isBrokenContinue()
      从接口复制的说明: DataImportor
      是否支持断点续传(导入),如果支持,引擎会记录导入位置,并在下次重新导入时,从该位置开始。

      但这需要提供唯一标识以确定要使用断点功能,
      指定者:
      isBrokenContinue 在接口中 DataImportor
      返回:
    • setBatchEnabled

      public void setBatchEnabled()
      从接口复制的说明: DataImportor
      设置允许批量导入,使用默认参数。
      指定者:
      setBatchEnabled 在接口中 DataImportor
    • setBatchSize

      public void setBatchSize(long batchSize)
      从接口复制的说明: DataImportor
      设置批量导入的数量,默认不能超过:512
      指定者:
      setBatchSize 在接口中 DataImportor
    • setBrokenContinue

      public void setBrokenContinue(boolean allow)
      从接口复制的说明: DataImportor
      设置是否支持断点续传(导入)
      指定者:
      setBrokenContinue 在接口中 DataImportor
    • setBrokenId

      public void setBrokenId(String brokenId)
      从接口复制的说明: DataImportor
      设置断点续传的标识,用于告知引擎需要使用该功能。
      指定者:
      setBrokenId 在接口中 DataImportor
    • setFieldNames

      public void setFieldNames(List<String> fieldNames)
      从接口复制的说明: DataImportor
      设置导入数据列名字
      指定者:
      setFieldNames 在接口中 DataImportor
    • setIgnoreRows

      public void setIgnoreRows(int number)
      从接口复制的说明: DataImportor
      设置导入数据时,忽略的行数。

      有时导入文件第一个可能是说明行,需要忽略,该方法可设置忽略多少行(这些行不导入)。
      指定者:
      setIgnoreRows 在接口中 DataImportor
    • setBatchSleepMills

      public void setBatchSleepMills(long millSeconds)
      从接口复制的说明: DataImportor
      设置批量导入时,每次保存间隔线程休眠时间,如果为0表示不休息。
      指定者:
      setBatchSleepMills 在接口中 DataImportor
      参数:
      millSeconds - 毫秒值
    • getFieldNames

      public List<String> getFieldNames()
      从接口复制的说明: DataImportor
      获取导入数据的列名字集合。
      指定者:
      getFieldNames 在接口中 DataImportor
      返回:
    • getBatchSize

      public long getBatchSize()
      返回批量加载导入数据的数量(每次)
      指定者:
      getBatchSize 在接口中 DataImportor
      返回:
    • getSuccessSize

      public long getSuccessSize()
      从接口复制的说明: DataImportor
      返回已经成功导入数量。
      指定者:
      getSuccessSize 在接口中 DataImportor
      返回:
    • getId

      public String getId()
      从接口复制的说明: DataImportor
      导入唯一标识,由业务确定,在导入错误时,运行把错误结果重新导入
      指定者:
      getId 在接口中 DataImportor
      返回:
    • setId

      public void setId(String id)
      指定者:
      setId 在接口中 DataImportor
    • setShowError

      public void setShowError(boolean showError)
      从接口复制的说明: DataImportor
      设置'是否显示错误结果文件',如果显示则会为用户提供导入错误的结果文件。
      指定者:
      setShowError 在接口中 DataImportor
    • setSaveFileFolder

      public void setSaveFileFolder(String saveFileFolder)
      从接口复制的说明: DataImportor
      设置保存文件的文件夹路径,如: d:/file/
      指定者:
      setSaveFileFolder 在接口中 DataImportor
    • getErrorFile

      public String getErrorFile()
      返回错误文件路径,如: d:/file/12344566_error.csv
      指定者:
      getErrorFile 在接口中 DataImportor
      返回:
    • getSaveFileFolder

      protected String getSaveFileFolder()
    • getIgnoreRows

      public int getIgnoreRows()
      返回忽略导入多少行数据。
      返回:
    • getSleepMillSeconds

      public long getSleepMillSeconds()
      返回批量导入时,每次保存数据,线程休息毫秒时间,如果0表示不休眠。
      返回:
    • setSource

      protected void setSource(Object source)
      设置加载数据的原始参数,可能是文件路径、表名等。
      参数:
      source -
    • setSaveSizeOnce

      public void setSaveSizeOnce(long saveSizeOnce)
      设置每次保存记录的数量,通常持久化到数据库中是一批次操作,系统默认:200
      参数:
      saveSizeOnce -
    • setHeadRowNumber

      public void setHeadRowNumber(int headRowNumber)
      从接口复制的说明: DataImportor
      设置导入数据中,表头有几行,支持多行表头。
      指定者:
      setHeadRowNumber 在接口中 DataImportor
    • setUpdateType

      public void setUpdateType(UpdateType updateType)
      从接口复制的说明: DataImportor
      设置数据更新方式,如果在导入时需要判断数据是否存在,则可以设置该更新策略。

      目前支持两种: 忽略、覆盖。
      指定者:
      setUpdateType 在接口中 DataImportor
    • getUpdateType

      public UpdateType getUpdateType()
      判断数据更新类型,在需要检查数据是否存在时使用。
      返回:
    • getHeadRowNumber

      public int getHeadRowNumber()
      返回表头有几行。
      返回:
    • getSaveSizeOnce

      public long getSaveSizeOnce()
    • increaseImportSize

      protected void increaseImportSize(long addSize)
      增加导入数量,表示已经成功导入数据量。
      参数:
      addSize -
    • isShowError

      protected boolean isShowError()
    • acquireImportDataList

      protected abstract List<Object[]> acquireImportDataList(Object source) throws DataImportException
      由子类加载具体导入数据集合。
      参数:
      source - 原始输入源(参数)
      返回:
      抛出:
      DataImportException
    • acquireImportBatch

      protected abstract void acquireImportBatch(BatchLoadListener batchLoadListener, Object source) throws DataImportException
      批量加载具体导入数据集合。
      参数:
      batchLoadListener -
      source -
      抛出:
      DataImportException
    • validateData

      protected abstract String validateData(Map<String,String> data)
      判断一条数据是否符合验证,由业务实现。
      参数:
      data -
      返回:
      返回校验不通过原因,如果校验正确则返回: null
    • saveImportData

      protected abstract void saveImportData(List<Object[]> dataList, List<String> fieldNames) throws BusinessImportException
      保存导入的数据集合。
      参数:
      dataList -
      抛出:
      BusinessImportException
    • saveBrokenInfo

      protected abstract void saveBrokenInfo(long index)
      保存断点信息,后续重新导入需要使用。
      参数:
      index - 当前记录索引值
    • acquireErrorWriter

      protected abstract ErrorWriter acquireErrorWriter(String id, List<String> fieldNames)
      获取一个错误记录器实现对象。
      参数:
      id - 导入唯一业务标识
      fieldNames - 数据标题列集合
      返回:
    • getImportFileSuffix

      protected abstract String getImportFileSuffix()
      获得导入文(以及错误结果)文件后缀名,如: error.csv | error.xlsx
      返回: