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 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 refIntHistoriques) { for (ReferentielIntegrationHistorique r : refIntHistoriques) { refIntegrationHistoriqueManager.save(r); } } }