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();

			}
		}
	}

}