From 23a46b4be35277e06ec89f48730eeb694e686be8 Mon Sep 17 00:00:00 2001
From: Kenmegne <stephanie.kenmegne@gmail.com>
Date: Thu, 18 Jun 2026 15:40:06 +0000
Subject: [PATCH] add fdx-commons and fdx-consultation

---
 fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/DataInMemoryHandlerImpl.java |  128 ++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 128 insertions(+), 0 deletions(-)

diff --git a/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/DataInMemoryHandlerImpl.java b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/DataInMemoryHandlerImpl.java
new file mode 100644
index 0000000..0ff490c
--- /dev/null
+++ b/fdx-consultation/fdxconsultation-core-impl/src/main/java/com/megatim/fdxconsultation/core/impl/helper/DataInMemoryHandlerImpl.java
@@ -0,0 +1,128 @@
+/*
+ * 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.core.impl.helper;
+
+import com.megatim.fdxcommons.core.ifaces.helper.DataInMemoryHandler;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.pojo.DataInMemory;
+import com.megatim.fdxcommons.model.referentiel.Referentiel;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichier;
+import com.megatim.fdxcommons.model.searchentities.ColumnDefinitionSearch;
+import com.megatim.fdxconsultation.core.ifaces.integration.ColumnDefinitionManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.ReferentielManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.RoutageManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.TypeFichierManager;
+import com.megatim.fdxconsultation.core.ifaces.referentiel.natureproduction.NatureProductionFichierManager;
+import groovy.transform.Synchronized;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author ASUS
+ */
+@ApplicationScoped
+public class DataInMemoryHandlerImpl implements DataInMemoryHandler {
+
+    private DataInMemory dataInMemory;
+
+    @Inject
+    ColumnDefinitionManager columnDefinitionManager;
+
+    @Inject
+    private TypeFichierManager typeFichierManager;
+
+    @Inject
+    private ReferentielManager referentielManager;
+
+    @Inject
+    private NatureProductionFichierManager natureProdManager;
+
+    @Inject
+    private RoutageManager routageManager;
+
+    @Inject
+    private DataInMemoryHandler dataInMemoryHandler;
+
+    @Override
+    @Synchronized
+    public void initializeDataInMemory() {
+        dataInMemory = new DataInMemory();
+        Referentiel referentielEncours = referentielManager.getReferentielEnCours();
+
+        if (referentielEncours != null) {
+            dataInMemory.setReferentielEnCours(referentielEncours);
+            dataInMemory.setCodeTypeFichierToTypeFichiers(getTypeFichiers());
+            dataInMemory.setTypeFichierToColumnDefinitions(getColumnsDefinitions(referentielEncours.getVersion()));
+            dataInMemory.setTypeFichierToNatureProductionsFichiers(getNatureProductionFichiers(referentielEncours.getVersion()));
+            getParticipantsForRoutages();
+        }
+    }
+
+    @Override
+    public DataInMemory getDataInMemory() {
+        return this.dataInMemory;
+    }
+
+    private void getParticipantsForRoutages() {
+        dataInMemory.getCodeTypeFichierToTypeFichiers().values().stream().forEach(t -> {
+            dataInMemory.getTypeFichierToParticipantsEnvoi()
+                    .put(t.getCode(),
+                            routageManager
+                                    .getParticipantsForSend(dataInMemory.getReferentielEnCours().getVersion(), t.getCode())
+                                    .stream()
+                                    .map(p -> p.getCode())
+                                    .collect(Collectors.toSet())
+                    );
+
+            dataInMemory.getTypeFichierToParticipantsReception()
+                    .put(t.getCode(),
+                            routageManager
+                                    .getParticipantsForReceive(dataInMemory.getReferentielEnCours().getVersion(), t.getCode())
+                                    .stream()
+                                    .map(p -> p.getCode())
+                                    .collect(Collectors.toSet())
+                    );
+
+        });
+
+    }
+    private Map<String, Map<String, ColumnDefinition>> getColumnsDefinitions(String referentielVersion) {
+        Map<String, Map<String, ColumnDefinition>> columnsDefinitionMap = new HashMap<>();
+        ColumnDefinitionSearch searchEntity = new ColumnDefinitionSearch();
+        searchEntity.setReferentielVersion(referentielVersion);
+
+        List<ColumnDefinition> columnsDefinition = columnDefinitionManager.getAll(searchEntity);
+        columnsDefinition.stream().forEach(c -> {
+            if (columnsDefinitionMap.containsKey(c.getCodeTypeFichier())) {
+                Map<String, ColumnDefinition> map = columnsDefinitionMap.get(c.getCodeTypeFichier());
+                map.put(c.getName(), c);
+                columnsDefinitionMap.put(c.getCodeTypeFichier(), map);
+            } else {
+                Map<String, ColumnDefinition> map = new HashMap<>();
+                map.put(c.getName(), c);
+                columnsDefinitionMap.put(c.getCodeTypeFichier(), map);
+            }
+        });
+        return columnsDefinitionMap;
+    }
+
+    private Map<String, TypeFichier> getTypeFichiers() {
+        return typeFichierManager.getAll(null).stream().collect(Collectors.toMap(TypeFichier::getCode, Function.identity()));
+    }
+
+    private Map<String, NatureProductionFichier> getNatureProductionFichiers(String referentielVersion) {
+        return natureProdManager.getByReferentiel(referentielVersion)
+                .stream()
+                .collect(Collectors.toMap(x -> x.getTypeFichier().getCode(), Function.identity()));
+    }
+
+}

--
Gitblit v1.10.0