|
||||||||||
前のクラス 次のクラス | フレームあり フレームなし | |||||||||
概要: 入れ子 | フィールド | コンストラクタ | メソッド | 詳細: フィールド | コンストラクタ | メソッド |
java.lang.Objectjp.terasoluna.fw.file.dao.standard.AbstractFileLineIterator<T>
T
- ファイル行オブジェクト。public abstract class AbstractFileLineIterator<T>
ファイルアクセス(データ取得)用の共通クラス。
ファイルアクセス(データ取得)を行う3つのクラス(CSV、固定長、可変長) に共通する処理をまとめた抽象クラス。 ファイルの種類に対応するサブクラスが処理を行う。
使用例はFileLineIterator
を参照のこと。
IllegalStateExceptionが発生します。
- 関連項目:
FileLineIterator
,
CSVFileLineIterator
,
FixedFileLineIterator
,
VariableFileLineIterator
,
PlainFileLineIterator
コンストラクタの概要
AbstractFileLineIterator(String fileName,
Class<T> clazz,
Map<String,ColumnParser> columnParserMap)
コンストラクタ。
メソッドの概要
void
closeFile()
ファイル閉塞処理を行う。
protected int[]
getColumnBytes()
各カラムのバイト数を取得する。
protected char[]
getColumnEncloseChar()
カラムの囲み文字を取得する。
int
getCurrentLineCount()
現在ファイル入力処理済みのデータ部内の行数を取得する。
protected abstract char
getDelimiter()
区切り文字を取得する。
protected abstract char
getEncloseChar()
囲み文字を取得する。
protected Field[]
getFields()
ファイル行オブジェクトのField情報(Annotation)を格納する変数を取得する。
protected String
getFileEncoding()
ファイルエンコーディング取得する。
protected String
getFileName()
ファイル名を取得する。
List<String>
getHeader()
ヘッダ部のデータを取得する。
protected int
getHeaderLineCount()
ヘッダ行数を取得する。
protected String
getLineFeedChar()
行区切り文字を取得する。
protected int
getTotalBytes()
1行分のバイト数を取得する。
List<String>
getTrailer()
トレイラ部のデータを取得する。
protected int
getTrailerLineCount()
トレイラ行数を取得する。
boolean
hasNext()
次の行のレコードがあるかどうか確認する。
protected void
init()
初期化処理を行う。
protected boolean
isCheckByte(InputFileColumn inputFileColumn)
対象カラムに対するバイト数チェックを行うかを返す。
protected boolean
isCheckByte(int columnByte)
対象カラムに対するバイト数チェックを行うかを返す。
protected boolean
isCheckColumnAnnotationCount()
ファイル行オブジェクトにアノテーションが設定されている事をチェックするかどうかを返す。
protected boolean
isCheckEncloseChar()
囲み文字が設定されていない事をチェックするかどうかを返す。
protected boolean
isEnclosed()
囲み文字が設定されているかを返す。
T
next()
繰り返し処理でファイル行オブジェクトを返却する。
protected String
readLine()
ファイルからデータ部のデータを1行分読み取り、文字列として呼出元に返却する。
void
remove()
サポートしない。
protected abstract String[]
separateColumns(String fileLineString)
データ部のデータ1行分をファイル行オブジェクトのアノテーションの記述に 従いカラムに分割する。
protected void
setLineFeedChar(String lineFeedChar)
行区切り文字を設定する。
void
skip(int skipLines)
データ部のデータを読み飛ばす処理を行う。
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
コンストラクタの詳細
AbstractFileLineIterator
public AbstractFileLineIterator(String fileName,
Class<T> clazz,
Map<String,ColumnParser> columnParserMap)
- コンストラクタ。
引数のチェック及び、ファイル行オブジェクトのFileFormatアノテーション 設定のチェックを行う。
チェック結果問題がある場合は例外を発生する。
- パラメータ:
fileName
- ファイル名最後に移動clazz
- ファイル行オブジェクトクラスcolumnParserMap
- フォーマット処理リスト
- 例外:
FileException
- 初期化処理で失敗した場合。
メソッドの詳細
hasNext
public boolean hasNext()
- 次の行のレコードがあるかどうか確認する。
繰り返し処理でさらに要素がある場合に true を返します。
- 定義:
- インタフェース
Iterator
内の hasNext
- 定義:
- インタフェース
FileLineIterator<T>
内の hasNext
- 戻り値:
- 繰り返し処理でさらに要素がある場合に
true
- 例外:
FileException
- リーダからIOExceptionが発生した場合。
next
public T next()
- 繰り返し処理でファイル行オブジェクトを返却する。
次の行のレコードの情報をファイル行オブジェクトに格納して返却します。
繰り返し処理で次の要素を返します。
次の行のレコードの情報はファイル行オブジェクトのInputFileColumnの定義に 基づいて格納される。
もし、ファイル行オブジェクトのマッピングフィールドの数と合わない レコード情報が来た場合は例外を発生する。
また、InputFileColumnに設定されたバイト数と違う情報が来た場合も例外を発生する。
それではない場合は以下の順番でデータを処理し格納する。
- トリム処理
- パディング処理
- 文字列変換処理
- 型変換(マッピング)処理
- 定義:
- インタフェース
Iterator
内の next
- 定義:
- インタフェース
FileLineIterator<T>
内の next
- 戻り値:
- ファイル行オブジェクト
- 例外:
FileException
- ファイル行オブジェクトの生成に失敗した場合。
FileLineException
- ファイル行オブジェクトの取得に失敗した場合。
remove
public void remove()
- サポートしない。
Iteratorで定義されているメソッド。
FileQueryDAOでは実装しないので、他のクラスから呼び出した場合、 UnsupportedOperationExceptionをスローする。
- 定義:
- インタフェース
Iterator
内の remove
- 例外:
UnsupportedOperationException
- このメソッドはサポートしない。
init
protected void init()
- 初期化処理を行う。
初期化処理で行う処理は以下です。。
- ファイル行オブジェクトの属性(Field)の取得
- 文字変換種別オブジェクト(stringConverters)の生成
- ファイル行オブジェクトの属性に対するセッタメソッド(methods)の取得
- ファイルからデータを読込むためのLineReaderの生成
- ヘッダ部の取得
- トレイラキューの初期化
init()はAbstracFileLineIteratorを継承するクラスのコンストラクタで 呼ぶメソッドである。
下位互換性のため、2回以上実行できないようにしている。
- 例外:
FileException
- 初期化処理で失敗した場合。
FileLineException
- カラムに関連する初期化処理で失敗した場合。
closeFile
public void closeFile()
- ファイル閉塞処理を行う。
- 定義:
- インタフェース
FileLineIterator<T>
内の closeFile
- 例外:
FileException
- ファイル閉塞処理で失敗した場合。
getHeader
public List<String> getHeader()
- ヘッダ部のデータを取得する。
データ部とトレイラ部の取得処理の実行可否と関係なくヘッダ部を取得することが 出来る。
- 定義:
- インタフェース
FileLineIterator<T>
内の getHeader
- 戻り値:
- header ヘッダ部の文字列リスト
getTrailer
public List<String> getTrailer()
- トレイラ部のデータを取得する。
トレイラ部のデータを取得するとデータ部のデータを取得することは出来ない。
理由はトレイラ部のデータ取得時に、データ部の情報を全部スキップするためです。
※注意事項
データ部のデータを全部取得する以前にトレイラ部を取得しないこと。
- 定義:
- インタフェース
FileLineIterator<T>
内の getTrailer
- 戻り値:
- トレイラ部の文字列リスト
- 例外:
FileException
- データ行取得処理で失敗した場合。
readLine
protected String readLine()
- ファイルからデータ部のデータを1行分読み取り、文字列として呼出元に返却する。
トレイラ部が存在する場合はトレイラキューからデータを取得して結果文字列に する。
その後LineReaderから1行分の文字列を取得しトレイラキューに格納する。
トレイラ部が存在しない場合はLineReaderから取得した1行分の文字列を結果文字列に する。
もし、次の1行分のデータがない場合はnullを返す。
- 戻り値:
- データ部の1行分の文字列
- 例外:
FileException
- データ行取得処理で失敗した場合。
skip
public void skip(int skipLines)
- データ部のデータを読み飛ばす処理を行う。
- 定義:
- インタフェース
FileLineIterator<T>
内の skip
- パラメータ:
skipLines
- 読み飛ばす行数。
getDelimiter
protected abstract char getDelimiter()
- 区切り文字を取得する。
- 戻り値:
- 行区切り文字。
getEncloseChar
protected abstract char getEncloseChar()
- 囲み文字を取得する。
- 戻り値:
- 囲み文字。
separateColumns
protected abstract String[] separateColumns(String fileLineString)
- データ部のデータ1行分をファイル行オブジェクトのアノテーションの記述に 従いカラムに分割する。
引数fileLineString
がnull
もしくは 空文字の場合は、要素を持たないString
配列を返します。
サブクラスはこのメソッドをオーバーライドします。
- パラメータ:
fileLineString
- データ部のデータ1行分
- 戻り値:
- データ部1行の文字列を分解した文字配列
isCheckByte
protected boolean isCheckByte(InputFileColumn inputFileColumn)
- 対象カラムに対するバイト数チェックを行うかを返す。
- パラメータ:
inputFileColumn
- 対象カラムのInputFileColumn情報
- 戻り値:
- バイト数が設定されている(1バイト以上)場合はtrue。
isCheckByte
protected boolean isCheckByte(int columnByte)
- 対象カラムに対するバイト数チェックを行うかを返す。
- パラメータ:
columnByte
- 対象カラムのバイト数
- 戻り値:
- バイト数が設定されている(1バイト以上)場合はtrue。
getLineFeedChar
protected String getLineFeedChar()
- 行区切り文字を取得する。
- 戻り値:
- 行区切り文字
setLineFeedChar
protected void setLineFeedChar(String lineFeedChar)
- 行区切り文字を設定する。
- パラメータ:
行区切り文字
-
getFileEncoding
protected String getFileEncoding()
- ファイルエンコーディング取得する。
- 戻り値:
- ファイルエンコーディング
getHeaderLineCount
protected int getHeaderLineCount()
- ヘッダ行数を取得する。
- 戻り値:
- ヘッダ行数
getTrailerLineCount
protected int getTrailerLineCount()
- トレイラ行数を取得する。
- 戻り値:
- トレイラ行数
getCurrentLineCount
public int getCurrentLineCount()
- 現在ファイル入力処理済みのデータ部内の行数を取得する。
- 戻り値:
- ファイル入力処理済みのデータ部の行数。
getFields
protected Field[] getFields()
- ファイル行オブジェクトのField情報(Annotation)を格納する変数を取得する。
- 戻り値:
- ファイル行オブジェクトのField情報(Annotation)を格納する変数
getFileName
protected String getFileName()
- ファイル名を取得する。
- 戻り値:
- fileName ファイル名
getColumnEncloseChar
protected char[] getColumnEncloseChar()
- カラムの囲み文字を取得する。
- 戻り値:
- columnEncloseChar 囲み文字
isEnclosed
protected boolean isEnclosed()
- 囲み文字が設定されているかを返す。
- 戻り値:
- enclosed 囲み文字
getColumnBytes
protected int[] getColumnBytes()
- 各カラムのバイト数を取得する。
- 戻り値:
- columnBytes 各カラムのバイト数
getTotalBytes
protected int getTotalBytes()
- 1行分のバイト数を取得する。
- 戻り値:
- totalBytes 1行分のバイト数
isCheckEncloseChar
protected boolean isCheckEncloseChar()
- 囲み文字が設定されていない事をチェックするかどうかを返す。
- 戻り値:
- チェックを行う場合はtrue。
isCheckColumnAnnotationCount
protected boolean isCheckColumnAnnotationCount()
- ファイル行オブジェクトにアノテーションが設定されている事をチェックするかどうかを返す。
- 戻り値:
- チェックを行う場合はtrue。
概要
パッケージ
クラス
使用
階層ツリー
非推奨 API
索引
ヘルプ
前のクラス
次のクラス
フレームあり
フレームなし
概要: 入れ子 | フィールド | コンストラクタ | メソッド
詳細: フィールド | コンストラクタ | メソッド
Copyright © 2011. All Rights Reserved.