Я использую весенние пакетные задачи с opencsv для обработки некоторых файлов csv. После чтения файлов в память на шаге 1, на шаге 2 я хочу выполнить некоторую проверку. Я не уверен, каким будет правильный подход при настройке проверки. Я использую следующий код.
public class PrimaryCareValidation implements Tasklet, StepExecutionListener {
private final Logger logger = LoggerFactory.getLogger(PrimaryCareProcessor.class);
private List<PrimaryCareDTO> batch;
@Autowired
private Validator validator;
@Override
public void beforeStep(StepExecution stepExecution) {
logger.info("PrimaryCare validation initialized.");
ExecutionContext executionContext = stepExecution
.getJobExecution()
.getExecutionContext();
this.batch = (List<PrimaryCareDTO>) executionContext.get("PrimaryCareDTO");
}
@Override
public ExitStatus afterStep(StepExecution stepExecution) {
logger.info("PrimaryCare validation ended.");
return ExitStatus.COMPLETED; }
@Override
public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
logger.info("PrimaryCare execute.");
for (PrimaryCareDTO pcDTO : batch) {
DataBinder binder = new DataBinder(pcDTO);
Set<ConstraintViolation<PrimaryCareDTO>> violations = validator.validate(pcDTO);
for (ConstraintViolation<PrimaryCareDTO> violation : violations)
{
String propertyPath = violation.getPropertyPath().toString();
String message = violation.getMessage();
result.addError(new FieldError("employee",propertyPath,
"Invalid "+ propertyPath + "(" + message + ")"));
}
}
return RepeatStatus.FINISHED; }
}
Каков наилучший способ проверить весь список DAO и добавить сообщения в объект сообщения, чтобы позже вернуться к шагу 3?
ItemProcessListener
и запись недопустимых элементов куда-нибудь, которые будет читать шаг 3. - person Mahmoud Ben Hassine   schedule 10.09.2018