View Javadoc
1   package com.github.mygreen.supercsv.cellprocessor.format;
2   
3   import java.util.Optional;
4   
5   import org.supercsv.cellprocessor.ift.CellProcessor;
6   
7   import com.github.mygreen.supercsv.builder.BuildCase;
8   import com.github.mygreen.supercsv.builder.Configuration;
9   import com.github.mygreen.supercsv.builder.FieldAccessor;
10  import com.github.mygreen.supercsv.cellprocessor.ProcessorFactory;
11  
12  /**
13   * 文字列をパースして、各オブジェクト型に変換するCellProcessor {@link ParseProcessor}を作成する。
14   * 
15   * @since 2.0
16   * @author T.TSUCHIE
17   *
18   */
19  public class ParseProcessorFactory<T> implements ProcessorFactory {
20      
21      @SuppressWarnings("unchecked")
22      @Override
23      public Optional<CellProcessor> create(final Optional<CellProcessor> next, final FieldAccessor field,
24              final TextFormatter<?> formatter, final Configuration config,
25              final BuildCase buildCase, final Class<?>[] groups) {
26          
27          final Class<T> fieldType = (Class<T>)field.getType();
28          final TextFormatter<T> typeFormatter = (TextFormatter<T>)formatter;
29          
30          final ParseProcessor<T> processor = next.map(n -> new ParseProcessor<>(fieldType, typeFormatter, n))
31                  .orElseGet(() -> new ParseProcessor<>(fieldType, typeFormatter));
32          
33          return Optional.of(processor);
34          
35      }
36      
37  }