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-service-impl/src/main/java/com/megatim/apifdxweb/service/impl/dataconsumption/DataConsumptionRSImpl.java |  201 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 201 insertions(+), 0 deletions(-)

diff --git a/apifdxweb/api/apifdxweb-service-impl/src/main/java/com/megatim/apifdxweb/service/impl/dataconsumption/DataConsumptionRSImpl.java b/apifdxweb/api/apifdxweb-service-impl/src/main/java/com/megatim/apifdxweb/service/impl/dataconsumption/DataConsumptionRSImpl.java
new file mode 100644
index 0000000..99e8c2e
--- /dev/null
+++ b/apifdxweb/api/apifdxweb-service-impl/src/main/java/com/megatim/apifdxweb/service/impl/dataconsumption/DataConsumptionRSImpl.java
@@ -0,0 +1,201 @@
+package com.megatim.apifdxweb.service.impl.dataconsumption;
+
+import com.megatim.apifdxweb.core.ifaces.administration.UserManager;
+import com.megatim.apifdxweb.core.ifaces.helper.DataConsumptionOperations;
+import com.megatim.apifdxweb.model.administration.User;
+import com.megatim.apifdxweb.service.ifaces.dataconsumption.DataConsumptionRS;
+import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
+import com.megatim.fdxcommons.model.pojo.PageData;
+import com.mgt.rs.security.core.common.AuthenticatedUser;
+import com.mgt.rs.security.core.common.SecuredClass;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
+import java.util.List;
+import java.util.Map;
+import javax.enterprise.context.RequestScoped;
+import javax.enterprise.event.Observes;
+import javax.inject.Inject;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.Response;
+
+/**
+ *
+ * @author lenovo
+ */
+@SecuredClass(module = "Consommation des fichiers", path = "consommation des fichiers", description = "Sécurisation des endpoints de l'API Fdx")
+@RequestScoped
+@Path("consume")
+@Api(value = "Ressources de consommation des fichiers échangés")
+public class DataConsumptionRSImpl implements DataConsumptionRS {
+
+    @Inject
+    private DataConsumptionOperations dataConsumptionOperations;
+
+    @Inject
+    private UserManager userManager;
+
+    private String codeParticipant;
+
+    public DataConsumptionRSImpl() {
+        super();
+    }
+
+    public void handleAuthenticationEvent(@Observes @AuthenticatedUser String connectedUserName) {
+        User user = userManager.recuperUtilisateur(connectedUserName);
+        this.codeParticipant = user != null ? user.getParticipant().getCode() : null;
+    }
+
+    @Override
+    @ApiOperation(value = "Consommation de toutes les données du type de fichier indiqué en paramètre",
+            notes = "Cette méthode renvoie toutes les données du type de fichier indiqué en paramètre. "
+            + "Les données sont renvoyées sous la forme d'un objet dont les clés sont les colonnes du type de fichier tel qu'indiqué dans le manuel"
+    )
+    @ApiResponses(value = {
+        @ApiResponse(code = 200, message = "Données renvoyées avec succès"),
+        @ApiResponse(code = 401, message = "L'appelant n'a pas accès à la ressource"),
+        @ApiResponse(code = 403, message = "Le participant qui soumet la requête n'est pas autorisée à consommer les données du type de fichier indiqué en paramètre"),
+        @ApiResponse(code = 404, message = "Une ressource est introuvable (Type Fichier, Référentiel en cours, Participant associé à l'utilisateur qui exécute la requête)"),})
+    public Response findAll(
+            HttpHeaders headers,
+            @ApiParam(value = "Le type de fichier pour lequel on désire effectuer l'opération de consommation des lignes", required = true) String codeTypeFichier
+    ) {
+
+        List<Map<String, Object>> listeMap = dataConsumptionOperations.loadAll(codeTypeFichier, codeParticipant);
+        return Response.ok(listeMap).build();
+    }
+
+    @Override
+    @ApiOperation(value = "Consommation des données du type de fichier indiqué en paramètre, selon des critères de sélection",
+            notes = "Cette méthode renvoie des données respectant les critères définis dans le corps de la requête et associées au type de fichier indiqué en paramètre. "
+            + "Les données sont renvoyées sous la forme d'un objet dont les clés sont les colonnes du type de fichier indiqué dans le manuel."
+    )
+    @ApiResponses(value = {
+        @ApiResponse(code = 200, message = "Données renvoyées avec succès"),
+        @ApiResponse(code = 401, message = "L'appelant n'a pas accès à la ressource"),
+        @ApiResponse(code = 403, message = "Le participant qui soumet la requête n'est pas autorisée à consommer les données du type de fichier indiqué en paramètre"),
+        @ApiResponse(code = 404, message = "Une ressource est introuvable (Type Fichier, Référentiel en cours, Participant associé à l'utilisateur qui exécute la requête)"),
+        @ApiResponse(code = 422, message = "Les critères de sélection de la requête ne sont pas conformes à la structure des champs du type de fichier"),})
+    public Response findByCriterias(
+            HttpHeaders headers,
+            @ApiParam(value = "Le type de fichier pour lequel on désire effectuer l'opération de consommation des lignes selon un ensemble de critères", required = true) String codeTypeFichier,
+            CriteriaEntityFromView criterion
+    ) {
+        List<Map<String, Object>> listeMap = dataConsumptionOperations.findByCriterias(codeTypeFichier, criterion, codeParticipant);
+        return Response.ok(listeMap).build();
+    }
+
+    @Override
+    @ApiOperation(value = "Consommation de toutes lignes ajoutées ou mises à jour après la dernière consommation pour le type de fichier en paramètre",
+            notes = "Cette méthode renvoie la liste de toutes les lignes ajoutées ou mises à jour après la dernière consultation par le noeud "
+            + "qui effectue la requête pour le type de fichier indiqué en paramètres."
+            + "Les lignes renvoyés sont sous la forme d'un objet dont les clés sont les colonnes du type de fichier indiqué dans le manuel."
+    )
+    @ApiResponses(value = {
+        @ApiResponse(code = 200, message = "Données renvoyées avec succès"),
+        @ApiResponse(code = 401, message = "L'appelant n'a pas accès à la ressource"),
+        @ApiResponse(code = 403, message = "Consommation de la donnée non  autorisée pour le noeud associé à l'utilisateur qui exécute la requête"),
+        @ApiResponse(code = 404, message = "Une ressource est introuvable (Type Fichier, Référentiel en cours, Noeud associé à l'utilisateur qui exécute la requête)"),})
+    public Response loadAllAddedAndUpdated(
+            HttpHeaders headers,
+            @ApiParam(value = "Le type de fichier pour lequel on désire effectuer l'opération de consommation des lignes ajoutées et mises à jour", required = true) String codeTypeFichier
+    ) {
+        List<Map<String, Object>> listeMap = dataConsumptionOperations.loadAllAddedAndUpdated(codeTypeFichier, codeParticipant);
+        return Response.ok(listeMap).build();
+    }
+
+//    @Override
+//    @ApiOperation(value = "Consommation des lignes mises à jour après la dernière consommation pour le type de fichier en paramètre",
+//            notes = "Cette méthode renvoie la liste de toutes les lignes mises à jour après la dernière consultation par le noeud "
+//            + "qui effectue la requête pour le type de fichier indiqué en paramètres."
+//            + "Les lignes renvoyés sont sous la forme d'un objet dont les clés sont les colonnes du type de fichier indiqué dans le manuel."
+//    )
+//    @ApiResponses(value = {
+//        @ApiResponse(code = 200, message = "Données renvoyées avec succès"),
+//        @ApiResponse(code = 401, message = "L'appelant n'a pas accès à la ressource"),
+//        @ApiResponse(code = 403, message = "Consommation de la donnée non  autorisée pour le noeud associé à l'utilisateur qui exécute la requête"),
+//        @ApiResponse(code = 404, message = "Une ressource est introuvable (Type Fichier, Référentiel en cours, Noeud associé à l'utilisateur qui exécute la requête)"),})
+//    public Response loadAllUpdated(
+//            HttpHeaders headers,
+//            @ApiParam(value = "Le type de fichier pour lequel on désire effectuer l'opération de consommation des lignes mises à jour", required = true) String codeTypeFichier
+//    ) {
+//        List<Map<String, Object>> listeMap = dataConsumptionOperations.loadAllUpdated(codeTypeFichier, codeParticipant);
+//        return Response.ok(listeMap).build();
+//    }
+    @Override
+    @ApiOperation(value = "Décompte des lignes mises à jour après la dernière consommation pour le type de fichier en paramètre",
+            notes = "Cette méthode renvoie le nombre de lignes mises à jour après la dernière consultation par le noeud "
+            + "qui effectue la requête pour le type de fichier indiqué en paramètres."
+            + "Les lignes renvoyés sont sous la forme d'un objet dont les clés sont les colonnes du type de fichier indiqué dans le manuel."
+    )
+    @ApiResponses(value = {
+        @ApiResponse(code = 200, message = "Décompte effectué avec succès"),
+        @ApiResponse(code = 401, message = "L'appelant n'a pas accès à la ressource"),
+        @ApiResponse(code = 403, message = "Consommation de la donnée non  autorisée pour le noeud associé à l'utilisateur qui exécute la requête"),
+        @ApiResponse(code = 404, message = "Une ressource est introuvable (Type Fichier, Référentiel en cours, Noeud associé à l'utilisateur qui exécute la requête)"),})
+    public Response countAll(HttpHeaders headers, String codeTypeFichier) {
+        return Response.ok(dataConsumptionOperations.countAll(codeTypeFichier, codeParticipant)).build();
+    }
+
+    @Override
+    @ApiOperation(value = "Décompte des lignes mises à jour après la dernière consommation pour le type de fichier en paramètre",
+            notes = "Cette méthode renvoie le nombre de lignes mises à jour après la dernière consultation par le noeud "
+            + "qui effectue la requête pour le type de fichier indiqué en paramètres."
+            + "Les lignes renvoyés sont sous la forme d'un objet dont les clés sont les colonnes du type de fichier indiqué dans le manuel."
+    )
+    @ApiResponses(value = {
+        @ApiResponse(code = 200, message = "Décompte effectué avec succès"),
+        @ApiResponse(code = 401, message = "L'appelant n'a pas accès à la ressource"),
+        @ApiResponse(code = 403, message = "Consommation de la donnée non  autorisée pour le noeud associé à l'utilisateur qui exécute la requête"),
+        @ApiResponse(code = 404, message = "Une ressource est introuvable (Type Fichier, Référentiel en cours, Noeud associé à l'utilisateur qui exécute la requête)"),})
+    public Response countAllAddedAndUpdated(HttpHeaders headers, String codeTypeFichier) {
+        return Response.ok(dataConsumptionOperations.countAllLoadedOrUpdated(codeTypeFichier, codeParticipant)).build();
+    }
+
+    @Override
+    @ApiOperation(value = "Consommation de toutes lignes d'un type de fichier pour le type de fichier en paramètre",
+            notes = "Cette méthode renvoie la liste de toutes les lignes associées au type de fichier indiqué en paramètre. "
+            + "Les lignes renvoyés sont sous la forme d'un objet dont les clés sont les colonnes du type de fichier indiqué dans le manuel"
+    )
+    @ApiResponses(value = {
+        @ApiResponse(code = 200, message = "Données renvoyées avec succès"),
+        @ApiResponse(code = 401, message = "L'appelant n'a pas accès à la ressource"),
+        @ApiResponse(code = 403, message = "Consommation de la donnée non  autorisée pour le noeud associé à l'utilisateur qui exécute la requête"),
+        @ApiResponse(code = 404, message = "Une ressource est introuvable (Type Fichier, Référentiel en cours, Noeud associé à l'utilisateur qui exécute la requête)"),})
+    public Response loadAllWithPagination(
+            HttpHeaders headers,
+            @ApiParam(value = "Le type de fichier pour lequel on désire effectuer l'opération de consommation des lignes", required = true) String codeTypeFichier,
+            @ApiParam(value = "Le numéro de page ciblée", required = true) Integer pageNumber,
+            @ApiParam(value = "Le nombre d'éléments par page", required = true) Integer pageSize
+    ) {
+
+        PageData pageData = dataConsumptionOperations.loadAllWithPagination(codeTypeFichier, codeParticipant, pageNumber, pageSize);
+        return Response.ok(pageData).build();
+    }
+
+    @Override
+    @ApiOperation(value = "Consommation de toutes lignes d'un type de fichier selon des critères de sélection pour le type de fichier en paramètre",
+            notes = "Cette méthode renvoie la liste de toutes les lignes respectant les critères définis dans le corps de la requête et associées au type de fichier indiqué en paramètre. "
+            + "Les lignes renvoyés sont sous la forme d'un objet dont les clés sont les colonnes du type de fichier indiqué dans le manuel."
+    )
+    @ApiResponses(value = {
+        @ApiResponse(code = 200, message = "Données renvoyées avec succès"),
+        @ApiResponse(code = 401, message = "L'appelant n'a pas accès à la ressource"),
+        @ApiResponse(code = 403, message = "Consommation de la donnée non  autorisée pour le noeud associé à l'utilisateur qui exécute la requête"),
+        @ApiResponse(code = 404, message = "Une ressource est introuvable (Type Fichier, Référentiel en cours, Noeud associé à l'utilisateur qui exécute la requête)"),
+        @ApiResponse(code = 422, message = "Les critères de sélection de la requête ne sont pas conformes à la structure des champs du type de fichier"),})
+    public Response findByCriteriaWithPagination(
+            HttpHeaders headers,
+            @ApiParam(value = "Le type de fichier pour lequel on désire effectuer l'opération de consommation des lignes selon un ensemble de critères", required = true) String codeTypeFichier,
+            @ApiParam(value = "Le numéro de page ciblée", required = true) Integer pageNumber,
+            @ApiParam(value = "Le nombre d'éléments par page", required = true) Integer pageSize,
+            CriteriaEntityFromView criterion
+    ) {
+        PageData pageData = dataConsumptionOperations.findByCriteriaWithPagination(codeTypeFichier, criterion, codeParticipant, pageNumber, pageSize);
+        return Response.ok(pageData).build();
+    }
+
+}

--
Gitblit v1.10.0