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回に削減することができる。ただし、データ量によってはメモリリソースを大幅に消費する点に注意すること。
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic interface
バリデーションを行うオブジェクトが実装するインタフェース。Nested classes/interfaces inherited from interface nablarch.fw.DataReader
DataReader.NoMoreRecord
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
close
(ExecutionContext ctx) このリーダの利用を停止し、内部的に保持している各種リソースを解放する。boolean
hasNext
(ExecutionContext ctx) 次に読み込むデータが存在するかどうかを返却する。protected void
キャッシュを使用しない場合、ファイルリーダを初期化する。read
(ExecutionContext ctx) データファイルを1レコードづつ読み込む。setUseCache
(boolean useCache) バリデーション時に読み込んだデータをキャッシュし、本処理で使用するかどうかを設定する。setValidatorAction
(ValidatableFileDataReader.FileValidatorAction validatorAction) バリデーション処理を実装したアクションクラスを設定する。protected void
validate
(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:
read
in interfaceDataReader<DataRecord>
- Overrides:
read
in classFileDataReader
- Parameters:
ctx
- 実行コンテキスト- Returns:
- 1レコード分のデータレコード
-
hasNext
次に読み込むデータが存在するかどうかを返却する。 データをキャッシュしている場合、キャッシュから結果を返却する。
キャッシュしていない場合、データファイルから結果を返却する。- Specified by:
hasNext
in interfaceDataReader<DataRecord>
- Overrides:
hasNext
in classFileDataReader
- Parameters:
ctx
- 実行コンテキスト- Returns:
- 次に読み込むデータが存在する場合は
true
-
close
このリーダの利用を停止し、内部的に保持している各種リソースを解放する。 キャッシュを有効にしていた場合、キャッシュを削除する。- Specified by:
close
in interfaceDataReader<DataRecord>
- Overrides:
close
in 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
の場合
-