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

com.github.mygreen.supercsv.annotation.CsvOverridesAttribute 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.Annotation;
import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Repeatable;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 合成のアノテーションを作成する際に、アノテーションの属性を特定して上書きするためのアノテーションです。
 * 
 * 

基本的な使い方

*
    *
  • 属性{@link #annotation()}で上書き対象のアノテーションを指定します。
  • *
  • 属性{@link #name()}で上書き対象のアノテーションの属性名を指定します。
  • *
  • 上書きする属性のクラスタイプは合わせる必要があります。
  • *
  • 上書き対象のアノテーションが複数指定されている場合、属性{@link #index()}で指定します。 *
      *
    • 値0から始まります。
    • *
    • インデックスを指定しない場合は、該当するアノテーションの属性が全て上書きされます。
    • *
    *
  • *
* *

 * {@literal @Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE})}
 * {@literal @Retention(RetentionPolicy.RUNTIME)}
 * {@literal @Documented}
 * {@literal @Repeatable(CsvCustomComposition.List.class)}
 * {@literal @CsvComposition}  // 合成のアノテーションであることを示すためのメタアノテーション
 * {@literal @CsvDefaultValue(value="0", cases=BuildCase.Read)}
 * {@literal @CsvRequire}
 * {@literal @CsvNumberRange(min="0", max="100,000,000", groups=NormalGroup.class)}
 * {@literal @CsvNumberRange(min="0", max="100,000,000,000", groups=ManagerGroup.class)} // 上書き対象のアノテーション
 * public {@literal @interface} CsvCustomComposition {
 *     
 *     // 2番目(インデックスが1)の{@literal @CsvNumberRange}の属性maxの上書き
 *     {@literal @CsvOverridesAttribute(annotation=CsvNumberRange.class, name="max", index=1)}
 *     String managerSalaryMax() default "100,000,000,000,000";
 *     
 *     // 繰り返しのアノテーションの格納用アノテーションの定義
 *     {@literal @Target({ElementType.FIELD, ElementType.ANNOTATION_TYPE})}
 *     {@literal @Retention(RetentionPolicy.RUNTIME)}
 *     {@literal @Documented}
 *     {@literal @interface} List {
 *     
 *         CsvCustomComposition[] value();
 *     }
 * }
 * 
* * @since 2.0 * @author T.TSUCHIE * */ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented @Repeatable(CsvOverridesAttribute.List.class) public @interface CsvOverridesAttribute { /** * 上書き対象のアノテーションのクラスタイプを指定します。 * @return 上書き対象のアノテーションのクラスタイプ */ Class annotation(); /** * 上書き対象のアノテーションの属性名を指定します。 *

省略した場合、付与した属性名が採用されます。

* @return 上書き対象のアノテーションの属性名。 */ String name() default ""; /** * 複数同じアノテーションが指定されている場合に、インデックス番号で特定するために指定します。 * @return 指定する場合は0から始めます。 */ int index() default -1; /** * アノテーションを複数個指定する際の要素です。 */ @Target({ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented @interface List { CsvOverridesAttribute[] value(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy