^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
@CsvBooleanFormat
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
クラスタイプが「boolean/Boolean」のマッピング規則を定義する際に使用します。
通常の「true、false」以外に、「○、×」などでのマッピングが可能となります。
.. note::
プリミティブ型に対して読み込む際に、CSVのカラムの値が空の場合、 ``false`` が設定されます。
初期値を変更したい場合は、アノテーション ``@CsvDefaultValue`` [`JavaDoc <../apidocs/com/github/mygreen/supercsv/annotation/conversion/CsvDefaultValue.html>`_]を使用してください。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
読み込み時の値の指定
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
属性 ``readForTrue`` 、 ``readForFalse`` で、読み込み時のtrueまたはfalseと判定する候補の値を指定します。
* 属性readForTrueとreadForFalseの値に重複がある場合、readForTrueの定義が優先されまます。
* 属性readForTrueを指定しない場合、デフォルトで「"true", "1", "yes", "on", "y", "t"」が設定されます。
* 属性readForFalseを指定しない場合、デフォルトで「"false", "0", "no", "off", "f", "n"」が設定されます。
* 属性 ``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.CsvBooleanFormat;
@CsvBean
public class SampleCsv {
// boolean型の読み込み時のtrueとfalseの値の変換規則を指定します。
@CsvColumn(number=1, label="ステータス")
@CsvBooleanFormat(
readForTrue={"○", "有効", "レ"},
readForFalse={"×", "無効", "-", ""})
private boolean availaled;
// 読み込み時の大文字・小文字の区別を行わない
@CsvColumn(number=2, label="チェック")
@CsvBooleanFormat(
readForTrue={"OK"},
readForFalse={"NO"},
ignoreCase=true)
private Boolean checked;
// getter/setterは省略
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
書き込み時の値の指定
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
属性 ``writeAsTrue`` と ``writeAsFalse`` で、書き込み時のtrueまたはfalse値に該当する文字を指定します。
* 属性writeAsTrueを指定しない場合は、デフォルトで"true"が設定され、セルのタイプもブール型になります。
* 属性writeAsFalseを指定しない場合は、デフォルトで"false"が設定され、セルのタイプもブール型になります。
* 読み込みと書き込みの両方を行う場合、属性readForTrueとreadForFalseの値に属性writeAsTrueとwriteAsFalseの値を含める必要があります。
.. sourcecode:: java
:linenos:
import com.github.mygreen.supercsv.annotation.CsvBean;
import com.github.mygreen.supercsv.annotation.CsvColumn;
import com.github.mygreen.supercsv.annotation.format.CsvBooleanFormat;
@CsvBean
public class SampleCsv {
// boolean型の書き込み時のtrueとfalseの値の変換規則を指定します。
@CsvColumn(number=1, label="ステータス")
@CsvBooleanFormat(
readForTrue={"○", "有効", "レ"}, // 読み書きの両方を行う場合、書き込む値を含める必要がある。
readForFalse={"×", "無効", "-", ""},
writeAsTrue="○",
writeAsFalse="×")
)
private boolean availaled;
// getter/setterは省略
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
読み込み時の値のパースに失敗した際の処理
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
読み込み時にtrueまたはfalseに変換できない場合、例外 ``SuperCsvValidationException`` が発生します。
* 属性 ``failToFalse`` をtrueに設定することで、変換できない場合に強制的に値をfalseとして読み込み、例外を発生しなくできます。
.. sourcecode:: java
:linenos:
import com.github.mygreen.supercsv.annotation.CsvBean;
import com.github.mygreen.supercsv.annotation.CsvColumn;
import com.github.mygreen.supercsv.annotation.format.CsvBooleanFormat;
public class SampleCsv {
// 読み込み時のtrue,falseに定義していない値を読み込んだときにfalseとして読み込む。
@CsvColumn(number=1, label="ステータス")
@CsvBooleanFormat(
readForTrue={"○", "有効", "レ"},
readForFalse={"×", "無効", "-", ""},
failToFalse=true)
private boolean availaled;
// setter/getterは省略
}
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
読み込み時の値のパースに失敗した際のメッセージ
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
読み込み時に値のパースに失敗した時に独自のメッセージとして、属性 ``message`` で指定することができます。
メッセージ中は、`JEXL `_ による式言語を使うことができ、
予め登録されている変数を用いて、メッセージ内容を独自にカスタマイズすることができます。
詳細は、:doc:`値の検証時のメッセージ ` を参照してください。
メッセージ中で利用可能な変数は、`JavaDoc <../apidocs/com/github/mygreen/supercsv/annotation/format/CsvBooleanFormat.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.CsvBooleanFormat;
@CsvBean
public class SampleCsv {
@CsvColumn(number=1, label="ステータス")
@CsvBooleanFormat(message="[{rowNumber}行, {columnNumber}列] : 項目「{label}」の値({validatedValue})は、trueの値「${f:join(trueValues, ', ')}」、またはfalseの値「${f:join(falseValues, ', ')}」の何れかの値で設定してください。"
private boolean availaled;
// setter/getterは省略
}