@CsvBooleanFormat

クラスタイプが「boolean/Boolean」のマッピング規則を定義する際に使用します。

通常の「true、false」以外に、「○、×」などでのマッピングが可能となります。

注釈

プリミティブ型に対して読み込む際に、CSVのカラムの値が空の場合、 false が設定されます。 初期値を変更したい場合は、アノテーション @CsvDefaultValue [JavaDoc]を使用してください。

読み込み時の値の指定

属性 readForTruereadForFalse で、読み込み時のtrueまたはfalseと判定する候補の値を指定します。

  • 属性readForTrueとreadForFalseの値に重複がある場合、readForTrueの定義が優先されまます。

  • 属性readForTrueを指定しない場合、デフォルトで「"true", "1", "yes", "on", "y", "t"」が設定されます。

  • 属性readForFalseを指定しない場合、デフォルトで「"false", "0", "no", "off", "f", "n"」が設定されます。

  • 属性 ignoreCase の値をtrueにすると、読み込み時に大文字・小文字の区別なく候補の値と比較します。

 1import com.github.mygreen.supercsv.annotation.CsvBean;
 2import com.github.mygreen.supercsv.annotation.CsvColumn;
 3import com.github.mygreen.supercsv.annotation.format.CsvBooleanFormat;
 4
 5@CsvBean
 6public class SampleCsv {
 7
 8    // boolean型の読み込み時のtrueとfalseの値の変換規則を指定します。
 9    @CsvColumn(number=1, label="ステータス")
10    @CsvBooleanFormat(
11            readForTrue={"○", "有効", "レ"},
12            readForFalse={"×", "無効", "-", ""})
13    private boolean availaled;
14
15    // 読み込み時の大文字・小文字の区別を行わない
16    @CsvColumn(number=2, label="チェック")
17    @CsvBooleanFormat(
18          readForTrue={"OK"},
19          readForFalse={"NO"},
20          ignoreCase=true)
21    private Boolean checked;
22
23    // getter/setterは省略
24}

書き込み時の値の指定

属性 writeAsTruewriteAsFalse で、書き込み時のtrueまたはfalse値に該当する文字を指定します。

  • 属性writeAsTrueを指定しない場合は、デフォルトで"true"が設定され、セルのタイプもブール型になります。

  • 属性writeAsFalseを指定しない場合は、デフォルトで"false"が設定され、セルのタイプもブール型になります。

  • 読み込みと書き込みの両方を行う場合、属性readForTrueとreadForFalseの値に属性writeAsTrueとwriteAsFalseの値を含める必要があります。

 1import com.github.mygreen.supercsv.annotation.CsvBean;
 2import com.github.mygreen.supercsv.annotation.CsvColumn;
 3import com.github.mygreen.supercsv.annotation.format.CsvBooleanFormat;
 4
 5@CsvBean
 6public class SampleCsv {
 7
 8    // boolean型の書き込み時のtrueとfalseの値の変換規則を指定します。
 9    @CsvColumn(number=1, label="ステータス")
10    @CsvBooleanFormat(
11            readForTrue={"○", "有効", "レ"}, // 読み書きの両方を行う場合、書き込む値を含める必要がある。
12            readForFalse={"×", "無効", "-", ""},
13            writeAsTrue="○",
14            writeAsFalse="×")
15    )
16    private boolean availaled;
17
18    // getter/setterは省略
19}

読み込み時の値のパースに失敗した際の処理

読み込み時にtrueまたはfalseに変換できない場合、例外 SuperCsvValidationException が発生します。

  • 属性 failToFalse をtrueに設定することで、変換できない場合に強制的に値をfalseとして読み込み、例外を発生しなくできます。

 1import com.github.mygreen.supercsv.annotation.CsvBean;
 2import com.github.mygreen.supercsv.annotation.CsvColumn;
 3
 4import com.github.mygreen.supercsv.annotation.format.CsvBooleanFormat;
 5
 6public class SampleCsv {
 7
 8    // 読み込み時のtrue,falseに定義していない値を読み込んだときにfalseとして読み込む。
 9    @CsvColumn(number=1, label="ステータス")
10    @CsvBooleanFormat(
11            readForTrue={"○", "有効", "レ"},
12            readForFalse={"×", "無効", "-", ""},
13            failToFalse=true)
14    private boolean availaled;
15
16    // setter/getterは省略
17}

読み込み時の値のパースに失敗した際のメッセージ

読み込み時に値のパースに失敗した時に独自のメッセージとして、属性 message で指定することができます。

メッセージ中は、JEXL による式言語を使うことができ、 予め登録されている変数を用いて、メッセージ内容を独自にカスタマイズすることができます。 詳細は、値の検証時のメッセージ を参照してください。

メッセージ中で利用可能な変数は、JavaDoc を参照してください。

 1import com.github.mygreen.supercsv.annotation.CsvBean;
 2import com.github.mygreen.supercsv.annotation.CsvColumn;
 3import com.github.mygreen.supercsv.annotation.format.CsvBooleanFormat;
 4
 5@CsvBean
 6public class SampleCsv {
 7
 8    @CsvColumn(number=1, label="ステータス")
 9    @CsvBooleanFormat(message="[{rowNumber}行, {columnNumber}列] : 項目「{label}」の値({validatedValue})は、trueの値「${f:join(trueValues, ', ')}」、またはfalseの値「${f:join(falseValues, ', ')}」の何れかの値で設定してください。"
10    private boolean availaled;
11
12    // setter/getterは省略
13
14}