Analizzo il file CSV e creo un oggetto dominio utilizzando supercsv. Il mio oggetto di dominio ha un campo enum, ad esempio:Analizzare enumerazioni con SuperCSV ICsvBeanReader
public class TypeWithEnum {
private Type type;
public TypeWithEnum(Type type) {
this.type = type;
}
public Type getType() {
return type;
}
public void setType(Type type) {
this.type = type;
}
}
mio enum si presenta così:
public enum Type {
CANCEL, REFUND
}
Cercando di creare i fagioli di questo file CSV:
final String[] header = new String[]{ "type" };
ICsvBeanReader inFile = new CsvBeanReader(new FileReader(
getFilePath(this.getClass(), "learning/enums.csv")), CsvPreference.STANDARD_PREFERENCE);
final CellProcessor[] processors =
new CellProcessor[]{ TODO WHAT TO PUT HERE? };
TypeWithEnum myEnum = inFile.read(
TypeWithEnum.class, header, processors);
questo viene a mancare con Errore durante il riempimento di un contesto oggetto: processore offendente null: null in org.supercsv.io.CsvBeanReader.fillObject (sorgente sconosciuta) su org.supercsv.io.CsvBeanReader.read (sorgente sconosciuta)
Qualche suggerimento sull'analisi delle enumerazioni? Dovrei scrivere il mio processore per questo?
Ho già provato a scrivere il mio proprio processore, qualcosa di simile:
class MyCellProcessor extends CellProcessorAdaptor {
public Object execute(Object value, CSVContext context) {
Type type = Type.valueOf(value.toString());
return next.execute(type, context);
}
}
ma muore con la stessa eccezione.
Il contenuto del mio file enums.csv è semplice:
ANNULLA
RIMBORSO
è necessario scrivere il proprio processore, non v'è alcuna Parser adatto a supercsv per questo. – oers
ok, bello sapere che questo è il modo giusto –
modificato la domanda con i miei tentativi di scrivere il proprio processore (prima volta ponendo domande sullo stack overflow, così imparo ancora come farlo correttamente - sii paziente :) –