есть два bean-компонента:
public class Person {
private long id;
private String name;
// getter setter
}
public class Job {
private long id;
private Person person;
// getter setter
}
Документация предоставляет пример, в котором вложенный компонент представлен в виде списка:
public class Person {
@CsvBindByPosition(position = 0)
private long id;
@CsvBindByPosition(position = 1)
private String name;
// getter setter
}
public class Job {
@CsvBindByPosition(position = 0)
private long id;
@CsvBindAndSplitByPosition(position = 1, converter = TextToPerson.class, elementType = Person.class)
private List<Person> person;
// getter setter
}
Класс преобразователя :
public class TextToPerson extends AbstractCsvConverter {
@Override
public Object convertToRead(String s) throws CsvDataTypeMismatchException, CsvConstraintViolationException {
Person person = new Person();
DataProviderCSV csv = new DataProviderCSV();
csv.getPersonById(Long.parseLong(s)).forEach(p->{
person.setId(p.getId());
person.setName(p.getName());
});
return person;
}
@Override
public String convertToWrite(Object value) throws CsvDataTypeMismatchException {
Person person = (Person) value;
return String.valueOf(person.getId());
}
}
Id, и при чтении данные были взяты из другой таблицы.
ConvertToWrite работает, но:
1) convertToRead () не работает, я использовать CsvToBeanBuilder () для чтения. WithType (clazz)?
2) Как я могу использовать Person вместо List в компоненте Job?