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が保持する。

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

    Fields
    Modifier and Type
    Field
    Description
    protected final List<DataFileFragment>
    この固定長ファイルを構成する断片
    protected final Map<String,Object>
    ディレクティブ一覧
  • Constructor Summary

    Constructors
    Modifier
    Constructor
    Description
    protected
    コンストラクタ。
  • Method Summary

    Modifier and Type
    Method
    Description
    protected Object
    convertDirectiveValue(nablarch.core.dataformat.DataRecordFormatterSupport.Directive directive, String stringValue)
    ディレクティブの値を、文字列から各ディレクティブが許容する型に変換する。
    nablarch.core.dataformat.LayoutDefinition
    フォーマット定義を作成する。
    本インスタンスおよび所有するDataFileFragmentのレイアウト情報を元に フォーマット定義を生成する。 書き込み時に使用する。 (書き込み時はレイアウト種別を明示的に指定できるため、1つのレイアウトでまかなえる)
    nablarch.core.dataformat.LayoutDefinition
    フォーマット定義を作成する。
    本インスタンスおよび所有するDataFileFragmentのレイアウト情報を元に フォーマット定義を生成する。
    protected abstract DataFileFragment
    新しいファイルの断片を生成する。
    生成された断片はこのファイルの管理下に置かれる。
    protected final Charset
    ディレクティブからエンコーディングを取得する。
    protected abstract String
    ファイルタイプを取得する。
    この固定長ファイルを構成する、新しい断片を取得する。
    ファイルパスを取得する。
    protected final void
    デフォルトのディレクティブを取得する。
    デフォルト値が設定されていない場合は空のMapを返却する(デフォルト値なし)。
    List<nablarch.core.dataformat.DataRecord>
    ファイルから読み込む。
    void
    setDirective(String directiveName, String stringValue)
    ディレクティブを設定する。
    List<nablarch.core.dataformat.DataRecord>
    DataRecordへ変換する。
    本メソッドの結果と、read()メソッドの結果を突合することで、 期待データと実際のファイルとの比較を行うことができる。
    protected abstract nablarch.core.dataformat.DataRecordFormatterSupport.Directive
    valueOf(String directiveName)
    ディレクティブ名称からディレクティブを取得する。
    void
    ファイルへ出力する。
    出力先はコンストラクタで設定したパスとなる。

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • 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<nablarch.core.dataformat.DataRecord> toDataRecords()
      DataRecordへ変換する。
      本メソッドの結果と、read()メソッドの結果を突合することで、 期待データと実際のファイルとの比較を行うことができる。
      Returns:
      変換結果
    • read

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

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

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

      Returns:
      読み込み結果
    • createLayout

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

      public nablarch.core.dataformat.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(nablarch.core.dataformat.DataRecordFormatterSupport.Directive directive, String stringValue)
      ディレクティブの値を、文字列から各ディレクティブが許容する型に変換する。
      Parameters:
      directive - ディレクティブ
      stringValue - 値
      Returns:
      変換後の値
    • valueOf

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

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