Мы используем OpenCSV для анализа файла CSV и привязки его значений непосредственно к объекту модели (объектному компоненту OpenJPA) с использованием CsvToBean
класса.
Однако проблема в том, что в CSV есть некоторые значения, которые (очевидно) анализируются как Strings
, но должны быть установлены в свойстве Date
, поэтому в основном класс CsvToBean умирает при попытке динамически вызвать метод записи ( т.е. он пытается установить свойство Date с необработанным значением String).
Есть ли какое-либо средство внутри OpenCSV, которое позволило бы мне указать, какому типу должен быть сопоставлен каждый столбец? Если нет, есть ли у вас какие-либо предложения, какой класс расширить / переопределить, чтобы облегчить это? Изучение других доступных особенностей в дистрибутиве исходного кода OpenCSV в каталоге /test/au/com/bytecode/opencsv/bean/
не привело меня к выводу.
Полагаю, я мог бы поиграться с установщиком свойства Date
и сделать его универсальным методом, который бы получал тип, передаваемый в качестве аргумента, и попытаться проанализировать переданное значение в Date
, если оно еще не Date
, но ... мы используем сущности, аннотированные постоянством, и я не хочу видеть позже, что этот "хакерский сеттер" ударил нас в ногу, потому что OpenJPA Enhancer внезапно не понравился универсальный сеттер.
Я несколько часов ломал голову над этим - возможно, я мог бы решить эту проблему, используя рефлексию и написав свою собственную логику привязки бина, но я ненавижу заново изобретать колесо и у меня возникает чувство / надеюсь, что это можно сделать довольно легко внутри существующей платформы OpenCSV.
При необходимости, я мог бы опубликовать некоторый код, но на самом деле не так много, чтобы увидеть.
Есть мысли? Thx.