Class FileDataReader

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

public class FileDataReader extends Object implements DataReader<DataRecord>
ファイルデータを1レコードづつ読み込み、 読み込んだフィールドの内容をDataRecordにマッピングして返却するデータリーダ。

実際のレコード読み込み処理は、FileRecordReaderに委譲する。

このクラスを使用するにあたって設定が必須となるプロパティの実装例を下記に示す。


     FileDataReader reader = new FileDataReader()
         //フォーマット定義ファイルのベースパス論理名とフォーマット定義ファイル名(拡張子無し)を設定する。
         .setLayoutFile("format", "formatFile")
         //データファイルベースパス論理名とデータファイル名(拡張子無し)を設定する。
         .setDataFile("input", "dataFile");
 
このクラスは読み込み対象のファイルやフォーマット定義ファイルが存在しない場合には例外を送出する。 読み込み対象のファイルが空(0バイト)の場合は、例外の送出は行わない。
  • Constructor Details

    • FileDataReader

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

    • read

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

      読み込んだ際のレコード番号を実行コンテキストに格納する。

      Specified by:
      read in interface DataReader<DataRecord>
      Parameters:
      ctx - 実行コンテキスト
      Returns:
      1レコード分のデータレコード(読み込むデータがなかった場合はnull
    • hasNext

      public boolean hasNext(ExecutionContext ctx)
      次に読み込むデータが存在するかどうかを返却する。
      Specified by:
      hasNext in interface DataReader<DataRecord>
      Parameters:
      ctx - 実行コンテキスト
      Returns:
      読み込むデータが存在する場合は true
    • close

      public void close(ExecutionContext ctx)
      指定されたデータファイルに対するストリームを閉じ、ファイルハンドラを開放する。

      このリーダを閉じる前に、読み込んだファイルの最終レコードのレコード番号を実行コンテキストに設定する。

      このリーダが既に閉じられている場合は何もしない。

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

      @Published(tag="architect") public FileDataReader setLayoutFile(String layoutFile)
      拡張子を除いた、フォーマット定義ファイルのファイル名を設定する。

      "format"という論理名のベースパス配下に存在する当該ファイルがフォーマット定義ファイルとして使用される。

      Parameters:
      layoutFile - フォーマット定義ファイル名
      Returns:
      このオブジェクト自体
    • setLayoutFile

      @Published(tag="architect") public FileDataReader setLayoutFile(String basePathName, String fileName)
      フォーマット定義ファイルのベースパス論理名および拡張子を除いたファイル名を設定する。

      設定した論理名のペースパス配下に存在する当該ファイルがフォーマット定義ファイルとして使用される。

      Parameters:
      basePathName - ベースパス論理名
      fileName - フォーマット定義ファイル名
      Returns:
      このオブジェクト自体
    • setDataFile

      @Published(tag="architect") public FileDataReader setDataFile(String fileName)
      データファイルのファイル名を設定する。

      "input"という論理名のベースパス配下に存在する当該ファイルがデータファイルとして使用される。

      Parameters:
      fileName - データファイル名
      Returns:
      このオブジェクト自体
    • setDataFile

      @Published(tag="architect") public FileDataReader setDataFile(String basePathName, String fileName)
      データファイルのベースパス論理名およびファイル名を設定する。

      設定したベースパス配下に存在する当該のファイルがデータファイルとして使用される。

      Parameters:
      basePathName - ベースパス論理名
      fileName - データファイル名
      Returns:
      このオブジェクト自体
    • setBufferSize

      @Published(tag="architect") public FileDataReader setBufferSize(int bufferSize)
      レコード読み込み時に使用するバッファのサイズを設定する。

      デフォルトでは8KBのバッファを使用する。

      Parameters:
      bufferSize - レコード読み込み時に使用するバッファのサイズ
      Returns:
      このオブジェクト自体
    • createFileRecordReader

      protected FileRecordReader createFileRecordReader()
      FileRecordReaderオブジェクトを生成する。
      Returns:
      FileRecordReaderオブジェクト
      Throws:
      IllegalStateException - 必須であるプロパティが設定されていない場合
    • getFileReader

      protected FileRecordReader getFileReader()
      FileRecordReaderオブジェクトを取得する。
      Returns:
      FileRecordReaderオブジェクト(FileRecordReaderオブジェクトが生成されていない場合はnull
    • setFileReader

      protected void setFileReader(FileRecordReader fileReader)
      FileRecordReaderオブジェクトを設定する。
      Parameters:
      fileReader - FileRecordReaderオブジェクト