Class FileRecordWriterHolder

java.lang.Object
nablarch.common.io.FileRecordWriterHolder

@Published(tag="architect") public class FileRecordWriterHolder extends Object
FileRecordWriterのインスタンスをスレッド毎に管理するクラス。

スレッド毎に管理するFileRecordWriterインスタンスの生成及び取得、クローズ機能を持つ。

FileRecordWriterDisposeHandlerをハンドラとして設定する場合、 本クラスがスレッド上で管理するすべてのFileRecordWriterFileRecordWriterDisposeHandlerにより自動的にクローズされるので、 業務アプリケーションで本クラスのclose(java.lang.String)メソッドを呼び出す必要はない。

close(String, String)及びclose(String)では、ThreadLocal.remove()の呼び出しを行わない。 スレッド上の値を削除するためには、closeAll()の呼び出しが必要となる。

Author:
Masato Inoue
See Also:
  • Constructor Details

    • FileRecordWriterHolder

      public FileRecordWriterHolder()
  • Method Details

    • getInstance

      public static FileRecordWriterHolder getInstance()
      本クラスのインスタンスをSystemRepositoryより取得する。

      SystemRepositoryにインスタンスが存在しない場合は、クラスロード時に生成した本クラスのインスタンスを返却する。

      Returns:
      本クラスのインスタンス
    • open

      @Published public static void open(String dataFileName, String layoutFileName)
      FilePathSettingから"output"という論理名で取得したベースパス配下のファイルをオープンする。

      このとき、フォーマット定義ファイルもFilePathSettingから"format"という論理名で取得したベースパス配下より読み込む。
      また、バッファサイズには、デフォルトの値(8192B)が使用される。

      Parameters:
      dataFileName - 書き込むデータファイルのファイル名
      layoutFileName - フォーマット定義ファイルのファイル名
    • open

      @Published public static void open(String dataFileName, String layoutFileName, int bufferSize)
      FilePathSettingから"output"という論理名で取得したベースパス配下のファイルをオープンする。

      このとき、フォーマット定義ファイルもFilePathSettingから"format"という論理名で取得したベースパス配下より読み込む。
      また、引数でデータファイルに書き込む際のバッファサイズを指定する。

      Parameters:
      dataFileName - 書き込むデータファイルのファイル名
      layoutFileName - フォーマット定義ファイルのファイル名
      bufferSize - バッファサイズ
    • open

      @Published public static void open(String dataFileBasePathName, String dataFileName, String layoutFileName)
      FilePathSettingに設定した論理名(論理ベースパス)配下のファイルをオープンする。

      このとき、フォーマット定義ファイルはFilePathSettingから"format"という論理名で取得したベースパス配下より読み込む。
      また、データファイルに書き込む際のバッファサイズはデフォルト値(8192B)が使用される。

      Parameters:
      dataFileBasePathName - 書き込むデータファイルのベースパスの論理名
      dataFileName - 書き込むデータファイルのファイル名
      layoutFileName - フォーマット定義ファイルのファイル名
    • open

      @Published public static void open(String dataFileBasePathName, String dataFileName, String layoutFileName, int bufferSize)
      FilePathSettingに設定した論理名(論理ベースパス)配下のファイルをオープンする。

      このとき、フォーマット定義ファイルはFilePathSettingから"format"という論理名で取得したベースパス配下より読み込む。
      また、引数でデータファイルに書き込む際のバッファサイズを指定する。

      Parameters:
      dataFileBasePathName - 書き込むデータファイルのベースパスの論理名
      dataFileName - 書き込むデータファイルのファイル名
      layoutFileName - フォーマット定義ファイルのファイル名
      bufferSize - バッファサイズ
    • init

      public static void init()
      カレントスレッド上で開いたファイルを管理するための初期処理を行う。

      本処理を呼ばなかった場合、子スレッド側で開いたファイルは管理対象とならないため注意すること。

    • open

      @Published public static void open(String dataFileBasePathName, String dataFileName, String layoutFileBasePathName, String layoutFileName)
      FilePathSettingに設定した論理名(論理ベースパス)配下のファイルをオープンする。

      このとき、フォーマット定義ファイルはFilePathSettingから"format"という論理名で取得したベースパス配下より読み込む。 また、データファイルに書き込む際のバッファサイズはデフォルト値(8192B)が使用される。

      Parameters:
      dataFileBasePathName - 書き込むデータファイルのベースパスの論理名
      dataFileName - 書き込むデータファイルのファイル名
      layoutFileBasePathName - フォーマット定義ファイルのベースパス論理名
      layoutFileName - フォーマット定義ファイルのファイル名
    • open

      @Published public static void open(String dataFileBasePathName, String dataFileName, String layoutFileBasePathName, String layoutFileName, int bufferSize)
      FilePathSettingに設定した論理名(論理ベースパス)配下のファイルをオープンする。

      また、引数でデータファイルに書き込む際のバッファサイズと、FilePathSettingに設定したフォーマット定義ファイルの論理名を指定する。

      Parameters:
      dataFileBasePathName - 書き込むデータファイルのベースパスの論理名
      dataFileName - 書き込むデータファイルのファイル名
      layoutFileBasePathName - フォーマット定義ファイルのベースパスの論理名
      layoutFileName - フォーマット定義ファイルのファイル名
      bufferSize - バッファサイズ
      Throws:
      IllegalArgumentException - bufferSize以外の引数がnullまたは空の場合
      IllegalStateException - カレントスレッド上のFileRecordWriterが既にオープンしている場合
    • write

      @Published public static void write(Map<String,?> record, String fileName)
      FilePathSettingから"output"という論理名で取得したベースパス配下のデータファイルにレコードを出力する。
      Parameters:
      record - ファイルに出力するレコード
      fileName - 書き込むデータファイルのファイル名
    • write

      @Published public static void write(Map<String,?> record, String basePathName, String fileName)
      FilePathSettingに設定した論理名(論理ベースパス)配下のデータファイルにレコードを出力する。
      Parameters:
      record - ファイルに出力するレコード
      basePathName - 書き込むデータファイルのベースパスの論理名
      fileName - 書き込むデータファイルのファイル名
    • write

      @Published public static void write(String recordType, Map<String,?> record, String fileName)
      FilePathSettingから"output"という論理名で取得したベースパス配下のデータファイルにレコードを出力する。

      また、引数で出力するレコードのレコードタイプを指定する。

      Parameters:
      recordType - 出力するレコードのレコードタイプ
      record - ファイルに出力するレコード
      fileName - 書き込むデータファイルのファイル名
    • write

      @Published public static void write(String recordType, Map<String,?> record, String basePathName, String fileName)
      引数で指定したデータファイルにレコードを出力する。
      Parameters:
      recordType - 出力するレコードのレコードタイプ
      record - ファイルに出力するレコード
      basePathName - 書き込むデータファイルのベースパスの論理名
      fileName - 書き込むデータファイルのファイル名
    • createFileRecordWriter

      protected FileRecordWriter createFileRecordWriter(String dataFileBasePathName, String dataFileName, String layoutFileBasePathName, String layoutFileName, int bufferSize)
      FileRecordWriterのインスタンスを生成する。
      Parameters:
      dataFileBasePathName - ベースパスの論理名
      dataFileName - 書き込むデータファイルのファイル名
      layoutFileName - レイアウトファイル名
      layoutFileBasePathName - レイアウトファイルの配置ディレクトリの論理名
      bufferSize - ファイル読み込み時のバッファサイズ
      Returns:
      FileRecordWriterのインスタンス
    • createKey

      protected String createKey(String basePathName, String fileName)
      スレッドに保持するキーを生成する。
      Parameters:
      basePathName - ベースパスの論理名
      fileName - 書き込むデータファイルのファイル名
      Returns:
      キー
      Throws:
      IllegalArgumentException - basePathNameに"&"が含まれていなかった場合
    • get

      public static FileRecordWriter get(String fileName)
      FilePathSettingから"output"という論理名で取得したベースパス配下のファイルに書き出しを行うFileRecordWriterを取得する。
      Parameters:
      fileName - 書き込むデータファイルのファイル名
      Returns:
      FileRecordWriter
    • get

      public static FileRecordWriter get(String basePathName, String fileName)
      FilePathSettingに設定した論理名(論理ベースパス)配下のファイルに書き出しを行うFileRecordWriterを取得する。
      Parameters:
      basePathName - 書き込むデータファイルのベースパスの論理名
      fileName - 書き込むデータファイルのファイル名
      Returns:
      FileRecordWriter
      Throws:
      IllegalArgumentException - カレントスレッド上のFileRecordWriterが閉じている場合
    • close

      public static void close(String fileName)
      FilePathSettingから"output"という論理名で取得したベースパス配下のファイルに書き出しを行うFileRecordWriterをクローズし、 インスタンスをカレントスレッド上から削除する。
      Parameters:
      fileName - 書き込むデータファイルのファイル名
    • close

      public static void close(String basePathName, String fileName)
      FilePathSettingに設定した論理名(論理ベースパス)配下のファイルに書き出しを行うFileRecordWriterをクローズし、 インスタンスをカレントスレッド上から削除する。
      Parameters:
      basePathName - 書き込むデータファイルのベースパスの論理名
      fileName - 書き込むデータファイルのファイル名
    • closeAll

      public static void closeAll()
      本クラスがカレントスレッド上で管理している全てのFileRecordWriterのファイルストリームを クローズし、また、それら全てのFileRecordWriterをカレントスレッド上から削除する。