All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.mygreen.supercsv.annotation.CsvPreWrite Maven / Gradle / Ivy

Go to download

CSVのJavaライブラリであるSuperCSVに、アノテーション機能を追加したライブラリです。

There is a newer version: 2.3
Show newest version
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 { }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy