com.github.mygreen.supercsv.annotation.CsvPreWrite Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of super-csv-annotation Show documentation
Show all versions of super-csv-annotation Show documentation
CSVのJavaライブラリであるSuperCSVに、アノテーション機能を追加したライブラリです。
package com.github.mygreen.supercsv.annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* ライフサイクルイベントをハンドリングするためのアノテーションです。
* レコードの書き込み前に、このアノテーションを付与した任意のメソッドが実行されます。
*
*
* - 戻り値なしのpublicメソッドに付与する必要があります。
* - 引数は、次の任意の値が指定可能で、定義順は関係ありません。
*
引数を取らないことも可能です。
*
*
*
*
* メソッドに指定可能な引数一覧
*
*
* 引数のタイプ
* 説明
*
*
*
*
* {@link org.supercsv.util.CsvContext}
* CSVの1レコード分の情報。
*
*
* {@link com.github.mygreen.supercsv.validation.CsvBindingErrors}
* CSVの1レコード分のエラー情報。
*
*
* {@link Class}[]
* グループのクラス情報(配列)。
*
*
* 処理対象のBeanクラス。
* 処理対象のBeanオブジェクト。
*
*
*
*
*
* 実装方法として、JavaBeanに直接処理を実装する方法と、リスナークラスを指定して別のクラスで実装する方法の2種類があります。
*
* JavaBeanクラスに実装する場合
*
* 任意のメソッドにアノテーションを付与します。
*
*
* {@literal @CsvBean}
* public class SampleCsv {
*
* {@literal @CsvColumn(number=1)}
* private String name;
*
* {@literal @CsvPreWrite}
* public void onPreWrite(CsvContext csvContext, CsvBindingErrors bindingErrors) {
* //任意の処理の実装
*
* }
*
* // getter/setterは省略
* }
*
*
* リスナークラスに実装する場合
*
* POJOであるリスナークラスの任意のメソッドにアノテーションを付与します。
* Spring Frameworkと連携している場合、リスナークラスをSpringBeanとして登録しているとでインジェクションできます。
*
*
* {@literal @CsvBean(listeners=SampleListener.class)} // リスナークラスの指定
* public class SampleCsv {
*
* {@literal @CsvColumn(number=1)}
* private String name;
*
* // getter/setterは省略
* }
*
* // SampleCsvに対するリスナー
* public static class SampleListener {
*
* {@literal @CsvPreWrite}
* public void onPreWrite(SampleCsv record, CsvContext csvContext, CsvBindingErrors bindingErrors) {
* //任意の処理の実装
*
* }
* }
*
*
* @since 2.0
* @author T.TSUCHIE
*
*/
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CsvPreWrite {
}