Poszukuję najlepszego rozwiązania dla swojego problemu, którym jest generowanie plików CSV bez nagłówka. Chciałbym, by na bazie klasy DTO generyczine budował się wiersz z nazwami kolumn.
Obecnie mam metodę writeCSV i wszystko działa należycie, ale chciałbym, żeby w wygenerowanym pliku była linia z nazwami kolumn. Może ktoś ma gdzieś jakieś ładne rozwiązanie lub podpowiedź?
public static void writeCSV(PrintWriter writer, List<MojaKlasaDto> items) {
try {
ColumnPositionMappingStrategy<MojaKlasaDto> mapStrategy = new ColumnPositionMappingStrategy<>();
mapStrategy.setType(MojaKlasaDto.class);
List<String> cols = new ArrayList<String>();
Field[] allFields = mapStrategy.getType().getDeclaredFields();
for (Field field : allFields) {
cols.add(field.getName());
}
String[] columns = cols.toArray(new String[0]);
mapStrategy.setColumnMapping(columns);
StatefulBeanToCsv<MojaKlasaDto> btcsv = new StatefulBeanToCsvBuilder<MojaKlasaDto>(
writer).withMappingStrategy(mapStrategy).withSeparator(';').build();
btcsv.write(items);
} catch (CsvException ex) {
log.error("Error mapping Bean to CSV", ex);
} finally {
writer.close();
}
}