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 }