リスナークラスによるライフサイクルの管理
リスナークラスはPOJOで作成し、ライスサイクル用のアノテーションでメソッドを実装します。
処理対象のレコードオブジェクトが必要なため、基本的に引数にはレコードクラスを指定しておきます。
1import com.github.mygreen.supercsv.annotation.CsvPostRead;
2import com.github.mygreen.supercsv.annotation.CsvPostWrite;
3import com.github.mygreen.supercsv.annotation.CsvPreRead;
4import com.github.mygreen.supercsv.annotation.CsvPreWrite;
5
6// リスナークラスの定義
7public class SampleListener {
8
9 @CsvPreRead
10 public void handlePreRead(final SampleCsv record) {
11
12 // レコードの読み込み前に呼び出されます。
13 }
14
15 @CsvPostRead
16 public void handlePostRead(final SampleCsv record, final CsvBindingErrors bindingErrors, final Class<?>[] groups) {
17
18 // レコードの読み込み後に呼び出されます。
19
20 }
21
22 @CsvPreWrite
23 public void handlePreWrite(final SampleCsv record, final CsvBindingErrors bindingErrors, final Class<?>[] groups) {
24
25 // レコードの書き込み前に呼び出されます。
26
27 }
28
29 @CsvPostWrite
30 public void handlePostWrite(final SampleCsv record, final CsvBindingErrors bindingErrors, final Class<?>[] groups) {
31
32 // レコードの書き込み後に呼び出されます。
33
34 }
35
36}
使用する際には、@CsvBean(listeners=<リスナークラス>)
にクラスを指定します。
1import com.github.mygreen.supercsv.annotation.CsvBean;
2import com.github.mygreen.supercsv.annotation.CsvColumn;
3
4// リスナクラスを指定します
5@CsvBean(header=true, listeners=SampleListener.class)
6public class SampleCsv {
7
8 @CsvColumn(number=1, label="ID")
9 private Integer id;
10
11 @CsvColumn(number=2, label="値")
12 private String value;
13
14}