com.github.mygreen.supercsv.annotation.conversion.CsvConversion 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.conversion;
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;
import com.github.mygreen.supercsv.builder.AbstractProcessorBuilder;
import com.github.mygreen.supercsv.cellprocessor.ConversionProcessorFactory;
/**
* 変換のアノテーションを表現するためのメタアノテーションです。
* 変換のアノテーションには必ず付与します。
*
* 基本的な使い方
*
* - {@literal @Target}として、{@link ElementType#FIELD}と{@link ElementType#ANNOTATION_TYPE}の2つを指定します。
*
アノテーションを合成する際にはアノテーションにも付与するため、{@link ElementType#ANNOTATION_TYPE}を追加しておきます。
*
* - 繰り返しのアノテーションとして利用できるよう {@literal @Repeatable}を付与します。
*
繰り返しのアノテーションを格納する内部アノテーションとして、{@literal List}を定義します。
*
* - 検証用のアノテーションであることを示すためのメタアノテーション {@literal @CsvContraint}を指定します。
*
属性{@link #value()}で、{@link ConversionProcessorFactory}の実装クラスを指定します。
*
* - 共通の属性として、{@literal cases, groups, order}を定義します。
*
省略した場合は、それぞれのデフォルト値が適用されます。
*
* - 必要であれば、固有の属性を定義します。
*
*
*
* // 独自の値の検証用のアノテーション
* {@literal @Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE})}
* {@literal @Retention(RetentionPolicy.RUNTIME)}
* {@literal @Documented}
* {@literal @Repeatable(CsvCustomConversion.List.class)}
* {@literal @CsvConstraint(CustomConversionFactory.class)} // ファクトリクラスを指定
* public {@literal @interface} CsvCustomConversion {
*
* // 固有の属性 - 必要であれば定義します。
* String text();
*
* // 共通の属性 - ケース
* BuildCase[] cases() default {};
*
* // 共通の属性 - グループ
* {@literal Class>[]} groups() default {};
*
* // 共通の属性 - 並び順
* int order() default 0;
*
* // 繰り返しのアノテーションの格納用アノテーションの定義
* {@literal @Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE})}
* {@literal @Retention(RetentionPolicy.RUNTIME)}
* {@literal @Documented}
* {@literal @interface} List {
*
* CsvCustomConversion[] value();
* }
* }
*
*
*
* @since 2.0
* @author T.TSUCHIE
*
*/
@Target({ElementType.ANNOTATION_TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface CsvConversion {
/**
* アノテーションに対応したCellProcessorを作成するファクトリクラスを指定します。
* 省略した場合、{@link AbstractProcessorBuilder#registerForConversion(Class, ConversionProcessorFactory)}で手動で登録する必要があります。
* @return {@link ConversionProcessorFactory}を実装したクラスを指定します。
*/
Class extends ConversionProcessorFactory>>[] value();
}