How to read fields from csv with whitespaces and period in Spring Batch?

99 Views Asked by At

I am trying to read the entire column of a csv into my Spring Batch reader, however I am getting an error because one of my fields have an whitespace and period, so my code does not works as expect. How can I fix my lineMapper to work also with fields that has an whitespace and period?

Example of csv:

"Name","Last name", "Date","Street. Name"
"test_name", "abc", "2010.10.02", "street test"

Code:

@Configuration
public class testReader{
    @Bean("testReader)
    public FlatFileItemReader<TestDTO> csvFileReader() {
        FlatFileItemReader<TestDTO> reader = new FlatFileItemReader<>();
        Resource file = csvFileResource();
        reader.resource(file)
        reader.linesToSkip(1) // Skip header row if needed
        reader.lineMapper(csvLineMapper())
        return reader;
    }

    @Bean
    public DefaultLineMapper<TestDTO> csvLineMapper() {
        DelimitedLineTokenizer tokenizer = new DelimitedLineTokenizer();
        tokenizer.setNames("Name","Last name", "Date","Street. Name");

        BeanWrapperFieldSetMapper<YourDataClass> fieldSetMapper = new BeanWrapperFieldSetMapper<>();
        fieldSetMapper.setTargetType(TestDTO.class);

        DefaultLineMapper<TestDTO> lineMapper = new DefaultLineMapper<>();
        lineMapper.setLineTokenizer(tokenizer);
        lineMapper.setFieldSetMapper(fieldSetMapper);

        return lineMapper;
    }

    @Bean
    public Resource[] csvFileResource() throws IOException {
        // Specify the folder path where your CSV files are generated
        Resource[] resources = new PathMatchingResourcePatternResolver().getResources("file:input/*.csv");
        if (resources.length == 0) {
            throw new FileNotFoundException("No CSV files found in the specified folder.");
        }
        return resources;
    }
}

Error:

Parse error
0

There are 0 best solutions below