PeremptionVerreItemWriter.java
package com.sintia.ffl.admin.optique.catalogue.batch.writer;
import com.sintia.ffl.admin.optique.catalogue.batch.reporter.PeremptionVerreReporter;
import com.sintia.ffl.admin.optique.services.dto.Glasses;
import com.sintia.ffl.admin.optique.services.services.ModeleVerreService;
import org.springframework.batch.core.configuration.annotation.StepScope;
import org.springframework.batch.item.ItemWriter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Date;
import java.util.List;
/**
* Expire glasses by saving them in the database with a bSaisie value to '0'
*
* @author hlouanzi
*/
@Component
@StepScope
public class PeremptionVerreItemWriter implements ItemWriter<Glasses> {
@Autowired
private ModeleVerreService modeleVerreService;
@Autowired
private PeremptionVerreReporter peremptionVerreReporter;
private final Date scriptDate;
public PeremptionVerreItemWriter(@Value("#{jobParameters[scriptDate]}") Date scriptDate) {
this.scriptDate = scriptDate;
}
@Override
public void write(List<? extends Glasses> items)
throws Exception {
LocalDateTime date = LocalDateTime.ofInstant(this.scriptDate.toInstant(), ZoneId.systemDefault());
for (Glasses model : items) {
if (model.isToExpire()) {
// update the Verre that is expiring
modeleVerreService.persistGlass(model, date);
// increment the number of glasses expired
peremptionVerreReporter.incNumberModeleVerreExpired();
}
}
}
}