How hamza-lamjounah/spring-batch-csv-pipeline works
This Spring Batch application imports PC/PM CSV files, validates and persists records, enriches them, generates a summary report, and then exports per-file results and archives inputs. The README documents the job’s step order and listener roles; sampled source confirms reader, processor, writer, enrichment, reporting, and completion-listener behavior. Cleanup and skip-listener wiring are represented only at the documented subsystem level because their implementations and job configuration were not sampled.
Main entry points: BatchConfig.java Job and steps · JobCompletionListener.java Completion listener · ReportTasklet.java Summary report · RecordWriter.java Record writer
Components 20
Job runtime
- Batch application
src/main/java/com/dataprocessor/batch/BatchApplication.java - Job and steps
src/main/java/com/dataprocessor/batch/config/BatchConfig.java - Completion listener
src/main/java/com/dataprocessor/batch/listener/JobCompletionListener.java - Skip handling
src/main/java/com/dataprocessor/batch/listener/BatchSkipListener.java - Final summary
src/main/java/com/dataprocessor/batch/step/CleanupTasklet.java
CSV import
- CSV reader
src/main/java/com/dataprocessor/batch/reader/CsvFileReader.java - CSV line model
src/main/java/com/dataprocessor/batch/dto/CsvLine.java - Validation and transform
src/main/java/com/dataprocessor/batch/processor/LineProcessor.java - Record writer
src/main/java/com/dataprocessor/batch/writer/RecordWriter.java
Enrichment and reporting
- Per-file results
src/main/java/com/dataprocessor/batch/listener/ProcessingContext.java - Record enrichment
src/main/java/com/dataprocessor/batch/step/EnrichTasklet.java - Summary report
src/main/java/com/dataprocessor/batch/step/ReportTasklet.java
Persistence and files
- Import repository
src/main/java/com/dataprocessor/batch/data/ImportRecordRepository.java - Enriched repository
src/main/java/com/dataprocessor/batch/data/EnrichedRecordRepository.java - File I/O helper
src/main/java/com/dataprocessor/batch/service/FileHelperService.java
Other components
- Application start
- Input CSV files
- H2 database
- Result and report files
- Input archive
Connections 28
- Application start → Batch application: starts
- Batch application → Job and steps: launches job
- Job and steps → CSV reader: dispatches import
- CSV reader → Input CSV files: reads
- CSV reader → CSV line model: emits
- Job and steps → Validation and transform: dispatches import
- Validation and transform → Record writer: valid records
- Job and steps → Record writer: dispatches import
- Record writer → Import repository: saves records
- Import repository → H2 database: persists
- Record writer → Per-file results: records successes
- Skip handling → Per-file results: records rejects
- Job and steps → Record enrichment: then runs
- Record enrichment → Import repository: reads imports
- Record enrichment → Enriched repository: saves enrichment
- Enriched repository → H2 database: persists
- Job and steps → Summary report: then runs
- Summary report → Import repository: counts imports
- Summary report → Enriched repository: counts enrichment
- Summary report → Per-file results: reads results
- Summary report → File I/O helper: writes report
- File I/O helper → Result and report files: writes
- Job and steps → Final summary: then runs
- Job and steps → Completion listener: dispatches completion
- Completion listener → Per-file results: reads results
- Completion listener → File I/O helper: writes exports
- Completion listener → Result and report files: archives results
- Completion listener → Input archive: moves inputs