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
14
15
16
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 }