jp.terasoluna.fw.file.dao.standard
クラス AbstractFileLineWriter<T>

java.lang.Object
  上位を拡張 jp.terasoluna.fw.file.dao.standard.AbstractFileLineWriter<T>
型パラメータ:
T - ファイル行オブジェクト。
すべての実装されたインタフェース:
FileLineWriter<T>
直系の既知のサブクラス:
FixedFileLineWriter, PlainFileLineWriter, VariableFileLineWriter

public abstract class AbstractFileLineWriter<T>
extends Object
implements FileLineWriter<T>

ファイルアクセス(データ書込)用の共通クラス。

ファイルアクセス(データ書込)を行う3つのクラス(CSV、固定長、可変長) に共通する処理をまとめた抽象クラス。 ファイルの種類に対応するサブクラスが処理を行う。
使用例はFileLineWriterを参照のこと。

ファイル取得処理は下記の手順で呼び出されるように実装すること。

上記の順番でのみ正確に出力できる。

関連項目:
FileLineWriter, CSVFileLineWriter, FixedFileLineWriter, VariableFileLineWriter, PlainFileLineWriter

コンストラクタの概要
AbstractFileLineWriter(String fileName, Class<T> clazz, Map<String,ColumnFormatter> columnFormatterMap)
          コンストラクタ。
 
メソッドの概要
protected  void checkWriteTrailer()
          トレイラ部の処理が終わっているかどうかを判定する。
 void closeFile()
          ファイルクローズ処理。
protected  String getColumn(T t, int index)
           ファイル行オブジェクトからカラムインデックスと一致する属性の値を取得する。
protected  char[] getColumnEncloseChar()
          カラムの囲み文字を取得する。
abstract  char getDelimiter()
          区切り文字を取得する。
abstract  char getEncloseChar()
          囲み文字を取得する。
protected  Field[] getFields()
          ファイル行オブジェクトのField情報(Annotation)を格納する変数を取得する。
 String getFileName()
          ファイル名を取得する。
protected  String getLineFeedChar()
          行区切り文字を設定する。
protected  Method[] getMethods()
          ファイル行オブジェクトのField情報に対応するgetterメソッドを格納する変数を取得する。
protected  Writer getWriter()
          ファイルアクセス(出力)用の文字ストリームを取得する。
protected  void init()
          初期化処理を行う。
protected  boolean isCheckByte(int columnByte)
          対象カラムに対するバイト数チェックを行うかを返す。
protected  boolean isCheckByte(OutputFileColumn outputFileColumn)
          対象カラムに対するバイト数チェックを行うかを返す。
protected  boolean isCheckColumnAnnotationCount()
          ファイル行オブジェクトにアノテーションが設定されている事をチェックするかどうかを返す。
protected  boolean isCheckEncloseChar()
          囲み文字が設定されていない事をチェックするかどうかを返す。
 void printDataLine(T t)
          データ部への書き込み処理。
 void printHeaderLine(List<String> headerLine)
          ヘッダ部への書込み処理。
 void printTrailerLine(List<String> trailerLine)
          トレイラ部への書込み処理。
 void setColumnFormatterMap(Map<String,ColumnFormatter> columnFormatterMap)
          カラムフォーマット(ファイル書込)処理を格納するマップを取得する。
protected  void setLineFeedChar(String lineFeedChar)
          行区切り文字を設定する。
protected  void setWriteData(boolean writeData)
          データ部の出力が開始されているかどうかを判定するフラグ。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

AbstractFileLineWriter

public AbstractFileLineWriter(String fileName,
                              Class<T> clazz,
                              Map<String,ColumnFormatter> columnFormatterMap)
コンストラクタ。
引数と@FileFormatアノテーションの設定チェックする。 @FileFormatアノテーションが設定されていない場合は非検査例外をスローする。
区切り文字と囲み文字に同一文字が設定されている場合は、非検査例外をスローする。
行区切り文字が3文字以上の場合は、非検査例外をスローする。

パラメータ:
fileName - ファイル名
clazz - パラメータクラス
columnFormatterMap - テキスト取得ルール
メソッドの詳細

init

protected void init()
初期化処理を行う。
初期化処理で行う処理は以下です。。 init()はAbstracFileLineWriterを継承するクラスのコンストラクタで 呼ぶメソッドである。
下位互換性のため、2回以上実行できないようにしている。


printHeaderLine

public void printHeaderLine(List<String> headerLine)
ヘッダ部への書込み処理。

定義:
インタフェース FileLineWriter<T> 内の printHeaderLine
パラメータ:
headerLine - ヘッダ部へ書き込む文字列のリスト

printDataLine

public void printDataLine(T t)
データ部への書き込み処理。

定義:
インタフェース FileLineWriter<T> 内の printDataLine
パラメータ:
t - データ部へ書き込むファイル行オブジェクト

printTrailerLine

public void printTrailerLine(List<String> trailerLine)
トレイラ部への書込み処理。

定義:
インタフェース FileLineWriter<T> 内の printTrailerLine
パラメータ:
trailerLine - トレイラ部へ書き込む文字列のリスト

closeFile

public void closeFile()
ファイルクローズ処理。

定義:
インタフェース FileLineWriter<T> 内の closeFile

getColumn

protected String getColumn(T t,
                           int index)

ファイル行オブジェクトからカラムインデックスと一致する属性の値を取得する。

属性を取得する際、ファイル行オブジェクトのアノテーションの記述により 以下の処理を行う。

  • トリム処理
  • パディング
  • 文字変換処理

    ファイル行オブジェクトのアノテーションでカラムのバイト長が指定されている場合、
    返却する文字列がバイト長と一致しているか確認する。

    パラメータ:
    t - ファイル行オブジェクト
    index - カラムのインデックス
    戻り値:
    カラムの文字列

  • getFileName

    public String getFileName()
    ファイル名を取得する。

    戻り値:
    fileName ファイル名

    getLineFeedChar

    protected String getLineFeedChar()
    行区切り文字を設定する。

    戻り値:
    lineFeedChar 行区切り文字

    setLineFeedChar

    protected void setLineFeedChar(String lineFeedChar)
    行区切り文字を設定する。

    パラメータ:
    行区切り文字 -

    setColumnFormatterMap

    public void setColumnFormatterMap(Map<String,ColumnFormatter> columnFormatterMap)
    カラムフォーマット(ファイル書込)処理を格納するマップを取得する。

    パラメータ:
    columnFormatterMap - カラムフォーマット(ファイル書込)を格納するマップ

    getWriter

    protected Writer getWriter()
    ファイルアクセス(出力)用の文字ストリームを取得する。

    戻り値:
    bufferedWriter ファイルアクセス(出力)用の文字ストリーム

    getFields

    protected Field[] getFields()
    ファイル行オブジェクトのField情報(Annotation)を格納する変数を取得する。

    戻り値:
    fields ファイル行オブジェクトのField情報(Annotation)を格納する変数

    getMethods

    protected Method[] getMethods()
    ファイル行オブジェクトのField情報に対応するgetterメソッドを格納する変数を取得する。

    戻り値:
    methods ファイル行オブジェクトのField情報に対応するgetterメソッドを格納する変数

    setWriteData

    protected void setWriteData(boolean writeData)
    データ部の出力が開始されているかどうかを判定するフラグ。

    パラメータ:
    writeData - フラグ

    checkWriteTrailer

    protected void checkWriteTrailer()
    トレイラ部の処理が終わっているかどうかを判定する。
    処理が完了している場合、例外をスローする。


    getDelimiter

    public abstract char getDelimiter()
    区切り文字を取得する。

    戻り値:
    区切り文字

    getEncloseChar

    public abstract char getEncloseChar()
    囲み文字を取得する。

    戻り値:
    囲み文字

    isCheckByte

    protected boolean isCheckByte(OutputFileColumn outputFileColumn)
    対象カラムに対するバイト数チェックを行うかを返す。

    固定長ファイル形式の場合は常にtrueを返却してバイト数チェックを行う。
    可変長、CSV形式でbytesが指定されているときには trueを返却しバイト数チェックを行う。

    パラメータ:
    outputFileColumn - 対象カラムのOutputFileColumn情報
    戻り値:
    バイト数が設定されている(1バイト以上)場合はtrue。

    isCheckByte

    protected boolean isCheckByte(int columnByte)
    対象カラムに対するバイト数チェックを行うかを返す。

    パラメータ:
    columnByte - 対象カラムのバイト数
    戻り値:
    バイト数が設定されている(1バイト以上)場合はtrue。

    isCheckEncloseChar

    protected boolean isCheckEncloseChar()
    囲み文字が設定されていない事をチェックするかどうかを返す。

    戻り値:
    チェックを行う場合はtrue。

    isCheckColumnAnnotationCount

    protected boolean isCheckColumnAnnotationCount()
    ファイル行オブジェクトにアノテーションが設定されている事をチェックするかどうかを返す。

    戻り値:
    チェックを行う場合はtrue。

    getColumnEncloseChar

    protected char[] getColumnEncloseChar()
    カラムの囲み文字を取得する。

    戻り値:
    columnEncloseChar 囲み文字


    Copyright © 2012. All Rights Reserved.