DeleteGlassesIntegratedTreatmentJdbcBatchItemWriter.java
package com.sintia.ffl.admin.optique.catalogue.batch.writer.purgeglasses;
import com.sintia.ffl.admin.optique.catalogue.batch.reporter.PurgeVerreReporter;
import com.sintia.ffl.admin.optique.services.dto.Glasses;
import org.springframework.batch.item.ItemWriter;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.BatchPreparedStatementSetter;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.lang.NonNull;
import org.springframework.stereotype.Component;
import javax.sql.DataSource;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.List;
@Component
public class DeleteGlassesIntegratedTreatmentJdbcBatchItemWriter implements ItemWriter<Glasses> {
private final JdbcTemplate template;
private final PurgeVerreReporter purgeVerreReporter;
@Autowired
public DeleteGlassesIntegratedTreatmentJdbcBatchItemWriter(
DataSource dataSource,
PurgeVerreReporter purgeVerreReporter
) {
this.template = new JdbcTemplate(dataSource);
this.purgeVerreReporter = purgeVerreReporter;
}
@Override
public void write(@NonNull final List<? extends Glasses> items)
throws Exception {
int[] results = this.template.batchUpdate(
"delete from verre_trait_integres_asso where c_modele=?",
new BatchPreparedStatementSetter() {
@Override
public void setValues(@NonNull PreparedStatement ps, int i)
throws SQLException {
Glasses item = items.get(i);
ps.setString(1, item.getGlassCode());
}
@Override
public int getBatchSize() {
return items.size();
}
});
int result = 0;
for (int i : results) {
result += i;
}
purgeVerreReporter.addGlassesIntegratedTreatmentPurged(result);
}
}