Class StructuredDataRecordFormatterSupport

java.lang.Object
nablarch.core.dataformat.DataRecordFormatterSupport
nablarch.core.dataformat.StructuredDataRecordFormatterSupport
All Implemented Interfaces:
Closeable, AutoCloseable, DataRecordFormatter
Direct Known Subclasses:
JsonDataRecordFormatter, XmlDataRecordFormatter

public abstract class StructuredDataRecordFormatterSupport extends DataRecordFormatterSupport
フォーマット定義ファイルの内容に従い、構造化データの読み書きを行うクラス。

本クラスはスレッドセーフを考慮した実装にはなっていないので、呼び出し元で同期化の制御を行うこと。

ディレクティブの設定

XMLデータを読み込む際は、以下のディレクティブの設定が必須となる。

  • ファイルの文字エンコーディング

  • Constructor Details

    • StructuredDataRecordFormatterSupport

      public StructuredDataRecordFormatterSupport()
  • Method Details

    • setDataParser

      public void setDataParser(StructuredDataParser dataParser)
      構造化データパーサーを設定する
      Parameters:
      dataParser - 構造化データパーサー
    • getDataParser

      protected StructuredDataParser getDataParser()
      構造化データパーサーを返却する
      Returns:
      構造化データパーサー
    • setDataBuilder

      public void setDataBuilder(StructuredDataBuilder dataBuilder)
      構造化データビルダーを設定する
      Parameters:
      dataBuilder - 構造化データビルダー
    • getDataBuilder

      protected StructuredDataBuilder getDataBuilder()
      構造化データビルダーを返却する
      Returns:
      構造化データビルダー
    • getConvertorSetting

      public ConvertorSetting getConvertorSetting()
      構造化データのコンバータの設定情報保持クラスを取得する。
      Specified by:
      getConvertorSetting in class DataRecordFormatterSupport
      Returns:
      構造化データのコンバータの設定情報保持クラス
    • setConvertorSetting

      protected void setConvertorSetting(ConvertorSetting convertorSetting)
      構造化データのコンバータの設定情報保持クラスを取得する。
      Parameters:
      convertorSetting - 構造化データのコンバータの設定情報保持クラス
    • initialize

      public DataRecordFormatter initialize()
      フォーマット定義情報保持クラスの初期化を行う。 初期化は本メソッドの1回目の実行時のみ行われ、2回目以降の実行時に初期化は行われない。
      Specified by:
      initialize in interface DataRecordFormatter
      Overrides:
      initialize in class DataRecordFormatterSupport
      Returns:
      このオブジェクト自体
    • setInputStream

      public DataRecordFormatter setInputStream(InputStream stream)
      入力ストリームを設定する。
      Parameters:
      stream - 入力ストリーム
      Returns:
      本クラスのインスタンス
    • setOutputStream

      public DataRecordFormatter setOutputStream(OutputStream stream)
      出力ストリームを設定する。
      Parameters:
      stream - 出力ストリーム
      Returns:
      本クラスのインスタンス
    • readRecord

      public DataRecord readRecord() throws IOException, InvalidDataFormatException
      入力ストリームから1レコード分のデータを読み込み、データレコードを返却する。 入力ストリームが既に終端に達していた場合はnullを返却する。
      Returns:
      データレコード
      Throws:
      IOException - 入力ストリームの読み込みに失敗した場合
      InvalidDataFormatException - 読み込んだデータがフォーマット定義に違反している場合
    • writeRecord

      public void writeRecord(Map<String,?> record) throws IOException, InvalidDataFormatException
      出力ストリームに1レコード分の内容を書き込む。

      出力時に使用するデータレイアウト(レコードタイプ)は、Mapの内容をもとに自動的に判定される。

      引数がDataRecord型かつレコードタイプが指定されている場合、 フォーマット定義ファイルのレコードタイプ識別フィールド定義よりも、指定されたレコードタイプを優先して書き込みを行う。

      Parameters:
      record - 出力するレコードの内容を格納したMap
      Throws:
      IOException - 出力ストリームの書き込みに失敗した場合
      InvalidDataFormatException - 書き込むデータの内容がフォーマット定義に違反している場合
    • writeRecord

      public void writeRecord(String recordType, Map<String,?> record) throws IOException
      指定したデータレイアウト(レコードタイプ)で、出力ストリームに1レコード分の内容を書き込む。
      Parameters:
      recordType - レコードタイプ
      record - 出力するレコードの内容を格納したMap
      Throws:
      IOException - 出力ストリームの書き込みに失敗した場合
    • close

      public void close()
      内部的に保持している各種リソースを開放する。 この実装では、setInputStream(java.io.InputStream)メソッドおよびsetOutputStream(java.io.OutputStream)メソッドで渡されたストリームをクローズする。
    • hasNext

      public boolean hasNext() throws IOException
      次に読み込む行の有無を判定する。
      Returns:
      次に読み込む行がある場合true
      Throws:
      IOException - 入力ストリームの読み込みに失敗した場合