2007年9月26日水曜日

キロ(k)やメガ(M)に変換Converter(Teeda)

スズキです。

近頃さわる機会が多い、TeedaのConverterのネタです。

アップロードしたファイルのサイズを、キロ(k)単位で、
Pageに出力するニーズがあり、
それを実現するConverter(SiPrefixConverter)を作ってみました。

まあ、こんなコードです。
http://suz-lab.googlecode.com/svn/trunk/suz-s2-converter/src/main/java/jp/co/iret/suz/s2/converter/teeda/impl/SiPrefixConverterImpl.java

使い方は、こんな感じです。

--------
@SiPrefixConverter(prefix="kilo", pattern="#,##0.#")
public Long getImageSize() {
  return imageSize;
}
--------

imageSizeはバイト数ですが、表示するときは、
キロの数字に変換されます。
※patternはDecimalFormatのやつです。

prefixは"kilo"のほかに、"mega"、"giga"、"tera"まで
指定することができます。(下記を参考にしてます)
http://www.math.com/tables/general/numnotation.htm#si

本当は、

--------
@SiPrefixConverter(prefix="kilo")
@NumberConverter(pattern="#,##0.#")
public Long getImageSize() {
  return imageSize;
}
--------

と連鎖する形で実現したかったんだけど、
Converterの仕組みでは無理っぽい。
なので、SiPrefixConverterにDecimalFormatのでの変換も、
入れざるを得なかったのが、心残りです。

どうせなら、DecimalFormatConverterを作って、
そのサブクラスとして、SiPrefixConverterを作るべきだったかなー。

ま、とりあえず、上記はsuz-s2-converter-0.0.2としてリリースしました。
http://code.google.com/p/suz-lab/downloads/detail?name=suz-s2-converter-0.0.2.zip
http://suz-lab.googlecode.com/svn/trunk/suz-s2-converter/

かなり、場当たり、ライブラリー。

--
blog: http://suz-lab.blogspot.com/

0 コメント: