/*
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
*/
|
package com.megatim.fdxconsultation.service.impl.camel.routes.timers.processor;
|
|
import com.megatim.fdxcommons.model.dataproduction.DataProductionToDelete;
|
import javax.enterprise.context.Dependent;
|
import com.megatim.fdxcommons.model.enumeration.Operateur;
|
import com.megatim.fdxcommons.model.enumeration.StatutDataProduction;
|
import com.megatim.fdxcommons.tools.database.connection.DBConnection;
|
import com.megatim.fdxcommons.tools.database.queries.DeleteTableDataQuery;
|
import com.megatim.fdxcommons.tools.database.queries.metadata.QueryCriterion;
|
import com.megatim.fdxcommons.tools.database.tables.appcolumns.DataProductionIdColumnDefinition;
|
import com.megatim.fdxcommons.tools.database.tables.FdxConsultationTable;
|
import com.megatim.fdxconsultation.core.ifaces.dataproduction.DataProductionManager;
|
import com.megatim.fdxconsultation.core.ifaces.dataproduction.DataProductionToDeleteManager;
|
import com.megatim.fdxconsultation.core.impl.factory.FdxConsultationTableFactory;
|
import com.megatim.fdxconsultation.model.dataproduction.DataProduction;
|
import com.megatim.fdxconsultation.service.ifaces.timer.processor.DeleteDataProductionJob;
|
import com.megatim.fdxconsultation.tools.context.AppCommonContext;
|
import java.sql.Connection;
|
import java.sql.PreparedStatement;
|
import java.sql.SQLException;
|
import java.util.Arrays;
|
import java.util.List;
|
import java.util.logging.Level;
|
import java.util.logging.Logger;
|
import javax.annotation.Resource;
|
import javax.inject.Inject;
|
import javax.sql.DataSource;
|
import javax.transaction.Transactional;
|
|
/**
|
*
|
* @author ASUS
|
*/
|
@Dependent
|
public class DeleteDataProductionJobImpl implements DeleteDataProductionJob {
|
|
@Inject
|
private DataProductionToDeleteManager dataProdToDeleteManager;
|
|
@Inject
|
private DataProductionManager dataProdManager;
|
|
@Resource(lookup = AppCommonContext.JNDI_NAME)
|
private DataSource dataSource;
|
|
@Override
|
public void delete() throws Exception {
|
List<DataProductionToDelete> liste = dataProdToDeleteManager.findAll(null, Arrays.asList(), Arrays.asList());
|
|
if (liste != null && !liste.isEmpty()) {
|
|
try ( Connection connection = new DBConnection(dataSource).connection()) {
|
|
liste.stream().forEach(dt -> {
|
try {
|
DataProduction dataProduction = dataProdManager.getById(dt.getId());
|
|
if (dataProduction != null && dataProduction.getStatutDataProduction().equals(StatutDataProduction.A_CONSOMMER)) {
|
System.out.println("------------------In Consultation DeleteDataProductionTimer dataProductionId = " + dt.getId() + " --------------------------------");
|
deleteDataProductionToDelete(dataProduction, connection);
|
}
|
} catch (Exception ex) {
|
Logger.getLogger(DeleteDataProductionJobImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
|
}
|
});
|
} catch (Exception ex) {
|
Logger.getLogger(DeleteDataProductionJobImpl.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
|
}
|
}
|
}
|
|
@Transactional
|
private void deleteDataProductionToDelete(DataProduction dataProduction, Connection connection) throws SQLException, Exception {
|
System.out.println("------------------------------------------in Consultation deleteDataProductionToDelete------------------------------------");
|
FdxConsultationTable consTable = FdxConsultationTableFactory.createTable(dataProduction.getCodeTypeFichier(), dataProduction.getReferentielVersion(), connection);
|
new DeleteTableDataQuery(consTable.getTableName().name(connection),
|
connection,
|
deleteTableDataCriterion(dataProduction.getId())
|
).execute();
|
|
String query = "DELETE FROM dataproductiontodelete WHERE id = ?";
|
|
try ( PreparedStatement statement = connection.prepareStatement(query)) {
|
statement.setLong(1, dataProduction.getId());
|
statement.executeUpdate();
|
}
|
}
|
|
private QueryCriterion deleteTableDataCriterion(Long dataProductionId) {
|
return new QueryCriterion(new DataProductionIdColumnDefinition().name(),
|
dataProductionId,
|
Operateur.NOT_EQUALS,
|
null,
|
Arrays.asList()
|
);
|
}
|
}
|