Package nablarch.fw.reader
Class ValidatableFileDataReader
java.lang.Object
nablarch.fw.reader.FileDataReader
nablarch.fw.reader.ValidatableFileDataReader
- All Implemented Interfaces:
DataReader<DataRecord>
ファイル内容のバリデーション機能を追加したデータリーダ。
ファイル全件の読み込みを行い、このリーダが提供する
また、
ただし、データ量によってはメモリリソースを大幅に消費する点に注意すること。
ValidatableFileDataReader.FileValidatorActionに実装されたバリデーションロジックを
setValidatorAction(FileValidatorAction)から設定することができる。
バリデーションが正常終了した場合は、入力ファイルを開きなおして本処理を行う。また、
setUseCache(boolean)にtrueを設定することで、バリデーション時に読み込んだデータを
メモリ上にキャッシュし、都度2回の読み込みを1回に削減することができる。ただし、データ量によってはメモリリソースを大幅に消費する点に注意すること。
- Author:
- Iwauo Tajima
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic interfaceバリデーションを行うオブジェクトが実装するインタフェース。Nested classes/interfaces inherited from interface nablarch.fw.DataReader
DataReader.NoMoreRecord -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionvoidclose(ExecutionContext ctx) このリーダの利用を停止し、内部的に保持している各種リソースを解放する。booleanhasNext(ExecutionContext ctx) 次に読み込むデータが存在するかどうかを返却する。protected voidキャッシュを使用しない場合、ファイルリーダを初期化する。read(ExecutionContext ctx) データファイルを1レコードづつ読み込む。setUseCache(boolean useCache) バリデーション時に読み込んだデータをキャッシュし、本処理で使用するかどうかを設定する。setValidatorAction(ValidatableFileDataReader.FileValidatorAction validatorAction) バリデーション処理を実装したアクションクラスを設定する。protected voidvalidate(ExecutionContext ctx) バリデーションを行う。Methods inherited from class nablarch.fw.reader.FileDataReader
createFileRecordReader, getFileReader, setBufferSize, setDataFile, setDataFile, setFileReader, setLayoutFile, setLayoutFile
-
Constructor Details
-
ValidatableFileDataReader
ValidatableFileDataReaderオブジェクトを生成する。
-
-
Method Details
-
read
データファイルを1レコードづつ読み込む。 ファイルがバリデーション済みでない場合、バリデーションを行う。
次に読み込むレコードが存在しない場合、nullを返す。 データをキャッシュしている場合、キャッシュからデータを読み込み返却する。
キャッシュしていない場合、データファイルからデータを読み込み返却する。- Specified by:
readin interfaceDataReader<DataRecord>- Overrides:
readin classFileDataReader- Parameters:
ctx- 実行コンテキスト- Returns:
- 1レコード分のデータレコード
-
hasNext
次に読み込むデータが存在するかどうかを返却する。 データをキャッシュしている場合、キャッシュから結果を返却する。
キャッシュしていない場合、データファイルから結果を返却する。- Specified by:
hasNextin interfaceDataReader<DataRecord>- Overrides:
hasNextin classFileDataReader- Parameters:
ctx- 実行コンテキスト- Returns:
- 次に読み込むデータが存在する場合は
true
-
close
このリーダの利用を停止し、内部的に保持している各種リソースを解放する。 キャッシュを有効にしていた場合、キャッシュを削除する。- Specified by:
closein interfaceDataReader<DataRecord>- Overrides:
closein classFileDataReader- Parameters:
ctx- 実行コンテキスト
-
validate
バリデーションを行う。 キャッシュを有効にしている場合、読み込んだデータをキャッシュする。
無効にしている場合、入力ファイルの再読み込みを行うため、FileDataReaderを初期化する。- Parameters:
ctx- 実行コンテキスト- Throws:
IllegalStateException- バリデーション処理を実装したオブジェクトがnullの場合RuntimeException- 実行時例外が発生した場合Error- エラーが発生した場合
-
initialize
protected void initialize()キャッシュを使用しない場合、ファイルリーダを初期化する。 -
setUseCache
バリデーション時に読み込んだデータをキャッシュし、本処理で使用するかどうかを設定する。- Parameters:
useCache- キャッシュを有効化する場合はtrue- Returns:
- このオブジェクト自体
-
setValidatorAction
@Published(tag="architect") public ValidatableFileDataReader setValidatorAction(ValidatableFileDataReader.FileValidatorAction validatorAction) バリデーション処理を実装したアクションクラスを設定する。- Parameters:
validatorAction- バリデーションを実装したアクションクラス- Returns:
- このオブジェクト自体
- Throws:
IllegalArgumentException- バリデーションを実装したアクションクラスがnullの場合
-