public final class TestUsingJxl extends java.lang.Object implements HeaderCallable, DetailCallable, InvalidCellInfoCollector
ReadXls
を、JExcelAPI を使用してテストする Java プログラム。
修飾子とタイプ | フィールドと説明 |
---|---|
private java.util.List<java.util.List<java.lang.String>> |
callBackedDetails
リソース.
|
private java.util.Hashtable<java.lang.String,java.lang.String> |
callBackedHeads
リソース.
|
private java.util.List<InvalidCellInfo> |
callBackedInvalidCellInfos
リソース.
|
修飾子 | コンストラクタと説明 |
---|---|
private |
TestUsingJxl()
コンストラクタ.
|
修飾子とタイプ | メソッドと説明 |
---|---|
java.util.Hashtable<java.lang.String,java.lang.String> |
call(java.util.Hashtable<java.lang.String,java.lang.String> headers)
実装する機能.
|
java.util.List<java.util.List<java.lang.String>> |
call(java.util.List<java.util.List<java.lang.String>> detailBlock)
実装する機能.
|
private boolean |
checkDetails(java.util.List<java.util.List<java.lang.String>> detailsA,
java.util.List<java.util.List<java.lang.String>> detailsB)
出力情報のチェック手順.
|
private boolean |
checkHeaders(java.util.Hashtable<java.lang.String,java.lang.String> headersA,
java.util.Hashtable<java.lang.String,java.lang.String> headersB)
出力情報のチェック手順.
|
private boolean |
checkInvalidCellInfos(java.util.List<InvalidCellInfo> invalidCellInfosA,
java.util.List<InvalidCellInfo> invalidCellInfosB)
出力情報のチェック手順.
|
private void |
checkOutputs(java.util.Hashtable<java.lang.String,java.lang.String> headers,
java.util.List<java.util.List<java.lang.String>> details,
java.util.List<InvalidCellInfo> invalidCellInfos,
java.util.Hashtable<java.lang.String,java.lang.String> headers2,
java.util.List<java.util.List<java.lang.String>> details2,
java.util.List<InvalidCellInfo> invalidCellInfos2)
出力情報のチェック手順.
|
private java.io.ByteArrayInputStream |
createByteInputStream(java.lang.String xlsFilePath)
ユーティリティ.
|
private java.util.List<java.util.List<java.lang.String>> |
getCallBackedDetails()
getter/setter.
|
private java.util.Hashtable<java.lang.String,java.lang.String> |
getCallBackedHeads()
getter/setter.
|
private java.util.List<InvalidCellInfo> |
getCallBackedInvalidCellInfos()
getter/setter.
|
private java.lang.String |
getToday(ReadXlsUtil readXlsUtil,
LocaleInfo localeInfo)
ユーティリティ.
|
static void |
main(java.lang.String[] args)
テストプログラムのエントリ.
|
void |
notifyInvalidCellInfo(int rowNo,
int columnNo,
CellDefine cellDefine,
CellTypeDefine cellType,
java.lang.String messageId)
不正データ通知.
|
private void |
setCallBackedDetails(java.util.List<java.util.List<java.lang.String>> callBackedDetails)
getter/setter.
|
private void |
setCallBackedHeads(java.util.Hashtable<java.lang.String,java.lang.String> callBackedHeads)
getter/setter.
|
private void |
setCallBackedInvalidCellInfos(java.util.List<InvalidCellInfo> callBackedInvalidCellInfos)
getter/setter.
|
private int |
showOutputs(ReturnCode retcode,
java.util.List<InvalidCellInfo> invalidCellInfos,
java.util.Hashtable<java.lang.String,java.lang.String> headers,
java.util.List<java.util.List<java.lang.String>> details,
LocaleInfo localeInfo)
出力内容の表示.
|
private int |
testReadInputStream(java.lang.String xlsFilePath)
テスト手順.
|
private java.util.Hashtable<java.lang.String,java.lang.String> callBackedHeads
ヘッダ部の読み込みがすんだところでコールバックされたヘッダ情報。
private java.util.List<java.util.List<java.lang.String>> callBackedDetails
コールバックされた明細情報を記録しておくリスト。
private java.util.List<InvalidCellInfo> callBackedInvalidCellInfos
不正データを検知するたびにコールバックされた情報を保持する
List<InvalidCellInfo
>。
private boolean checkHeaders(java.util.Hashtable<java.lang.String,java.lang.String> headersA, java.util.Hashtable<java.lang.String,java.lang.String> headersB)
ReadXls.readInputStream(java.io.InputStream, LocaleInfo, XlsHandler, boolean, String, List, HeaderCallable, boolean, int, Breaker, List, DetailCallable, int, Hashtable, List, List, InvalidCellInfoCollector)
と
ReadXls.parse(Hashtable, List, List)
で読み込んだヘッダ情報の内容が一致していることを確認している。headersA
- 読み込んだヘッダ情報の一方headersB
- 読み込んだヘッダ情報のもう一方private boolean checkDetails(java.util.List<java.util.List<java.lang.String>> detailsA, java.util.List<java.util.List<java.lang.String>> detailsB)
ReadXls.readInputStream(java.io.InputStream, LocaleInfo, XlsHandler, boolean, String, List, HeaderCallable, boolean, int, Breaker, List, DetailCallable, int, Hashtable, List, List, InvalidCellInfoCollector)
と
ReadXls.parse(Hashtable, List, List)
で読み込んだ明細情報の内容が一致することを確認している。detailsA
- 読み込んだ明細情報の一方detailsB
- 読み込んだ明細情報のもう一方private boolean checkInvalidCellInfos(java.util.List<InvalidCellInfo> invalidCellInfosA, java.util.List<InvalidCellInfo> invalidCellInfosB)
ReadXls.readInputStream(java.io.InputStream, LocaleInfo, XlsHandler, boolean, String, List, HeaderCallable, boolean, int, Breaker, List, DetailCallable, int, Hashtable, List, List, InvalidCellInfoCollector)
と
ReadXls.parse(Hashtable, List, List)
で検知した不正データの情報が一致することを確認している。invalidCellInfosA
- 読み込んだ不正データ情報の一方invalidCellInfosB
- 読み込んだ不正データ情報のもう一方private void checkOutputs(java.util.Hashtable<java.lang.String,java.lang.String> headers, java.util.List<java.util.List<java.lang.String>> details, java.util.List<InvalidCellInfo> invalidCellInfos, java.util.Hashtable<java.lang.String,java.lang.String> headers2, java.util.List<java.util.List<java.lang.String>> details2, java.util.List<InvalidCellInfo> invalidCellInfos2)
ReadXls.readInputStream(java.io.InputStream, LocaleInfo, XlsHandler, boolean, String, List, HeaderCallable, boolean, int, Breaker, List, DetailCallable, int, Hashtable, List, List, InvalidCellInfoCollector)
と
ReadXls.parse(Hashtable, List, List)
で読み込んだ結果のすべてが一致することを確認している。headers
- ReadXls.readInputStream(java.io.InputStream, LocaleInfo, XlsHandler, boolean, String, List, HeaderCallable, boolean, int, Breaker, List, DetailCallable, int, Hashtable, List, List, InvalidCellInfoCollector)
で読み込んだヘッダ情報details
- ReadXls.readInputStream(java.io.InputStream, LocaleInfo, XlsHandler, boolean, String, List, HeaderCallable, boolean, int, Breaker, List, DetailCallable, int, Hashtable, List, List, InvalidCellInfoCollector)
で読み込んだ明細情報invalidCellInfos
- ReadXls.readInputStream(java.io.InputStream, LocaleInfo, XlsHandler, boolean, String, List, HeaderCallable, boolean, int, Breaker, List, DetailCallable, int, Hashtable, List, List, InvalidCellInfoCollector)
で読み込んだ不正データ情報headers2
- ReadXls.parse(Hashtable, List, List)
で読み込んだヘッダ情報details2
- ReadXls.parse(Hashtable, List, List)
で読み込んだ明細情報invalidCellInfos2
- ReadXls.parse(Hashtable, List, List)
で読み込んだ不正データ情報checkHeaders(Hashtable, Hashtable)
,
checkDetails(List, List)
,
checkInvalidCellInfos(List, List)
private int showOutputs(ReturnCode retcode, java.util.List<InvalidCellInfo> invalidCellInfos, java.util.Hashtable<java.lang.String,java.lang.String> headers, java.util.List<java.util.List<java.lang.String>> details, LocaleInfo localeInfo)
ReadXls.parse(Hashtable, List, List)
の戻り値と、ファイルから読み込んだ不正データ情報、ヘッダ情報、
明細情報の内容を表示する。retcode
- ReadXls.parse(Hashtable, List, List)
の戻り値invalidCellInfos
- ファイルから読み込んだ不正データ情報headers
- ファイルから読み込んだヘッダ情報details
- ファイルから読み込んだ明細情報ReturnCode.FOUND_INVALID_CELLS
だった場合は 1
を、そうでなければゼロを返す。private java.io.ByteArrayInputStream createByteInputStream(java.lang.String xlsFilePath) throws java.io.IOException
xlsFilePath
- 読みこむファイルのパスByteArrayInputStream
java.io.IOException
- ファイルが存在いていなかったり、
読み込み中にエラーが起きたりしたら発生する。private java.lang.String getToday(ReadXlsUtil readXlsUtil, LocaleInfo localeInfo)
readXlsUtil
- ReadXlsUtil
のインスタンスlocaleInfo
- ロケール情報 LocaleInfo
private int testReadInputStream(java.lang.String xlsFilePath) throws java.io.IOException
createByteInputStream(String)
で、Excel ファイルをメモリに読み込む。
XlsHandler
に
XlsHandleForJxl
を設定する。
Breaker
に
RowColumnBreaker
を指定する。
Hashtable
、
LinkedList
<List
<String
>>
、
LinkedList
<InvalidCellInfo
>
、を用意する。
InvalidCellInfoCollector
には null を設定する。
ReadXls.readInputStream(java.io.InputStream, LocaleInfo, XlsHandler, boolean, String, List, HeaderCallable, boolean, int, Breaker, List, DetailCallable, int, Hashtable, List, List, InvalidCellInfoCollector)
を呼び出す。
ReadXls.createXlsReader(java.io.InputStream, XlsHandler, boolean)
を呼び出す。
ReadXls.parse(Hashtable, List, List)
を呼び出す。
ReadXls.parse(Hashtable, List, List)
をもう一度呼び出す。
checkOutputs(Hashtable, List, List, Hashtable, List, List)
で readInputStream() と parse() の出力情報を確認する。
showOutputs(ReturnCode, List, Hashtable, List, LocaleInfo)
で出力情報を表示する。
xlsFilePath
- 読みこむ Excel ファイル。
JExcelAPI (XlsHandleForJxl
)が処理できるのは拡張子が .xls
の頃のファイルだけ。
XlsHandleForPoi
) は、
Office Open XML (拡張子 .xlsx) も読み込める。checkOutputs(Hashtable, List, List, Hashtable, List, List)
が出力情報の不一致などを検知したら 1
を、FileNotFoundException
が発生した場合は 2
を、その他の IOException
が発生した場合は 3
を、いずれでもなければゼロを返す。java.io.IOException
- ファイルの読み込みで異常が起きた場合に発生する。public static void main(java.lang.String[] args)
ReadXls.readInputStream(java.io.InputStream, LocaleInfo, XlsHandler, boolean, String, List, HeaderCallable, boolean, int, Breaker, List, DetailCallable, int, Hashtable, List, List, InvalidCellInfoCollector)
と
ReadXls.parse(Hashtable, List, List)
でそれを読み込ませて、JExcelAPI を使用した Excel ファイルの読み込み機能のテストを行う。
IOException
を捕捉すればプログラム終了コード 5 で停止する。
testReadInputStream(String)
の戻り値がプログラム終了コードになる。
args
- Excel ファイル (拡張子 .xls) を指定する。private java.util.Hashtable<java.lang.String,java.lang.String> getCallBackedHeads()
callBackedHeads
を返す。private void setCallBackedHeads(java.util.Hashtable<java.lang.String,java.lang.String> callBackedHeads)
callBackedHeads
- callBackedHeads
に設定するハッシュテーブルpublic java.util.Hashtable<java.lang.String,java.lang.String> call(java.util.Hashtable<java.lang.String,java.lang.String> headers)
HeaderCallable
ヘッダ部のすべての項目を読み込んだ後にコールバックされ、 受け取ったヘッダ情報を処理する手順を実装する。
call
インタフェース内 HeaderCallable
headers
- ヘッダ部から読み込んだヘッダ情報項目のハッシュテーブルprivate java.util.List<java.util.List<java.lang.String>> getCallBackedDetails()
callBackedDetails
を返す。private void setCallBackedDetails(java.util.List<java.util.List<java.lang.String>> callBackedDetails)
callBackedDetails
- callBackedDetails
に設定するリストpublic java.util.List<java.util.List<java.lang.String>> call(java.util.List<java.util.List<java.lang.String>> detailBlock) throws ReadXlsException
DetailCallable
明細情報一件分を読み込むたびに呼び出され、 それを処理する手順を実装する。
call
インタフェース内 DetailCallable
detailBlock
- 明細情報一件分の行数分の入力値のリスト List<List<String>>ReadXlsException
- 処理中に不正なデータなどを検知した際に発生する。private java.util.List<InvalidCellInfo> getCallBackedInvalidCellInfos()
callBackedInvalidCellInfos
を返す。private void setCallBackedInvalidCellInfos(java.util.List<InvalidCellInfo> callBackedInvalidCellInfos)
callBackedInvalidCellInfos
- callBackedInvalidCellInfos
に設定するリストpublic void notifyInvalidCellInfo(int rowNo, int columnNo, CellDefine cellDefine, CellTypeDefine cellType, java.lang.String messageId) throws ReadXlsException
InvalidCellInfoCollector
不正データを見つけた際に、その不正の内容の通知を受けるメソッド。
InvalidCellInfoCollector インタフェースを実装するクラスは、
このメソッドで不正内容についての情報を処理できる。
notifyInvalidCellInfo
インタフェース内 InvalidCellInfoCollector
rowNo
- 不正が見つかった行の行番号 (1~)columnNo
- 不正が見つかった列の列番号 (1~)cellDefine
- 不正と判定した際のセル定義情報cellType
- 不正が見つかったセルの型messageId
- 不正の内容についてのメッセージReadXlsException
- 不正データの情報を処理した結果、Excel ファイルの読み込みを中断する
必要がある場合に発生する。CellDefine
,
CellTypeDefine
,
ReadXlsException