View Javadoc
1   package com.github.mygreen.supercsv.builder;
2   
3   import java.lang.annotation.Annotation;
4   import java.util.Comparator;
5   
6   import org.supercsv.cellprocessor.ift.CellProcessor;
7   
8   /**
9    * {@link CellProcessor}を組み立てる際の設定を保持するクラス。
10   *
11   * @since 2.0
12   * @author T.TSUCHIE
13   *
14   */
15  public class Configuration {
16      
17      /** 
18       * Beanのインスタンスの作成クラス
19       */
20      private BeanFactory<Class<?>, Object> beanFactory = new DefaultBeanFactory();
21      
22      /**
23       * アノテーションを一定の順序に並び変えるクラス。
24       */
25      private Comparator<Annotation> annoationComparator = new AnnotationComparator();
26      
27      /**
28       * フィールドのタイプに対して{@link ProcessorBuilder}を解決するクラス。
29       */
30      private ProcessorBuilderResolverResolver.html#ProcessorBuilderResolver">ProcessorBuilderResolver builderResolver = new ProcessorBuilderResolver();
31      
32      /**
33       * 書き込み時に入力値検証処理をスキップするかどうか。
34       */
35      private boolean skipValidationOnWrite = false;
36      
37      public Configuration() {
38          
39      }
40      
41      /**
42       * Beanを生成するためのFactoryクラスを取得します。
43       * <p>アノテーションの属性でクラスが指定された場合に、インスタンスを取得・作成するときに利用します。</p>
44       * @return 実装クラスを取得します。
45       */
46      public BeanFactory<Class<?>, Object> getBeanFactory() {
47          return beanFactory;
48      }
49      
50      /**
51       * Beanを生成するためのFactoryクラスを設定します。
52       * <p>アノテーションの属性でクラスが指定された場合に、インスタンスを取得・作成するときに利用します。</p>
53       * @param beanFactory 実装クラスを指定します。
54       */
55      public void setBeanFactory(BeanFactory<Class<?>, Object> beanFactory) {
56          this.beanFactory = beanFactory;
57      }
58      
59      /**
60       * アノテーションの一定の順序に並び変えるクラスを取得します。
61       * <p>入力値検証や変換処理の順序を一定にするために使用します。</p>
62       * <p>デフォルトでは、{@link AnnotationComparator}が設定されています。</p>
63       * @return {@link Comparator}の実装を取得する。
64       */
65      public Comparator<Annotation> getAnnoationComparator() {
66          return annoationComparator;
67      }
68      
69      /**
70       * アノテーションの一定の順序に並び変えるクラスを設定します。
71       * <p>入力値検証や変換処理の順序を一定にするために使用します。</p>
72       * <p>デフォルトでは、{@link AnnotationComparator}が設定されています。</p>
73       * 
74       * @param annoationComparator {@link Comparator}の実装
75       */
76      public void setAnnoationComparator(Comparator<Annotation> annoationComparator) {
77          this.annoationComparator = annoationComparator;
78      }
79      
80      /**
81       * フィールドのタイプに対して{@link ProcessorBuilder}を解決するクラスを取得します。
82       * <p>対応していないタイプに対応するときなど、このクラスに{@link ProcessorBuilder}の実装を登録します。</p>
83       * @return 既存の{@link ProcessorBuilderResolver}を取得して、設定を変更する際に利用します。
84       */
85      public ProcessorBuilderResolver getBuilderResolver() {
86          return builderResolver;
87      }
88      
89      /**
90       * フィールドのタイプに対して{@link ProcessorBuilder}を解決するクラスを設定します。
91       * <p>対応していないタイプに対応するときなど、このクラスに{@link ProcessorBuilder}の実装を登録します。</p>
92       * @param builderResolver 新しく{@link ProcessorBuilderResolver}を設定する際に利用します。
93       */
94      public void setBuilderResolver(ProcessorBuilderResolver builderResolver) {
95          this.builderResolver = builderResolver;
96      }
97      
98      /**
99       * 書き込み時に入力値検証をスキップするかどうかを取得します。
100      * <p>初期値は、{@literal false}で、入力値検証を行いまます。</p>
101      * @return {@literal true}の場合、制約のCellProcessorやレコードのValidatorがスキップされます。
102      */
103     public boolean isSkipValidationOnWrite() {
104         return skipValidationOnWrite;
105     }
106     
107     /**
108      * 書き込み時に入力値検証をスキップするかどうかを設定します。
109      * @param skipValidationOnWrite {@literal true}の場合、制約のCellProcessorやレコードのValidatorがスキップされます。
110      */
111     public void setSkipValidationOnWrite(boolean skipValidationOnWrite) {
112         this.skipValidationOnWrite = skipValidationOnWrite;
113     }
114 }