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

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

public abstract class AbstractFileLineWriter<T>
extends java.lang.Object
implements FileLineWriter<T>

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

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

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

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

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

フィールドの概要
private  java.lang.Class<T> clazz
          パラメータクラスのクラス。
private  java.util.Map<java.lang.String,ColumnFormatter> columnFormatterMap
          カラムフォーマット(ファイル書込)を格納するマップ。
private  int currentLineCount
          書き込み処理済みデータ部の行数。
private  java.lang.reflect.Field[] fieldArray
          ファイル行オブジェクトの属性のフィールドオブジェクトの配列を格納する変数。
private  java.lang.reflect.Field[] fields
          ファイル行オブジェクトのField情報(Annotation)を格納する変数。
private  java.lang.String fileEncoding
          ファイルエンコーディング。
private  java.lang.String fileName
          ファイルアクセスを行うファイル名。
private  java.lang.String lineFeedChar
          行区切り文字。
private  java.lang.reflect.Method[] methods
          メソッドオブジェクト
private  boolean writeData
          データ部出力確認用フラグ。
private  java.io.Writer writer
          ファイルアクセス(出力)用の文字ストリーム。
private  boolean writeTrailer
          トレイラ部出力確認用フラグ。
 
コンストラクタの概要
AbstractFileLineWriter(java.lang.String fileName, java.lang.Class<T> clazz, java.util.Map<java.lang.String,ColumnFormatter> columnFormatterMap)
          コンストラクタ。
 
メソッドの概要
private  void buildFields()
          ファイル行オブジェクトの属性のフィールドオブジェクトの配列を生成する。
private  void buildMethods()
          ファイル行オブジェクトの属性のgetterメソッドのメソッドオブジェクトの配列を生成する。
protected  void checkWriteTrailer()
          トレイラ部の処理が終わっているかどうかを判定する。
 void closeFile()
          ファイルクローズ処理。
protected  java.lang.String getColumn(T t, int index)
           ファイル行オブジェクトからカラムインデックスと一致する属性の値を取得する。
abstract  char getDelimiter()
          区切り文字を取得する。
abstract  char getEncloseChar()
          囲み文字を取得する。
protected  java.lang.reflect.Field[] getFieldArray()
          ファイル行オブジェクトのカラムインデックスの定義順のField情報(Annotation)を格納する変数を取得する。
protected  java.lang.reflect.Field[] getFields()
          ファイル行オブジェクトのField情報(Annotation)を格納する変数を取得する。
 java.lang.String getFileName()
          ファイル名を取得する。
protected  java.lang.String getLineFeedChar()
          行区切り文字を設定する。
protected  java.lang.reflect.Method[] getMethods()
          ファイル行オブジェクトのField情報に対応するgetterメソッドを格納する変数を取得する。
protected  java.io.Writer getWriter()
          ファイルアクセス(出力)用の文字ストリームを取得する。
protected  void init()
          初期化処理。
protected  boolean isCheckByte(OutputFileColumn outputFileColumn)
          バイト数チェックを行うかどうか。
 void printDataLine(T t)
          データ部への書き込み処理。
 void printHeaderLine(java.util.List<java.lang.String> headerLine)
          ヘッダ部への書込み処理。
private  void printList(java.util.List<java.lang.String> stringList)
          ヘッダ部、トレイラ部の書き込み用の共通メソッド。
 void printTrailerLine(java.util.List<java.lang.String> trailerLine)
          トレイラ部への書込み処理。
 void setColumnFormatterMap(java.util.Map<java.lang.String,ColumnFormatter> columnFormatterMap)
          カラムフォーマット(ファイル書込)処理を格納するマップを取得する。
protected  void setWriteData(boolean writeData)
          データ部の出力が開始されているかどうかを判定するフラグ。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

フィールドの詳細

writer

private java.io.Writer writer
ファイルアクセス(出力)用の文字ストリーム。


fileName

private java.lang.String fileName
ファイルアクセスを行うファイル名。


fileEncoding

private java.lang.String fileEncoding
ファイルエンコーディング。


clazz

private java.lang.Class<T> clazz
パラメータクラスのクラス。


lineFeedChar

private java.lang.String lineFeedChar
行区切り文字。


fields

private java.lang.reflect.Field[] fields
ファイル行オブジェクトのField情報(Annotation)を格納する変数。


fieldArray

private java.lang.reflect.Field[] fieldArray
ファイル行オブジェクトの属性のフィールドオブジェクトの配列を格納する変数。


methods

private java.lang.reflect.Method[] methods
メソッドオブジェクト


columnFormatterMap

private java.util.Map<java.lang.String,ColumnFormatter> columnFormatterMap
カラムフォーマット(ファイル書込)を格納するマップ。


writeData

private boolean writeData
データ部出力確認用フラグ。


writeTrailer

private boolean writeTrailer
トレイラ部出力確認用フラグ。


currentLineCount

private int currentLineCount
書き込み処理済みデータ部の行数。

コンストラクタの詳細

AbstractFileLineWriter

public AbstractFileLineWriter(java.lang.String fileName,
                              java.lang.Class<T> clazz,
                              java.util.Map<java.lang.String,ColumnFormatter> columnFormatterMap)
コンストラクタ。

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

init

protected void init()
初期化処理。


buildFields

private void buildFields()
ファイル行オブジェクトの属性のフィールドオブジェクトの配列を生成する。


buildMethods

private void buildMethods()
ファイル行オブジェクトの属性のgetterメソッドのメソッドオブジェクトの配列を生成する。


printHeaderLine

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

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

printDataLine

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

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

printTrailerLine

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

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

printList

private void printList(java.util.List<java.lang.String> stringList)
ヘッダ部、トレイラ部の書き込み用の共通メソッド。

パラメータ:
stringList - 文字列のリスト

closeFile

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

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

getColumn

protected java.lang.String getColumn(T t,
                                     int index)

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

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

  • パディング
  • トリム処理
  • 文字変換処理を行う。

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

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

  • getFileName

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

    戻り値:
    fileName ファイル名

    getLineFeedChar

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

    戻り値:
    lineFeedChar 行区切り文字

    setColumnFormatterMap

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

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

    getWriter

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

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

    getFields

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

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

    getMethods

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

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

    getFieldArray

    protected java.lang.reflect.Field[] getFieldArray()
    ファイル行オブジェクトのカラムインデックスの定義順のField情報(Annotation)を格納する変数を取得する。

    戻り値:
    fieldArray カラムインデックスの定義順にソートされたField情報(Annotation)を格納する変数

    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)
    バイト数チェックを行うかどうか。

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