CSVの項目中に改行が含まれていると、FileTokenizingRowResourceのrowStringに正しい値が設定されない

59 views
Skip to first unread message

tty

unread,
Jul 23, 2012, 8:29:24 AM7/23/12
to dbf...@googlegroups.com
FileTokenの不具合を発見したので、ご報告します。

FileToken#tokenizeを使用してCSVファイルを処理する際、
項目中に改行が含まれていると、FileTokenizingRowResourceのrowStringに正しい値が設定されないようです。

dbflute-runtimeプロジェクトの、FileTokenTest#test_tokenizeに、

assertEquals(first, fileTokenizingRowResource.getRowString());

を追加すると確認できるかと思います。
(index == 0の場合のassertに追加)


# FileTokenの150行目あたりの処理が原因だと思われます。

kubo

unread,
Jul 23, 2012, 11:12:03 AM7/23/12
to dbf...@googlegroups.com
jfluteです。

それにしても、こんなマニアックなクラスまで見て頂き、
本当にありがとうございます!とても、うれしいですね。

2012/7/23 kubo <dbf...@gmail.com>:
> jfluteです
>
> ttyさん、ありがとうございます。
> テストを追加して再現して修正しました。
> 最終的なRowStringは別途変数で扱うようにしました。
>
> if (preContinueString.equals("")) {
> rowString = lineString;
> realRowStringSb.append(lineString);
> } else {
> final String lineSeparator = "\n";
> rowString = preContinueString + lineSeparator + lineString;
> realRowStringSb.append(lineSeparator).append(lineString);
> }
>
> ただ、もともとの挙動ですが、
> 改行が「CR+LF」の場合も「LF」として扱われてしまいますね。
> 正確さを出すなら BufferedReader#readLine() は使わない方が
> いいのかも。。。(ここではもう割り切りというか仕様で)
>
>
> #
> # リリース前だったので良かったです。
> # ありがとうございます。
> #
>
> 2012/7/23 tty <imgn...@gmail.com>:

>> --
>> このメールは Google グループのグループ「DBFluteユーザの集い」の登録者に送られています。
>> このグループに投稿するには、dbf...@googlegroups.com にメールを送信してください。
>> このグループから退会するには、dbflute+u...@googlegroups.com にメールを送信してください。
>> 詳細については、http://groups.google.com/group/dbflute?hl=ja からこのグループにアクセスしてください。
>>

kubo

unread,
Jul 23, 2012, 9:43:20 AM7/23/12
to dbf...@googlegroups.com
jfluteです

ttyさん、ありがとうございます。
テストを追加して再現して修正しました。
最終的なRowStringは別途変数で扱うようにしました。

if (preContinueString.equals("")) {
rowString = lineString;
realRowStringSb.append(lineString);
} else {
final String lineSeparator = "\n";
rowString = preContinueString + lineSeparator + lineString;
realRowStringSb.append(lineSeparator).append(lineString);
}

ただ、もともとの挙動ですが、
改行が「CR+LF」の場合も「LF」として扱われてしまいますね。
正確さを出すなら BufferedReader#readLine() は使わない方が
いいのかも。。。(ここではもう割り切りというか仕様で)


#
# リリース前だったので良かったです。
# ありがとうございます。
#

2012/7/23 tty <imgn...@gmail.com>:

kubo

unread,
Jul 24, 2012, 8:57:23 AM7/24/12
to dbf...@googlegroups.com
jfluteです。

こちら、先日リリースしたDBFlute-0.9.9.7Aに反映されています。

2012/7/24 kubo <dbf...@gmail.com>:

tty

unread,
Jul 24, 2012, 9:32:15 AM7/24/12
to dbf...@googlegroups.com
> こちら、先日リリースしたDBFlute-0.9.9.7Aに反映されています。

対応ありがとうございます。
修正されていることを確認いたしました。

>> それにしても、こんなマニアックなクラスまで見て頂き、
>> 本当にありがとうございます!とても、うれしいですね。


こちらこそ、素晴らしいプロダクトを利用させていただき、
感謝しております。


2012年7月24日 21:57 kubo <dbf...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages