View Javadoc
1   package com.github.mygreen.supercsv.cellprocessor;
2   
3   import java.lang.annotation.Annotation;
4   import java.util.Optional;
5   
6   import org.supercsv.cellprocessor.ift.CellProcessor;
7   
8   import com.github.mygreen.supercsv.builder.Configuration;
9   import com.github.mygreen.supercsv.builder.FieldAccessor;
10  import com.github.mygreen.supercsv.cellprocessor.format.TextFormatter;
11  
12  /**
13   * 制約のアノテーションを元に値の検証を行う{@link CellProcessor}を作成するためのインタフェース。
14   * 
15   * @param <A> 対応する制約のアノテーション。
16   * @since 2.0
17   * @author T.TSUCHIE
18   *
19   */
20  @FunctionalInterface
21  public interface ConstraintProcessorFactory<A extends Annotation> {
22      
23      /**
24       * 値を検証する{@link CellProcessor}を作成します。
25       * 
26       * @param anno ハンドリング対象のアノテーションです。
27       * @param next chainで次に実行する{@link CellProcessor}。値がない場合があります。
28       * @param field 処理対象のフィールド情報。
29       * @param formatter フィールドの書式に沿ったフォーマッタ。
30       * @param config システム情報設定。
31       * @return {@link CellProcessor}の実装クラスのインスタンス。
32       *         引数nextをそのまま返す場合、値がない場合がある。
33       */
34      Optional<CellProcessor> create(A anno, Optional<CellProcessor> next, FieldAccessor field,
35              TextFormatter<?> formatter, Configuration config);
36      
37  }