^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@CsvEnumFormat
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
列挙型の変換規則の設定を行うためのアノテーションです。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
基本的な使い方
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
列挙型の場合、アノテーション ``@CsvEnumFormat`` を付与しなくてもマッピングできます。
その際は、カラムの値と列挙型の要素の値をマッピングさせます。
要素の値とは、 ``Enum#name()`` で取得できる値です。
* 属性 ``ignoreCase`` の値をtrueにすると、読み込み時に大文字/小文字の区別なく変換します。
.. sourcecode:: java
:linenos:
import com.github.mygreen.supercsv.annotation.CsvBean;
import com.github.mygreen.supercsv.annotation.CsvColumn;
import com.github.mygreen.supercsv.annotation.format.CsvEnumFormat;
@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* にマッピングされます。
.. sourcecode:: java
:linenos:
import com.github.mygreen.supercsv.annotation.CsvBean;
import com.github.mygreen.supercsv.annotation.CsvColumn;
import com.github.mygreen.supercsv.annotation.format.CsvEnumFormat;
@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;
}
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
読み込み時の値のパースに失敗した際のメッセージ
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
読み込み時に値のパースに失敗した時に独自のメッセージとして、属性 ``message`` で指定することができます。
メッセージ中は、`JEXL `_ による式言語を使うことができ、
予め登録されている変数を用いて、メッセージ内容を独自にカスタマイズすることができます。
詳細は、:doc:`値の検証時のメッセージ ` を参照してください。
メッセージ中で利用可能な変数は、`JavaDoc <../apidocs/com/github/mygreen/supercsv/annotation/format/CsvEnumFormat.html>`_ を参照してください。
.. sourcecode:: java
:linenos:
import com.github.mygreen.supercsv.annotation.CsvBean;
import com.github.mygreen.supercsv.annotation.CsvColumn;
import com.github.mygreen.supercsv.annotation.format.CsvEnumFormat;
@CsvBean
public class SampleCsv {
@CsvColumn(number=1, label="ステータス")
@CsvEnumFormat(message="[{rowNumber}行, {columnNumber}列] : 項目「{label}」の値({validatedValue})は、何れかの値「${f:join(enums, ', ')}」である必要があります。"
private RoleType role;
// setter/getterは省略
}
// 列挙型の定義
public enum RoleType {
Normal, Admin;
}