2

I'm trying to parse a csv file into new and existing instances of a bean, using univocity parser. The csv is generated by using univocity BeanWriterProcessor, for a set of beans that I will call set A.

Now I want to read the csv back, doing the following:

Case 1: if the row corresponds to a bean which was originally present in set A, I do not want to create a new bean instance, but instead read the csv into the "existing" instance. (i.e., "update" the instance). I check existence by using the UUID of the bean.

Case 2: if the row does not correspond to a bean originally present in set A, I want to create a new bean instance for it.

Problem I want to solve: for Case 1, how can I write to an existing bean instance?

In supercsv, I could do it with something like that:

beanReader.read(targetExistingBean, header, processors);

How can I do this in univocity?

luchonacho
  • 6,759
  • 4
  • 35
  • 52
Matthis
  • 43
  • 8

1 Answers1

2

Currently, the only way to do it would be by overriding the createBean method of BeanProcessor or BeanListProcessor (whichever you are using):

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);
    }
};

Hope this helps.

randy
  • 369
  • 4
  • 12
Jeronimo Backes
  • 6,141
  • 2
  • 25
  • 29