package com.github.mygreen.supercsv.builder;
import java.util.Optional;
import org.supercsv.cellprocessor.ift.CellProcessor;
/**
* {@link CellProcessor}を組み立てるためのインタフェース。
*
* @param <T> 処理対象のクラスタイプ。
* @version 2.0
* @since 1.1
* @author T.TSUCHIE
*
*/
public interface ProcessorBuilder<T> {
/**
* 読み込み用の{@link CellProcessor}を組み立てる。
* @param type フィールドのクラスタイプ。
* @param field フィールド情報。
* @param config 設定情報
* @param groups グループ情報
* @return 組み立てた{@link CellProcessor}。
*/
Optional<CellProcessor> buildForReading(Class<T> type, FieldAccessor field, Configuration config, Class<?>[] groups);
/**
* 書き込み用の{@link CellProcessor}を組み立てる。
* @param type フィールドのクラスタイプ。
* @param field フィールド情報。
* @param config 設定情報
* @param groups グループ情報
* @return 組み立てた{@link CellProcessor}。
*/
Optional<CellProcessor> buildForWriting(Class<T> type, FieldAccessor field, Configuration config, Class<?>[] groups);
}