Class FormatterFactory

java.lang.Object
nablarch.core.dataformat.FormatterFactory

@Published(tag="architect") public class FormatterFactory extends Object
データレコードフォーマッタ(DataRecordFormatter)を生成するファクトリクラス。

フォーマット定義ファイルのパースを行い、ディレクティブで指定されたファイルタイプに対応するデータレコードフォーマッタを生成して返却する。
具体的には、ファイルタイプが "Variable" の場合にVariableLengthDataRecordFormatterを、 ファイルタイプが "Fixed" の場合にFixedLengthDataRecordFormatterを生成する。

フォーマット定義情報保持クラスは、本クラスの内部でキャッシュし、同一のフォーマット定義ファイルが何度もパースされないように制御する。 デフォルトではフォーマット定義ファイルのパース結果はキャッシュされる。

また、リポジトリに「formatterFactory」のキーで本クラスのインスタンスを格納することで、設定を変更することができる。

以下に、設定可能な項目の一覧を示す。

プロパティ名 概要
allowedRecordSeparatorList List<String> レコード終端文字列として許容する文字列のリスト
defaultReplacementType Map<String, String> フィールドタイプ名に対応するデフォルトの寄せ字変換タイプ名のMap
encoding String フォーマット定義ファイルのエンコーディング
cacheLayoutFileDefinition boolean フォーマット定義ファイルのパース結果のキャッシュ要否

また、以下にフォーマット定義ファイルの定義例を示す。
 
 <component name="formatterFactory"
     class="nablarch.core.dataformat.FormatterFactory">
   <property name="cacheLayoutFileDefinition" value="false" />
   <property name="defaultReplacementType">
     <map>
       <entry key="X" value="type_hankaku" />
       <entry key="N" value="type_zenkaku" />
     </map>
   </property>
 </component>
 
 

See Also:
  • Constructor Details

    • FormatterFactory

      public FormatterFactory()
  • Method Details

    • getInstance

      public static FormatterFactory getInstance()
      FormatterFactoryクラスのインスタンスをリポジトリより取得する。 リポジトリより取得できなかった場合は、デフォルトで本クラスのインスタンスを返却する。
      Returns:
      このクラスのインスタンス
    • setCacheLayoutFileDefinition

      public FormatterFactory setCacheLayoutFileDefinition(boolean cacheLayoutFileDefinition)
      フォーマット定義ファイルのパース結果のキャッシュ要否を設定する。
      Parameters:
      cacheLayoutFileDefinition - フォーマット定義ファイルのパース結果のキャッシュ要否
      Returns:
      このオブジェクト自体
    • createFormatter

      public DataRecordFormatter createFormatter(File layoutFile)
      データレコードフォーマッタのインスタンスを生成する。 フォーマット定義ファイルのパース結果をキャッシュする設定の場合は、フォーマット定義ファイルのパースは2度行わない。
      Parameters:
      layoutFile - フォーマット定義ファイル
      Returns:
      データレコードフォーマッタのインスタンス
    • createFormatter

      public DataRecordFormatter createFormatter(LayoutDefinition definition)
      フォーマット定義情報保持クラスをもとに、データレコードフォーマッタのインスタンスを生成する。
      Parameters:
      definition - フォーマット定義情報保持クラス
      Returns:
      データレコードフォーマッタのインスタンス
    • getDefinitionFromCache

      protected LayoutDefinition getDefinitionFromCache(File layoutFile)
      キャッシュからフォーマット定義情報保持クラスを取得する。 フォーマット定義情報保持クラスをキャッシュから取得できない場合は、生成する。
      Parameters:
      layoutFile - フォーマット定義ファイル
      Returns:
      フォーマット定義情報保持クラス
    • createFormatter

      protected DataRecordFormatter createFormatter(String fileType, String formatFilePath)
      データレコードフォーマッタを生成する。 ファイルタイプにより下記のとおりフォーマッタの生成を行い、 これら以外のファイルタイプの場合は例外をスローする。
      ファイルタイプ フォーマッタクラス
      Variable VariableLengthDataRecordFormatter
      Fixed FixedLengthDataRecordFormatter
      JSON JsonDataRecordFormatter
      XML XmlDataRecordFormatter
      Parameters:
      fileType - ファイルタイプ
      formatFilePath - フォーマット定義ファイルのパス(例外発生時に使用する)
      Returns:
      フォーマッタ
    • setFormatterProperty

      protected void setFormatterProperty(DataRecordFormatter formatter)
      データレコードフォーマッタにプロパティを設定する。

      具体的には、データレコードフォーマッタの型がDataRecordFormatterSupportの場合に、 本クラスに設定された以下のプロパティを、データレコードフォーマッタのプロパティに設定する。

      • データタイプ名に対応するデフォルトの寄せ字変換タイプ名のMap
      • 許容するレコード終端文字列のリスト

      Parameters:
      formatter - データレコードフォーマッタ
    • createDefinition

      protected LayoutDefinition createDefinition(File layoutFile)
      フォーマット定義ファイルを読み込み、フォーマット定義情報保持クラスを生成する。
      Parameters:
      layoutFile - フォーマット定義ファイル
      Returns:
      フォーマット定義情報保持クラス
    • createLayoutFileParser

      protected LayoutFileParser createLayoutFileParser(String layoutFilePath)
      フォーマット定義ファイルのパーサを生成する。
      Parameters:
      layoutFilePath - フォーマット定義ファイルのパス
      Returns:
      フォーマット定義ファイルのパーサ
    • setAllowedRecordSeparatorList

      public FormatterFactory setAllowedRecordSeparatorList(List<String> allowedRecordSeparatorList)
      許容するレコード終端文字列のリストを設定する。
      Parameters:
      allowedRecordSeparatorList - 許容されるレコード終端文字列のリスト
      Returns:
      このオブジェクト自体
    • setDefaultReplacementType

      public FormatterFactory setDefaultReplacementType(Map<String,String> defaultReplacementType)
      データタイプ名に対応するデフォルトの寄せ字変換タイプ名のMapを設定する。
      Parameters:
      defaultReplacementType - データタイプ名に対応するデフォルトの寄せ字変換タイプ名のMap
      Returns:
      このオブジェクト自体
    • setEncoding

      public FormatterFactory setEncoding(String encoding)
      フォーマット定義ファイルのファイルエンコーディングを設定する。
      Parameters:
      encoding - フォーマット定義ファイルのファイルエンコーディング
      Returns:
      このオブジェクト自体