@Target(value={FIELD,ANNOTATION_TYPE}) @Retention(value=RUNTIME) @Documented public @interface CsvEnumFormat
列挙型の場合、アノテーションを付与しなくてもマッピングできます。
その際は、カラムの値と列挙型の要素の値をマッピングさせます。
要素の値とは、Enum.name()
で取得できる値です。
ignoreCase()
で、読み込み時に大文字・小文字の区別なく比較するか指定します。
@CsvBean
public class SampleCsv {
@CsvColumn(number=1, label="権限")
private RoleType role;
// 読み込み時に大文字・小文字の区別を行いません。
@CsvColumn(number=2, label="権限2")
@CsvEnumFormat(ignoreCase=true)
private RoleType role2;
// setter/getterは省略
}
// 列挙型の定義
public enum RoleType {
Normal, Admin;
}
別名でマッピングする場合、属性selector()
で列挙型の要素の別名を取得するメソッド名を指定します。
以下の例では、読み込み時に入力値が 一般権限 の場合、 RoleType.Normal にマッピングされます。
@CsvBean
public class SampleCsv {
@CsvColumn(number=1, label="権限")
@CsvEnumFormat(selector="localeName")
private RoleType role;
// setter/getterは省略
}
// 列挙型の定義
public enum RoleType {
Normal("一般権限"), Admin("管理者権限");
// 別名の設定
private String localeName;
private RoleType(String localeName) {
this.localeName = localeName;
}
// 別名の取得用メソッド
public String localeName() {
return this.localeName;
}
}
修飾子とタイプ | 任意要素と説明 |
---|---|
boolean |
ignoreCase
読み込み時に、大文字・小文字を区別なく候補の値と比較して判定するか指定します。
|
String |
message
エラー時のメッセージを指定します。
|
String |
selector
列挙型を
Enum.name() メソッド以外から取得するときに指定します。 |
public abstract boolean ignoreCase
public abstract String selector
Enum.name()
メソッド以外から取得するときに指定します。
例). Color.label()のlabel()メソッドを指定するときには、'label'と指定します。
Enum.name()
から取得できる値が採用されます。public abstract String message
{key}の書式の場合、プロパティファイルから取得した値を指定できます。
このメッセージは、文字列を列挙型にパースする際に失敗したときに適用されるメッセージに使用します。
使用可能なメッセージ中の変数は下記の通りです。
ignoreCase()
の値です。selector()
の値です。Collection
型に変換した値です。CellProcessor
に基づいたメッセージが出力されます。Copyright © 2022 mygreen. All rights reserved.