0
votes

I have generated a csv file from my DB using spring batch. However I need to add multiple line (total count of rows, value and current date, value ) before the actual header..data. Any Ideas ?

records_count,10 date,2020-0301 ----header---- ---data----

1
Can you calculate records_count upfront? If yes, then you can do it in a header callback or in a separate step (which is cleaner IMO). - Mahmoud Ben Hassine

1 Answers

0
votes

You can use FlatFileHeaderCallback to write headers. for example

public class CsvHeaderCallback implements FlatFileHeaderCallback {
    @Override
    public void writeHeader(Writer writer) throws IOException {
        //your logic here
        //writer.write("records_count,10 date,2020-0301");
    }
}

You can inject this bean to headerCallback property of FlatFileItemWriter

or in your writer

public class MyFlatFileWriter extends FlatFileItemWriter {

public MyFlatFileWriter (){
    super.setHeaderCallback(new FlatFileHeaderCallback() {

        public void writeHeader(Writer writer) throws IOException {
         //your logic here
        //writer.write("records_count,10 date,2020-0301");

        }
    });
}