Kenmegne
7 days ago 1bc8864f134272c4bf23a9b05831803a423a4771
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
package com.megatim.apifdxweb.service.impl.dataproduction;
 
import com.megatim.apifdxweb.core.ifaces.administration.UserManager;
import com.megatim.apifdxweb.core.ifaces.helper.DataProductionOperations;
import com.megatim.apifdxweb.model.administration.User;
import com.megatim.apifdxweb.model.request.UpdateRequest;
import com.megatim.apifdxweb.service.ifaces.dataproduction.DataProductionRS;
import com.megatim.fdxcommons.model.pojo.CriteriaEntityFromView;
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.LinkedHashMap;
import java.util.List;
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 = "Production des fichiers", path = "production des fichiers", description = "Sécurisation des endpoints de l'API Fdx")
@RequestScoped
@Path("produce")
@Api(value = "Ressources de production des fichiers échangés")
public class DataProductionRSImpl implements DataProductionRS {
 
    @Inject
    private DataProductionOperations dataProductionOperations;
 
    @Inject
    private UserManager userManager;
 
    private String codeParticipant;
 
    public void handleAuthenticationEvent(@Observes @AuthenticatedUser String connectedUserName) {
        User user = userManager.recuperUtilisateur(connectedUserName);
        this.codeParticipant = user != null ? user.getParticipant().getCode() : null;
    }
 
    @Override
    @ApiOperation(value = "Ajoute plusieurs lignes pour le type de fichier en paramètre",
            notes = "Cette méthode permet d'ajouter une liste d'éléments dont la structure de chaque "
            + "élément est conforme à celle spécifiée dans le manuel technique pour le type de fichier passé en paramètre."
    )
    @ApiResponses(value = {
        @ApiResponse(code = 200, message = "Données enregistrées avec succès"),
        @ApiResponse(code = 401, message = "L'appelant n'a pas accès à la ressource"),
        @ApiResponse(code = 403, message = "Production des données 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 = "La structure des données à insérer n'est pas conforme à la structure attendue")})
    public Response saveAll(
            HttpHeaders headers,
            @ApiParam(value = "Le type de fichier pour lequel on désire effectuer l'opération d'ajout des lignes", required = true) String codeTypeFichier,
            @ApiParam(value = "Liste d'objets dont la structure est conforme à celle du type de fichier indiqué en parametre", required = true) List<LinkedHashMap<String, Object>> datas
    ) {
 
        dataProductionOperations.saveAll(codeTypeFichier, datas, codeParticipant);
        return Response.ok().build();
    }
 
    @Override
    @ApiOperation(value = "Ajout d'une ligne pour le type de fichier en paramètre",
            notes = "Cette méthode permet d'ajouter un élément dont la structure  est conforme à celle spécifiée dans le manuel technique pour le type de fichier passé en paramètre.")
    @ApiResponses(value = {
        @ApiResponse(code = 200, message = "Données enregistrées avec succès"),
        @ApiResponse(code = 401, message = "L'appelant n'a pas accès à la ressource"),
        @ApiResponse(code = 403, message = "Production des données 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 = "La structure de donnée à insérer n'est pas conforme à la structure attendue")})
    public Response save(
            HttpHeaders headers,
            @ApiParam(value = "Le type de fichier pour lequel on désire effectuer l'opération d'ajout d'une ligne", required = true) String codeTypeFichier,
            @ApiParam(value = "Objet dont la structure est conforme à celle du type de fichier indiqué en parametre", required = true) LinkedHashMap<String, Object> data
    ) {
 
        dataProductionOperations.saveOne(codeTypeFichier, data, codeParticipant);
        return Response.ok().build();
    }
 
    @Override
    @ApiOperation(value = "Mise à jour de plusieurs lignes pour le type de fichier en paramètre selon un ensemble de critères",
            notes = "Cette méthode permet de mettre à jour les lignes associées au type de fichier en paramètre selon un ensemble de critère indiqués dans le corps de la requête.")
    @ApiResponses(value = {
        @ApiResponse(code = 200, message = "Données enregistrées avec succès"),
        @ApiResponse(code = 401, message = "L'appelant n'a pas accès à la ressource"),
        @ApiResponse(code = 403, message = "Production des données 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 ou les paramètres de mise à jour de la requête ne sont pas conformes à la structure des champs du type de fichier")})
    public Response updateAll(
            HttpHeaders headers,
            @ApiParam(value = "Le type de fichier pour lequel on désire effectuer l'opération de mise à jour des lignes", required = true) String codeTypeFichier,
            @ApiParam(value = "Contient les critères de sélection et les valeurs de mise à jour", required = true) UpdateRequest updateRequest
    ) {
        dataProductionOperations.updateAll(codeTypeFichier, updateRequest, codeParticipant);
        return Response.ok().build();
    }
 
    @Override
    @ApiOperation(value = "Mise à jour d'une ligne pour le type de fichier en paramètre selon un ensemble de critères",
            notes = "Cette méthode permet de mettre à jour une ligne associée au type de fichier en paramètre selon un ensemble de critères indiqués dans le corps de la requête. "
            + "Si le filtre selon le critère de sélection ne trouve pas de ligne, nous une erreur 404 est levée. De même, si l'application du filtre sur les critères trouve plus d'une ligne, "
            + "une erreur 422 est levée pour indiqué le mauvais format de la requête.")
    @ApiResponses(value = {
        @ApiResponse(code = 200, message = "Données enregistrées avec succès"),
        @ApiResponse(code = 401, message = "L'appelant n'a pas accès à la ressource"),
        @ApiResponse(code = 403, message = "Production des données 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), ou aucune ligne n'a été trouvée"),
        @ApiResponse(code = 422, message = "Les critères de sélection ou les paramètres de mise à jour de la requête ne sont pas conformes à la structure des champs du type de fichier, "
                + "ou le résultat de la sélection a retourné plus d'une ligne")})
    public Response updateOne(
            HttpHeaders headers,
            @ApiParam(value = "Le type de fichier pour lequel on désire effectuer l'opération de mise à jour d'une ligne", required = true) String codeTypeFichier,
            @ApiParam(value = "Contient les critères de sélection et les valeurs de mise à jour", required = true) UpdateRequest updateRequest
    ) {
        dataProductionOperations.updateOne(codeTypeFichier, updateRequest, codeParticipant);
        return Response.ok().build();
    }
 
    @Override
    @ApiOperation(value = "Suppression des lignes pour le type de fichier en paramètre selon un ensemble de critères",
            notes = "Cette méthode permet de supprimer une ligne associée au type de fichier en paramètre selon un ensemble de critères indiqués dans le corps de la requête.")
    @ApiResponses(value = {
        @ApiResponse(code = 200, message = "Données enregistrées avec succès"),
        @ApiResponse(code = 401, message = "L'appelant n'a pas accès à la ressource"),
        @ApiResponse(code = 403, message = "Production des données 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 des colonnes de la requête ne sont pas conformes à la structure des champs du type de fichier")})
    public Response deleteAll(
            HttpHeaders headers,
            @ApiParam(value = "Le type de fichier pour lequel on désire effectuer l'opération de suppression", required = true) String codeTypeFichier,
            @ApiParam(value = "Liste des critères de sélection des lignes que l'on désire supprimer", required = true) CriteriaEntityFromView criterion
    ) {
        dataProductionOperations.deleteAll(codeTypeFichier, criterion, codeParticipant);
        return Response.ok().build();
    }
 
    @Override
    @ApiOperation(value = "Suppression des lignes pour le type de fichier en paramètre selon un ensemble de critères",
            notes = "Cette méthode permet de supprimer une ligne associée au type de fichier en paramètre selon un ensemble de critères indiqués dans le corps de la requête.")
    @ApiResponses(value = {
        @ApiResponse(code = 200, message = "Données enregistrées avec succès"),
        @ApiResponse(code = 401, message = "L'appelant n'a pas accès à la ressource"),
        @ApiResponse(code = 403, message = "Production des données 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 des colonnes de la requête ne sont pas conformes à la structure des champs du type de fichier")})
    public Response deleteOne(
            HttpHeaders headers,
            @ApiParam(value = "Le type de fichier pour lequel on désire effectuer l'opération de suppression", required = true) String codeTypeFichier,
            @ApiParam(value = "Liste des critères de sélection des lignes que l'on désire supprimer", required = true) CriteriaEntityFromView criterion
    ) {
        dataProductionOperations.deleteOne(codeTypeFichier, criterion, codeParticipant);
        return Response.ok().build();
    }
 
}