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> 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> 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> 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> 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(); } }