package fr.openwide.core.imports.table.opencsv.mapping; import java.text.DateFormat; import java.text.ParseException; import java.util.Comparator; import java.util.Date; import com.google.common.base.Function; import fr.openwide.core.commons.util.functional.SerializableFunction; import fr.openwide.core.imports.table.common.mapping.AbstractTableImportColumnSet; import fr.openwide.core.imports.table.common.mapping.column.builder.AbstractTableImportColumnBuilder; import fr.openwide.core.imports.table.opencsv.mapping.column.builder.OpenCsvImportColumnBuilder; import fr.openwide.core.imports.table.opencsv.model.CsvCell; import fr.openwide.core.imports.table.opencsv.model.CsvCellReference; import fr.openwide.core.imports.table.opencsv.model.CsvRow; import fr.openwide.core.imports.table.opencsv.model.CsvTable; public class OpenCsvImportColumnSet extends AbstractTableImportColumnSet<CsvTable, CsvRow, CsvCell, CsvCellReference> { private static final Function<String, Date> DEFAULT_DATE_FORMAT_FUNCTION = new SerializableFunction<String, Date>() { private static final long serialVersionUID = 1L; @Override public Date apply(String input) { if (input == null) { return null; } DateFormat format = DateFormat.getDateTimeInstance(); try { return format.parse(input); } catch (ParseException e) { return null; } } }; public OpenCsvImportColumnSet() { super(new OpenCsvImportColumnBuilder(DEFAULT_DATE_FORMAT_FUNCTION)); } public OpenCsvImportColumnSet(AbstractTableImportColumnBuilder<CsvTable, CsvRow, CsvCell, CsvCellReference> builder) { super(builder); } public OpenCsvImportColumnSet(Function<? super String, ? extends Date> dateFormatFunction) { super(new OpenCsvImportColumnBuilder(dateFormatFunction)); } public OpenCsvImportColumnSet(Comparator<? super String> defaultHeaderLabelCollator) { super(new OpenCsvImportColumnBuilder(DEFAULT_DATE_FORMAT_FUNCTION), defaultHeaderLabelCollator); } public OpenCsvImportColumnSet(Comparator<? super String> defaultHeaderLabelCollator, Function<? super String, ? extends Date> dateFormatFunction) { super(new OpenCsvImportColumnBuilder(dateFormatFunction), defaultHeaderLabelCollator); } public OpenCsvImportColumnSet(AbstractTableImportColumnBuilder<CsvTable, CsvRow, CsvCell, CsvCellReference> builder, Comparator<? super String> defaultHeaderLabelCollator) { super(builder, defaultHeaderLabelCollator); } }