PeremptionVerreItemReader.java
package com.sintia.ffl.admin.optique.catalogue.batch.reader.expireglasses;
import com.sintia.ffl.admin.optique.dal.repositories.catalogue.DistributeurCatalogueRepository;
import com.sintia.ffl.admin.optique.dal.repositories.catalogue.FabricantCatalogueRepository;
import com.sintia.ffl.admin.optique.dal.repositories.TypeMateriauRepository;
import com.sintia.ffl.admin.optique.dal.repositories.TypeVerreRepository;
import com.sintia.ffl.admin.optique.services.dto.Glasses;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.batch.core.configuration.annotation.StepScope;
import org.springframework.batch.item.database.JdbcCursorItemReader;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import javax.sql.DataSource;
import java.sql.ResultSet;
/**
* Read ModeleVerre entities from the database with a cursor JDBC
*
* @author
*/
@Component
@StepScope
public class PeremptionVerreItemReader extends JdbcCursorItemReader<Glasses> {
private static final Logger LOGGER = LoggerFactory.getLogger(PeremptionVerreItemReader.class);
@Autowired
private TypeVerreRepository typeVerreRepository;
@Autowired
private TypeMateriauRepository typeMateriauRepository;
@Autowired
private FabricantCatalogueRepository fabricantRepository;
@Autowired
private DistributeurCatalogueRepository distributeurRepository;
@Autowired
public PeremptionVerreItemReader(DataSource dataSource) {
this.setDataSource(dataSource);
this.setSql(
"select c.code, mv.c_modele, mv.l_modele, mv.n_indice, mv.b_saisie, mv.d_maj_catalogue, mv.d_creation, mv.d_debut_validite, mv.d_maj, mv.c_opto_code_verre, mv.d_demande_supp, mv.d_debut_validite, mv.id_classe, mv.id_modele_verre, mv.id_distributeur, mv.id_fabricant, mv.id_type_verre, mv.id_type_materiau from modele_verre mv left join classe c on c.id_classe = mv.id_classe where mv.b_saisie='1'");
this.setRowMapper(
(ResultSet resultSet, int rowNum) -> {
if (!(resultSet.isAfterLast()) && !(resultSet.isBeforeFirst())) {
Glasses glass = new Glasses();
glass.setGlassCode(resultSet.getString("c_modele"));
glass.setGlassName(resultSet.getString("l_modele"));
glass.setRefractiveIndex(resultSet.getInt("n_indice"));
glass.setSeizable(resultSet.getString("b_saisie"));
glass.setGlassOptoCode(resultSet.getString("c_opto_code_verre"));
glass.setMaterial(typeMateriauRepository.findById(resultSet.getInt("id_type_materiau")).get().getCTypeMateriau());
glass.setGlassType(typeVerreRepository.findById(resultSet.getInt("id_type_verre")).get().getCTypeVerre());
glass.setMaker(fabricantRepository.findById(resultSet.getInt("id_fabricant")).get().getCodeOptoCodeFabricant());
glass.setProvider(distributeurRepository.findById(resultSet.getInt("id_distributeur")).get().getCOptoCodeDistributeur());
glass.setCreationDate(resultSet.getTimestamp("d_creation").toLocalDateTime());
glass.setUpdateDate(resultSet.getTimestamp("d_maj").toLocalDateTime());
if (resultSet.getString("code") != null) {
glass.setGlassClass(resultSet.getString("code"));
} else {
LOGGER.warn("The glass {} doesn't have a class", glass);
}
if (resultSet.getDate("d_demande_supp") != null) {
glass.setExpiryDate(resultSet.getDate("d_demande_supp").toLocalDate());
}
if (resultSet.getTimestamp("d_maj_catalogue") != null) {
glass.setCatalogUpdateDate(resultSet.getTimestamp("d_maj_catalogue").toLocalDateTime());
}
if (resultSet.getDate("d_debut_validite") != null) {
glass.setStartDate(resultSet.getDate("d_debut_validite").toLocalDate());
}
return glass;
} else {
return null;
}
});
}
}