Configuration.java
package com.github.mygreen.supercsv.builder;
import java.lang.annotation.Annotation;
import java.util.Comparator;
import org.supercsv.cellprocessor.ift.CellProcessor;
/**
* {@link CellProcessor}を組み立てる際の設定を保持するクラス。
*
* @since 2.0
* @author T.TSUCHIE
*
*/
public class Configuration {
/**
* Beanのインスタンスの作成クラス
*/
private BeanFactory<Class<?>, Object> beanFactory = new DefaultBeanFactory();
/**
* アノテーションを一定の順序に並び変えるクラス。
*/
private Comparator<Annotation> annoationComparator = new AnnotationComparator();
/**
* フィールドのタイプに対して{@link ProcessorBuilder}を解決するクラス。
*/
private ProcessorBuilderResolver builderResolver = new ProcessorBuilderResolver();
/**
* 書き込み時に入力値検証処理をスキップするかどうか。
*/
private boolean skipValidationOnWrite = false;
public Configuration() {
}
/**
* Beanを生成するためのFactoryクラスを取得します。
* <p>アノテーションの属性でクラスが指定された場合に、インスタンスを取得・作成するときに利用します。</p>
* @return 実装クラスを取得します。
*/
public BeanFactory<Class<?>, Object> getBeanFactory() {
return beanFactory;
}
/**
* Beanを生成するためのFactoryクラスを設定します。
* <p>アノテーションの属性でクラスが指定された場合に、インスタンスを取得・作成するときに利用します。</p>
* @param beanFactory 実装クラスを指定します。
*/
public void setBeanFactory(BeanFactory<Class<?>, Object> beanFactory) {
this.beanFactory = beanFactory;
}
/**
* アノテーションの一定の順序に並び変えるクラスを取得します。
* <p>入力値検証や変換処理の順序を一定にするために使用します。</p>
* <p>デフォルトでは、{@link AnnotationComparator}が設定されています。</p>
* @return {@link Comparator}の実装を取得する。
*/
public Comparator<Annotation> getAnnoationComparator() {
return annoationComparator;
}
/**
* アノテーションの一定の順序に並び変えるクラスを設定します。
* <p>入力値検証や変換処理の順序を一定にするために使用します。</p>
* <p>デフォルトでは、{@link AnnotationComparator}が設定されています。</p>
*
* @param annoationComparator {@link Comparator}の実装
*/
public void setAnnoationComparator(Comparator<Annotation> annoationComparator) {
this.annoationComparator = annoationComparator;
}
/**
* フィールドのタイプに対して{@link ProcessorBuilder}を解決するクラスを取得します。
* <p>対応していないタイプに対応するときなど、このクラスに{@link ProcessorBuilder}の実装を登録します。</p>
* @return 既存の{@link ProcessorBuilderResolver}を取得して、設定を変更する際に利用します。
*/
public ProcessorBuilderResolver getBuilderResolver() {
return builderResolver;
}
/**
* フィールドのタイプに対して{@link ProcessorBuilder}を解決するクラスを設定します。
* <p>対応していないタイプに対応するときなど、このクラスに{@link ProcessorBuilder}の実装を登録します。</p>
* @param builderResolver 新しく{@link ProcessorBuilderResolver}を設定する際に利用します。
*/
public void setBuilderResolver(ProcessorBuilderResolver builderResolver) {
this.builderResolver = builderResolver;
}
/**
* 書き込み時に入力値検証をスキップするかどうかを取得します。
* <p>初期値は、{@literal false}で、入力値検証を行いまます。</p>
* @return {@literal true}の場合、制約のCellProcessorやレコードのValidatorがスキップされます。
*/
public boolean isSkipValidationOnWrite() {
return skipValidationOnWrite;
}
/**
* 書き込み時に入力値検証をスキップするかどうかを設定します。
* @param skipValidationOnWrite {@literal true}の場合、制約のCellProcessorやレコードのValidatorがスキップされます。
*/
public void setSkipValidationOnWrite(boolean skipValidationOnWrite) {
this.skipValidationOnWrite = skipValidationOnWrite;
}
}