@Target(value={FIELD,ANNOTATION_TYPE}) @Retention(value=RUNTIME) @Documented public @interface CsvFormat
このライブラリに対応していない書式や独自のタイプに対応する際に使用します。
formatter()
で、TextFormatter
の実装クラスを指定します。TextFormatter
は、文字列とオブジェクトの相互に変換するためのインタフェースになります。
AbstractTextFormatter
を継承して作成します。
以下に、java.net.URLにマッピングする例を示します。
@CsvBean
public class SampleCsv {
@CsvColumn(number=1, label="ホームページ")
@CsvFormat(formatter=UrlFormatter.class) // 実装したTextFormatterの指定
private URL homepage;
// getter/setterは省略
}
// TextFormatterの実装クラス - URLにマッピングするクラス
public class UrlFormatter extends AbstractTextFormatter<URL> {
// 読み込み時の文字列からオブジェクト型に変換するメソッドの実装
@Override
public URL parse(final String text) {
try {
return new URL(text);
} catch(MalformedURLException e) {
throw new TextParseException(text, URL.class, e);
}
}
// 書き込みにオブジェクト型から文字列に変換するメソッドの実装
@Override
public String print(final URL object) {
return object.toExternalForm();
}
// 読み込み時のエラーメッセージ中で使用可能な変数の定義
// 必要があればオーバライドして実装します。
@Override
public Map<String, Object> getMessageVariables() {
final Map<String, Object> vars = new HashMap<>();
vars.put("key", "vars");
return vars;
}
}
修飾子とタイプ | 必須要素と説明 |
---|---|
Class<? extends TextFormatter> |
formatter
フォーマッタのクラスを指定します。
|
public abstract Class<? extends TextFormatter> formatter
TextFormatter
の実装クラスを指定します。public abstract String message
{key}の書式の場合、プロパティファイルから取得した値を指定できます。
このメッセージは、文字列をブール型にパースする際に失敗したときに適用されるメッセージに使用します。
CellProcessor
に基づいたメッセージが出力されます。Copyright © 2022 mygreen. All rights reserved.