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

com.github.mygreen.supercsv.annotation.conversion.CsvConversion 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.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>[] value(); }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy