Парсер Univocity - анализировать строку csv в существующем экземпляре компонента

Я пытаюсь разобрать CSV-файл на новые и существующие экземпляры bean-компонента, используя синтаксический анализатор однозначности. CSV генерируется с использованием однозначности BeanWriterProcessor для набора bean-компонентов, который я буду называть набором A.

Теперь я хочу прочитать csv, выполнив следующие действия:

Случай 1: если строка соответствует bean-компоненту, который изначально присутствовал в наборе A, я не хочу создавать новый экземпляр bean-компонента, а вместо этого читаю csv в «существующий» экземпляр. (т. е. «обновить» экземпляр). Я проверяю существование, используя UUID компонента.

Случай 2: если строка не соответствует компоненту, изначально присутствующему в наборе A, я хочу создать для него новый экземпляр компонента.

Проблема, которую я хочу решить: для случая 1, как я могу писать в существующий экземпляр компонента?

В supercsv я мог бы сделать это примерно так:

beanReader.read(targetExistingBean, header, processors);

Как я могу сделать это в однозначности?


person Matthis Rouch    schedule 06.07.2017    source источник


Ответы (1)


В настоящее время единственный способ сделать это - переопределить метод createBean для BeanProcessor или BeanListProcessor (в зависимости от того, что вы используете):

BeanListProcessor<Car> carProcessor = new BeanListProcessor<Car>(Car.class){
    @Override
    public Car createBean(String[] row, Context context) {
        //analyze the row here to determine whether to return an existing instance
        //if you need a new instance, call super.createBean(row, context);
    }
};

Надеюсь это поможет.

person Jeronimo Backes    schedule 09.07.2017