KazMuzik.net
Music / Technology / Healthcare / Immigration / アメリカ
Google
 
<< 妻が Stanford Hospital & Clinics で手術 !!Symantec (Norton) Gift Card - update >>

sampo nutch project #4 - FilterReader(s) - KazMuzik Blog
2008-03-16 18:46

今日は、LiveJournal.com の HTML を、KazMuzik.net 用に変換するために開発した、java.io.FilterReader の subclass(es) を紹介します。

以前は、HTML を変換するクラスを、ひとつにまとめて書いていましたが、いろんな機能を追加していくと、だんだん parse が入り組んできて、複雑になり、debug が困難になってくるため、今回は、機能ごとに単純な FilterReader を実装して、それらを chain で組み合わせて、使うことにしました。Unix コマンドを、pipe でつなぐような感じです。実際、grep や sed で十分な機能もありましたが、Java から使う必要があったため、実装してしまいました。

これらは、net.java.sampo.util.io パッケージとしました。まずは、FileFilterReader クラスですが、これは、最初に入力(ファイルなど)をすべて読み込んで、filter の処理をした character array を作成してしまう FilterReader 用の super class で、abstract になっています。実際のクラスのひとつが、TextReplacerFilterReader で、前回、紹介した TextRepalcer ユーティリティクラスを用いて、指定した文字列で挟まれた部分を、別の文字列で置き換える FilterReader です。Constructor には、複数の TextReplacer オブジェクトを与えることができます。

上記は、最初に入力 stream をすべて読み込みますが、LineFilterReader は、一行ずつ読み込んで、filter 処理をするための abstract superclass です。例えば、空行をスキップするとか、のような処理に適しています。中で、readLine() を使うために、BufferedReader を使っているところが、いまいちですが、今後の課題としておきます。

実際の使用例は、LiveJournal.com から KazMuzik.net への conversion を sample project として、ぼちぼち紹介していく予定です。

Tags: programming