ExpireMissingGlassesRealItemWriter.java
package com.sintia.ffl.admin.optique.catalogue.batch.writer;
import com.sintia.ffl.admin.optique.catalogue.batch.reporter.PeremptionVerresAbsentsReporter;
import com.sintia.ffl.admin.optique.catalogue.helpers.ModeleVerreHelper;
import com.sintia.ffl.admin.optique.catalogue.models.GlassesCSV;
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 missing glasses for real (ie the database is updated), by adding the
* current date in the dDemandeSupp field
*
* @author jumazet
*/
@Component
@StepScope
public class ExpireMissingGlassesRealItemWriter implements ItemWriter<GlassesCSV> {
@Autowired
private ModeleVerreHelper modeleVerreHelper;
@Autowired
private PeremptionVerresAbsentsReporter peremptionVerresAbsentsReporter;
private Date scriptDate;
public ExpireMissingGlassesRealItemWriter(@Value("#{jobParameters[scriptDate]}") Date scriptDate) {
this.scriptDate = scriptDate;
}
@Override
public void write(List<? extends GlassesCSV> items)
throws Exception {
if (items != null) {
LocalDateTime date = LocalDateTime.ofInstant(this.scriptDate.toInstant(), ZoneId.systemDefault());
for (GlassesCSV model : items) {
// update the Verre that is expiring
modeleVerreHelper.expireGlass(model, date);
// increment the number of glasses expired
peremptionVerresAbsentsReporter.incNbModeleVerreAbsent();
}
}
}
}