Kenmegne
7 days ago 23a46b4be35277e06ec89f48730eeb694e686be8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
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);
        }
    }
}