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

---
 apifdxweb/api/apifdxweb-core-impl/src/main/java/com/megatim/apifdxweb/core/impl/helper/RoutingCheckerImpl.java |   86 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 86 insertions(+), 0 deletions(-)

diff --git a/apifdxweb/api/apifdxweb-core-impl/src/main/java/com/megatim/apifdxweb/core/impl/helper/RoutingCheckerImpl.java b/apifdxweb/api/apifdxweb-core-impl/src/main/java/com/megatim/apifdxweb/core/impl/helper/RoutingCheckerImpl.java
new file mode 100644
index 0000000..f86354c
--- /dev/null
+++ b/apifdxweb/api/apifdxweb-core-impl/src/main/java/com/megatim/apifdxweb/core/impl/helper/RoutingCheckerImpl.java
@@ -0,0 +1,86 @@
+package com.megatim.apifdxweb.core.impl.helper;
+
+import com.megatim.apifdxweb.core.ifaces.helper.RoutingChecker;
+import com.megatim.apifdxweb.core.ifaces.referentiel.ParticipantManager;
+import com.megatim.apifdxweb.core.ifaces.referentiel.RoutageManager;
+import com.megatim.apifdxweb.core.ifaces.referentiel.natureproduction.NatureProductionFichierManager;
+import com.megatim.apifdxweb.tools.exceptions.ApplicationForbidenException;
+import com.megatim.fdxcommons.model.integration.ColumnDefinition;
+import com.megatim.fdxcommons.model.pojo.DataInMemory;
+import com.megatim.fdxcommons.model.referentiel.TypeFichier;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProduction;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichier;
+import com.megatim.fdxcommons.model.referentiel.natureproduction.NatureProductionFichierId;
+import com.megatim.fdxcommons.tools.exceptions.CommonRessourceNotFoundException;
+import java.util.Map;
+import javax.enterprise.context.Dependent;
+import javax.inject.Inject;
+
+/**
+ *
+ * @author lenovo
+ */
+@Dependent
+public class RoutingCheckerImpl implements RoutingChecker {
+
+    @Inject
+    protected ParticipantManager participantManager;
+
+    @Inject
+    private RoutageManager routageManager;
+
+    @Inject
+    private NatureProductionFichierManager natureProdFichManager;
+
+    @Override
+    public void stopIfNatureProductionIsNotCumulative(String codeTypeFichier, String referentielEncours) {
+        NatureProductionFichierId id = new NatureProductionFichierId(codeTypeFichier, referentielEncours);
+        NatureProductionFichier natureProdFich = natureProdFichManager.getById(id);
+
+        if (natureProdFich == null || !natureProdFich.getNatureProduction().equals(NatureProduction.CUMMULATIVE)) {
+            throw new ApplicationForbidenException("Cette opération n'est pas accessible pour ce type de fichier");
+        }
+    }
+
+    @Override
+    public void stopIfNotProducer(String codeTypeFichier, DataInMemory dataInMemory, String codeParticipant) {
+        if (!dataInMemory.getTypeFichierToParticipantsEnvoi().get(codeTypeFichier).contains(codeParticipant)) {
+            throw new ApplicationForbidenException("Impossible de continuer la requête car le participant " + codeParticipant + " n'est pas producteur du type de fichier " + codeTypeFichier);
+        }
+    }
+
+    @Override
+    public void stopIfNotConsumer(String codeTypeFichier, DataInMemory dataInMemory, String codeParticipant) {
+        if (!dataInMemory.getTypeFichierToParticipantsReception().get(codeTypeFichier).contains(codeParticipant)) {
+            throw new ApplicationForbidenException("Impossible de continuer la requête car le participant " + codeParticipant + " n'est pas consommateur du type de fichier " + codeTypeFichier);
+        }
+    }
+
+    @Override
+    public void stopIfCurrentReferentielNotExists(DataInMemory data) {
+        if (data.getReferentielEnCours() == null) {
+            throw new CommonRessourceNotFoundException("Aucun référentiel en cours");
+        }
+    }
+
+    /**
+     * Check whether there is a current ref in database
+     *
+     * @param codeTypeFichier
+     * @param dataInMemory
+     */
+    @Override
+    public void stopIfTypeFichierNotExists(String codeTypeFichier, DataInMemory dataInMemory) {
+        TypeFichier typeFich = dataInMemory.getCodeTypeFichierToTypeFichiers().get(codeTypeFichier);
+
+        if (typeFich == null) {
+            throw new CommonRessourceNotFoundException("TypeFichier '" + codeTypeFichier + "' inexistant");
+        }
+
+        Map<String, ColumnDefinition> columnsDefinitionMap = dataInMemory.getTypeFichierToColumnDefinitions().get(codeTypeFichier);
+        if (columnsDefinitionMap == null || columnsDefinitionMap.isEmpty()) {
+            throw new CommonRessourceNotFoundException("La structure du typeFichier '" + codeTypeFichier + "' est introuvable");
+        }
+    }
+
+}

--
Gitblit v1.10.0