@CsvBooleanFormat
クラスタイプが「boolean/Boolean」のマッピング規則を定義する際に使用します。
通常の「true、false」以外に、「○、×」などでのマッピングが可能となります。
注釈
プリミティブ型に対して読み込む際に、CSVのカラムの値が空の場合、 false
が設定されます。
初期値を変更したい場合は、アノテーション @CsvDefaultValue
[JavaDoc]を使用してください。
読み込み時の値の指定
属性 readForTrue
、 readForFalse
で、読み込み時の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}
書き込み時の値の指定
属性 writeAsTrue
と writeAsFalse
で、書き込み時の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}