久しぶりにJavaしている今日この頃です(8)

ここ数日はまたJavaフレームワークに機能追加をしていたり(・∀・)
追加した機能はこんなところ。

  • フラッシュ

AdobeのではなくてRoRライクなやつ。
PRGで、リダイレクトから次画面にデータを渡したい時に使う用。


処理は2つの層になっていて。
1つはフラッシュのプリミティブな機能を提供するFlashFilterとFlashクラス。
Flashクラスはstaticなget()、put()とかのメソッドを持っていて、ThreadLocalで一時データを管理しつつ、FlashFilterがリクエストとリクエストの間だけセッション上にデータを保存するような実装。


もう1つの層は、無設定Strutsに対応したフラッシュ関連のアノテーションとそれを処理するところ。
アクションのメンバ変数を自動的にフラッシュに保存するFlashSaveアノテーションと、フラッシュのデータを次のリクエストにも持ち越すFlashKeepアノテーションとか、そんなん(・ω・)

ヴァリデーションと補正は切り離せないところがありますが(・ω・)
例えば、全角カナしか入力させたくない所に半角カナが入力されたとして、それをいちいちエラーメッセージを出すのもな〜という時もあるわけで。
そんなんだったら、自動的に補正しちまえばイインジャネ?、っというわけで、トリム、カナ変換(PHPのmb_convert_kana()っぽい指定方法)、一覧からの選択、フィルタ(指定した文字のみ許可)、簡単なマスク(99-XXXX-9999みたいな)あたりの自動補正処理を用意。
構成はStrutsのValidatorクラス群と同じ構成*1っぽくして、自前の補正処理を追加したければ、フィールドを補正するクラスを用意して、設定ファイルに記述を追加すればそれが使えるようにしまスタ。


あと、補正処理を指定するためのアノテーションも用意。
補正アノテーションが付加されたアクションのメンバ変数には、対応する補正処理が行われたパラメータが設定されますのだ(・∀・)
当然、この処理が行われるのはヴァリデーションの前。
ちなみにこんなカンジで利用(・ω・)

// Trimして、英数ASCIIは半角、半角カナは全角に変換
@CorrectTrim
@CorrectKana(option="nraK")
public String data1;

// a、b、cしか許可しない、それ以外だったらaにする
@CorrectIn(in="a,b,c", caseelse="a")
public String data2;

来週は絵文字対応の機能強化をしようと思い、既存機能のリファクタリングをしてみたり(・ω・)
既存の処理としては、このあたりの処理が実装済み(っというか、PHPで作っていたモノからの移植)。


1. MobileAgentクラス
HTTPヘッダの解析。

2. carrierパッケージ
キャリア毎の個別設定と処理用のクラス。
キャリア毎にエンコードを変えたり、フィルタでencodeUrl()したりするためのもの。

3. specパッケージ
モデルから携帯端末のスペック情報を取得するためのクラス群。
スペック情報の取得はSpecProvider実装クラス経由で行い、リファレンス実装としてはCSVファイルからスペック情報を取得するProviderを用意。
これはke-tai.orgの携帯端末スペック一覧を利用できるようにするためだったりして。

4. pictgramパッケージ
そして現状はまだスッカスカ、来週あたりに強化予定な絵文字関連クラス群。
絵文字関連のライブラリって、PerlPHPにはあるけれどJavaだとあまり聞かないよね〜(・ω・)?
Emf(Servlet絵文字フィルター)とかはあるけど。



で、なぜか今日はC#でお絵かきアプリを作っていたりしていましたが。
コソーリとUnityContainerを使ってみたりね〜(・∀・)

*1:CorrectorResource、FieldCorrect、CorrectorPluginとか