Class DataFile

java.lang.Object
nablarch.test.core.file.DataFile
Direct Known Subclasses:
FixedLengthFile, VariableLengthFile

@Published(tag="architect") public abstract class DataFile extends Object
ファイルを表すクラス。

ファイルへ書き出す機能(準備データ作成用)と ファイルから読み込む機能(結果ファイル確認用)を持つ。

本インスタンスは複数のDataFileFragmentにより構成される。 ファイル全体に関わる情報(ディレクティブなど)は本クラスが保持し、 レコードレイアウト毎の情報(レコード長など)はDataFileFragmentが保持する。

ほとんどの機能は本クラスで実装されているが、ファイルタイプにより処理が異なる部分は サブクラスで定義される。
  • Field Details

    • all

      protected final List<DataFileFragment> all
      この固定長ファイルを構成する断片
    • directives

      protected final Map<String,Object> directives
      ディレクティブ一覧
  • Constructor Details

    • DataFile

      protected DataFile(String path)
      コンストラクタ。
      Parameters:
      path - ファイルパス
  • Method Details

    • prepareDefaultDirectives

      protected final void prepareDefaultDirectives(String key)
      デフォルトのディレクティブを取得する。
      デフォルト値が設定されていない場合は空のMapを返却する(デフォルト値なし)。
      Parameters:
      key - コンポーネント設定ファイルのキー
    • getFileType

      protected abstract String getFileType()
      ファイルタイプを取得する。
      Returns:
      ファイルタイプ
    • write

      public void write()
      ファイルへ出力する。
      出力先はコンストラクタで設定したパスとなる。
    • getNewFragment

      public DataFileFragment getNewFragment()
      この固定長ファイルを構成する、新しい断片を取得する。
      Returns:
      DataFileFragment
    • createNewFragment

      protected abstract DataFileFragment createNewFragment()
      新しいファイルの断片を生成する。
      生成された断片はこのファイルの管理下に置かれる。
      Returns:
      新しいファイル断片
    • toDataRecords

      public List<DataRecord> toDataRecords()
      DataRecordへ変換する。
      本メソッドの結果と、read()メソッドの結果を突合することで、 期待データと実際のファイルとの比較を行うことができる。
      Returns:
      変換結果
    • read

      public List<DataRecord> read()
      ファイルから読み込む。

      読み込み先はコンストラクタで指定したファイルパスとなる。 読み込み時に使用されるファイルフォーマットは、 本インスタンスが持つDataFileFragmentを使用する。

      本インスタンスに対応するデータを読み終えたあとで、 入力ストリームが終端に達していない場合、最末尾のレコードレイアウトで残りのストリームを読み切る。

      Returns:
      読み込み結果
    • createLayout

      public LayoutDefinition createLayout()
      フォーマット定義を作成する。
      本インスタンスおよび所有するDataFileFragmentのレイアウト情報を元に フォーマット定義を生成する。 書き込み時に使用する。 (書き込み時はレイアウト種別を明示的に指定できるため、1つのレイアウトでまかなえる)
      Returns:
      フォーマット定義
    • createLayout

      public LayoutDefinition createLayout(DataFileFragment... fragments)
      フォーマット定義を作成する。
      本インスタンスおよび所有するDataFileFragmentのレイアウト情報を元に フォーマット定義を生成する。
      Parameters:
      fragments - 元となる断片
      Returns:
      フォーマット定義
    • setDirective

      public void setDirective(String directiveName, String stringValue) throws IllegalArgumentException
      ディレクティブを設定する。
      Parameters:
      directiveName - ディレクティブ名称
      stringValue - 値
      Throws:
      IllegalArgumentException - 許容されないディレクティブが設定された場合
    • getPath

      public String getPath()
      ファイルパスを取得する。
      Returns:
      ファイルパス
    • convertDirectiveValue

      protected Object convertDirectiveValue(DataRecordFormatterSupport.Directive directive, String stringValue)
      ディレクティブの値を、文字列から各ディレクティブが許容する型に変換する。
      Parameters:
      directive - ディレクティブ
      stringValue - 値
      Returns:
      変換後の値
    • valueOf

      protected abstract DataRecordFormatterSupport.Directive valueOf(String directiveName)
      ディレクティブ名称からディレクティブを取得する。
      Parameters:
      directiveName - ディレクティブ名称
      Returns:
      ディレクティブ
    • getEncodingFromDirectives

      protected final Charset getEncodingFromDirectives()
      ディレクティブからエンコーディングを取得する。
      Returns:
      ディレクティブで定義されたエンコーディングF