Estamos utilizando OpenCSV para analizar un archivo CSV y vincular sus valores directamente a un objeto de modelo (bean de entidad OpenJPA) utilizando la clase CsvToBean
.OpenCSV parse de fecha
Sin embargo, el problema es - hay algunos valores en CSV que son (obviamente) analiza como Strings
, sino que se establezcan en una propiedad Date
, clase, así que básicamente CsvToBean muere al intentar invocar dinámicamente método de escritura (es decir, intenta establecer una propiedad de fecha con el valor de cadena sin procesar).
¿Hay alguna instalación dentro de OpenCSV que me permita especificar a qué tipo debe asignarse cada columna? Si no, ¿tiene alguna sugerencia qué clase extender/reimplementar para facilitar esto? La inspección de otras líneas disponibles en la distribución de fuente de OpenCSV bajo el directorio /test/au/com/bytecode/opencsv/bean/
no me permitió acercarme a la conclusión.
supongo que podría violín con el colocador Date
propiedad y que sea un método genérico que obtener el tipo que se pasa como argumento, y tratar de analizar el valor pasado a Date
si no es Date
ya, pero ... estamos usando entidades con anotaciones de persistencia y no deseo ver más tarde que este "setter-hack" nos disparó porque a OpenJPA Enhancer no le gustaba el setter genérico.
He estado jugando con esto durante un par de horas - Probablemente podría haber resuelto el problema utilizando el reflejo y escribiendo mi propia lógica de enlazar frijoles, pero detestaba reinventar la rueda y tener una sensación/Espero que esto pueda hacerse de una manera fácil dentro del marco OpenCSV existente.
Si es necesario, podría publicar algún código, pero realmente no hay mucho que ver.
¿Alguna idea? Gracias.
Gracias a ambos: al combinar eficazmente sus sugerencias, pude hacerlo funcionar. Como la sugerencia de Kal está un poco más cerca de mi solución, acepté su solución, pero voté ambas respuestas. – quantum