package io.robe.convert.csv.parsers;
import org.supercsv.cellprocessor.*;
public enum Parsers {
BIGDECIMAL(ParseBigDecimal.class),
BOOLEAN(ParseBool.class),
BYTE(ParseChar.class),
DOUBLE(ParseDouble.class),
INT(ParseInt.class),
INTEGER(ParseInt.class),
LONG(ParseLong.class),
STRING(null),
CHAR(ParseChar.class),
CHARACTER(ParseChar.class),
ENUM(ParseEnum.class);
private final Class<? extends CellProcessorAdaptor> parser;
public CellProcessorAdaptor getParser() {
try {
return (parser == null) ? null : parser.newInstance();
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public CellProcessorAdaptor getParser(Object... params) {
try {
CellProcessorAdaptor instance = parser.newInstance();
if (instance instanceof ParseEnum)
((ParseEnum) instance).setEnumType((Class<? extends Enum>) params[0]);
return instance;
} catch (Exception e) {
throw new RuntimeException(e);
}
}
Parsers(Class<? extends CellProcessorAdaptor> parser) {
this.parser = parser;
}
}