View Javadoc
1   package com.github.mygreen.supercsv.builder;
2   
3   import java.lang.annotation.Annotation;
4   import java.util.ArrayList;
5   import java.util.List;
6   
7   import com.github.mygreen.supercsv.annotation.CsvComposition;
8   
9   /**
10   * 展開したアノテーション情報を保持するクラス。
11   *
12   * @since 2.0
13   * @author T.TSUCHIE
14   *
15   */
16  public class ExpandedAnnotation{
17      
18      private final Annotation original;
19      
20      /**
21       * 合成されたアノテーションかどうか。
22       */
23      private final boolean composed;
24      
25      /**
26       * 繰り返しのアノテーションの場合のインデックス番号。
27       */
28      private int index;
29      
30      /**
31       * 合成されたアノテーションのクラスに付与されたアノテーション
32       */
33      private final List<ExpandedAnnotation> childs = new ArrayList<>();
34      
35      /**
36       * 
37       * @param original 元となるアノテーション。
38       * @param composed 合成されたアノテーションかどうか。
39       */
40      public ExpandedAnnotation(final Annotation original, final boolean composed) {
41          this.original = original;
42          this.composed = composed;
43      }
44      
45      /**
46       * 元のアノテーションを取得する。
47       * @return 元のアノテーションのインスタンスを返します。
48       */
49      public Annotation getOriginal() {
50          return original;
51      }
52      
53      /**
54       * 指定したアノテーションのクラスタイプかどうか。
55       * @param clazz 比較対象のアノテーションのクラスタイプ。
56       * @return trueの場合、比較対象のクラスタイプを一致します。
57       */
58      public boolean isAnnotationType(final Class<?> clazz) {
59          return original.annotationType().equals(clazz);
60      }
61      
62      /**
63       * {@link CsvComposition}が付与された合成されたアノテーションかどうか。
64       * @return trueの場合、合成されたアノテーションを指します。
65       */
66      public boolean isComposed() {
67          return composed;
68      }
69      
70      /**
71       * 合成されたアノテーションのクラスに付与されたアノテーションを取得する。
72       * @return 合成されたアノテーションに付与されているアノテーション情報を返します。
73       */
74      public List<ExpandedAnnotation> getChilds() {
75          return childs;
76      }
77      
78      public void addChilds(final List<ExpandedAnnotation> childs) {
79          this.childs.addAll(childs);
80      }
81      
82      /**
83       * 繰り返しのアノテーションの場合のインデックス番号を取得する。
84       * @return 0から始まる。繰り返しでない場合は常に0を返す。
85       */
86      public int getIndex() {
87          return index;
88      }
89      
90      /**
91       * 繰り返しのアノテーションの場合のインデックス番号を指定する。
92       * @param index
93       */
94      public void setIndex(int index) {
95          this.index = index;
96      }
97      
98  }