package com.megatim.fdxconsultation.core.impl.helper;
|
|
import com.megatim.fdxcommons.core.ifaces.customtypefichier.DynamicClassCreator;
|
import com.megatim.fdxcommons.core.ifaces.db.ReferentielDataSaver;
|
import com.megatim.fdxcommons.core.ifaces.helper.DataInMemoryHandler;
|
import com.megatim.fdxcommons.core.ifaces.helper.ReferentielConsumptionHelper;
|
import com.megatim.fdxcommons.core.ifaces.helper.referentiel.DynamicTableCreator;
|
import com.megatim.fdxcommons.core.ifaces.helper.referentiel.TableDefinitionFilter;
|
import com.megatim.fdxcommons.model.pojo.ReferentielToImportData;
|
import com.megatim.fdxcommons.model.referentiel.Referentiel;
|
import com.megatim.fdxconsultation.core.ifaces.helper.TableauBordHandler;
|
import com.megatim.fdxconsultation.core.ifaces.referentiel.ReferentielManager;
|
import com.megatim.fdxconsultation.tools.context.AppCommonContext;
|
import javax.annotation.Resource;
|
import javax.enterprise.context.Dependent;
|
import javax.inject.Inject;
|
import javax.sql.DataSource;
|
import javax.transaction.Transactional;
|
import com.megatim.fdxconsultation.core.ifaces.referentiel.historique.ReferentielIntegrationHistoriqueManager;
|
import com.megatim.fdxcommons.model.referentiel.historique.ReferentielIntegrationHistorique;
|
import java.util.List;
|
import com.megatim.fdxcommons.model.referentiel.historique.pojo.TableDefinitionFiltered;
|
import java.util.ArrayList;
|
|
/**
|
*
|
* @author ASUS
|
*/
|
@Dependent
|
public class ReferentielConsumptionHelperImpl implements ReferentielConsumptionHelper {
|
|
@Inject
|
private DynamicClassCreator dynamicClassCreator;
|
|
@Inject
|
TableauBordHandler tableauBordHandler;
|
|
@Inject
|
ReferentielManager referentielManager;
|
|
@Inject
|
private DynamicTableCreator dynamicTableCreator;
|
|
@Inject
|
private ReferentielDataSaver referentielDataSaver;
|
|
@Inject
|
private DataInMemoryHandler dataInMemoryHandler;
|
|
@Resource(lookup = AppCommonContext.JNDI_NAME)
|
private DataSource dataSource;
|
|
@Inject
|
private ReferentielIntegrationHistoriqueManager refIntegrationHistoriqueManager;
|
|
@Inject
|
TableDefinitionFilter tableDefinitionFilter;
|
|
@Override
|
@Transactional
|
public void consume(ReferentielToImportData referentielToImportData) throws Exception {
|
Referentiel previousRef = referentielManager.getReferentielEnCours();
|
|
//On enregistre les données de référentiel
|
referentielDataSaver.persist(referentielToImportData);
|
|
List<ReferentielIntegrationHistorique> refsHistoriqueIntegration = previousRef == null
|
? new ArrayList<>()
|
: refIntegrationHistoriqueManager.suitableIntegrationHistorique(previousRef.getVersion());
|
|
TableDefinitionFiltered tableDefinitionFiltered = tableDefinitionFilter
|
.doFilter(previousRef == null ? null : previousRef.getVersion(),
|
referentielToImportData,
|
refsHistoriqueIntegration);
|
|
dynamicTableCreator.createDynamicTables(tableDefinitionFiltered.getTablesToCreate());
|
saveRefIntegrationHistorique(tableDefinitionFiltered.getRefIntegrationHistorique());
|
|
//Charger les nouvelles informations du référentiel dans un objet en mémoire
|
dataInMemoryHandler.initializeDataInMemory();
|
|
//Charger les nouvelles informations du référentiel dans un objet en mémoire
|
dataInMemoryHandler.initializeDataInMemory();
|
|
}
|
|
private void saveRefIntegrationHistorique(List<ReferentielIntegrationHistorique> refIntHistoriques) {
|
for (ReferentielIntegrationHistorique r : refIntHistoriques) {
|
refIntegrationHistoriqueManager.save(r);
|
}
|
}
|
}
|