Analizo el archivo CSV y creo objetos de dominio usando supercsv. Mi objeto de dominio tiene un campo de enumeración, por ejemplo:Enumerando enumeraciones 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;
}
}
mi enumeración se ve así:
public enum Type {
CANCEL, REFUND
}
Tratar de crear las habas de este archivo 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);
esta falla con Error al completar un contexto de objeto: procesador ofensivo nulo: nulo en org.supercsv.io.CsvBeanReader.fillObject (origen desconocido) en org.supercsv.io.CsvBeanReader.read (Fuente desconocida)
¿Alguna pista sobre el análisis de enumeraciones? ¿Debo escribir mi propio procesador para esto?
ya he tratado de escribir mi propio procesador, algo como esto:
class MyCellProcessor extends CellProcessorAdaptor {
public Object execute(Object value, CSVContext context) {
Type type = Type.valueOf(value.toString());
return next.execute(type, context);
}
}
pero muere con la misma excepción.
El contenido de mi archivo enums.csv es simple:
CANCELAR
REEMBOLSO
que necesita para escribir su propio procesador, no hay Analizador adecuada en supercsv para eso. – oers
ok, es bueno saber que esta es la forma correcta –
editado la pregunta con mis intentos de escribir procesador propio (la primera vez haciendo preguntas sobre el desbordamiento de la pila, por lo que todavía aprender a hacerlo correctamente - tenga paciencia :) –