Class ValidatableFileDataReader

java.lang.Object
nablarch.fw.reader.FileDataReader
nablarch.fw.reader.ValidatableFileDataReader
All Implemented Interfaces:
DataReader<DataRecord>

public class ValidatableFileDataReader extends FileDataReader
ファイル内容のバリデーション機能を追加したデータリーダ。

ファイル全件の読み込みを行い、このリーダが提供するValidatableFileDataReader.FileValidatorActionに実装されたバリデーションロジックを setValidatorAction(FileValidatorAction)から設定することができる。 バリデーションが正常終了した場合は、入力ファイルを開きなおして本処理を行う。
また、setUseCache(boolean)trueを設定することで、バリデーション時に読み込んだデータを メモリ上にキャッシュし、都度2回の読み込みを1回に削減することができる。
ただし、データ量によってはメモリリソースを大幅に消費する点に注意すること。

Author:
Iwauo Tajima
  • Constructor Details

    • ValidatableFileDataReader

      @Published(tag="architect") public ValidatableFileDataReader()
      ValidatableFileDataReaderオブジェクトを生成する。
  • Method Details

    • read

      public DataRecord read(ExecutionContext ctx)
      データファイルを1レコードづつ読み込む。

      ファイルがバリデーション済みでない場合、バリデーションを行う。
      次に読み込むレコードが存在しない場合、nullを返す。

      データをキャッシュしている場合、キャッシュからデータを読み込み返却する。
      キャッシュしていない場合、データファイルからデータを読み込み返却する。

      Specified by:
      read in interface DataReader<DataRecord>
      Overrides:
      read in class FileDataReader
      Parameters:
      ctx - 実行コンテキスト
      Returns:
      1レコード分のデータレコード
    • hasNext

      public boolean hasNext(ExecutionContext ctx)
      次に読み込むデータが存在するかどうかを返却する。

      データをキャッシュしている場合、キャッシュから結果を返却する。
      キャッシュしていない場合、データファイルから結果を返却する。

      Specified by:
      hasNext in interface DataReader<DataRecord>
      Overrides:
      hasNext in class FileDataReader
      Parameters:
      ctx - 実行コンテキスト
      Returns:
      次に読み込むデータが存在する場合は true
    • close

      public void close(ExecutionContext ctx)
      このリーダの利用を停止し、内部的に保持している各種リソースを解放する。

      キャッシュを有効にしていた場合、キャッシュを削除する。

      Specified by:
      close in interface DataReader<DataRecord>
      Overrides:
      close in class FileDataReader
      Parameters:
      ctx - 実行コンテキスト
    • validate

      protected void validate(ExecutionContext ctx)
      バリデーションを行う。

      キャッシュを有効にしている場合、読み込んだデータをキャッシュする。
      無効にしている場合、入力ファイルの再読み込みを行うため、FileDataReaderを初期化する。

      Parameters:
      ctx - 実行コンテキスト
      Throws:
      IllegalStateException - バリデーション処理を実装したオブジェクトがnullの場合
      RuntimeException - 実行時例外が発生した場合
      Error - エラーが発生した場合
    • initialize

      protected void initialize()
      キャッシュを使用しない場合、ファイルリーダを初期化する。
    • setUseCache

      @Published(tag="architect") public ValidatableFileDataReader setUseCache(boolean useCache)
      バリデーション時に読み込んだデータをキャッシュし、本処理で使用するかどうかを設定する。
      Parameters:
      useCache - キャッシュを有効化する場合はtrue
      Returns:
      このオブジェクト自体
    • setValidatorAction

      @Published(tag="architect") public ValidatableFileDataReader setValidatorAction(ValidatableFileDataReader.FileValidatorAction validatorAction)
      バリデーション処理を実装したアクションクラスを設定する。
      Parameters:
      validatorAction - バリデーションを実装したアクションクラス
      Returns:
      このオブジェクト自体
      Throws:
      IllegalArgumentException - バリデーションを実装したアクションクラスがnullの場合