diff --git a/.idea/workspace.xml b/.idea/workspace.xml new file mode 100644 index 00000000..1580086f --- /dev/null +++ b/.idea/workspace.xml @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + 1748286192733 + + + + + + \ No newline at end of file diff --git a/LogementRendezVous-Etudiant/src/main/java/webservices/LogementRessources.java b/LogementRendezVous-Etudiant/src/main/java/webservices/LogementRessources.java index e3092a89..598f42c6 100644 --- a/LogementRendezVous-Etudiant/src/main/java/webservices/LogementRessources.java +++ b/LogementRendezVous-Etudiant/src/main/java/webservices/LogementRessources.java @@ -1,25 +1,123 @@ package webservices; +import entities.Logement; import metiers.LogementBusiness; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; +import javax.ws.rs.*; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import java.util.List; + @Path("/logement") public class LogementRessources { LogementBusiness help = new LogementBusiness(); + + // Afficher la liste totale des logements @GET @Path("/getAll") @Produces(MediaType.APPLICATION_JSON) public Response getAll(){ - return Response. - status(200).header("Access-Control-Allow-Origin", "*"). - entity(help.getLogements()). - build(); + List logements = help.getLogements(); + if (logements != null) { + return Response. + status(200).header("Access-Control-Allow-Origin", "*"). + entity(logements). + build(); + } else { + return Response.status(404) + .entity("Logements non trouvés") + .build(); + } + } + + // Afficher un logement à partir de sa référence + @GET + @Path("/getByRef/{ref}") + @Produces(MediaType.APPLICATION_JSON) + public Response getByReference(@PathParam("ref") int reference) { + Logement logement = help.getLogementsByReference(reference); + if (logement != null) { + return Response.status(200) + .header("Access-Control-Allow-Origin", "*") + .entity(logement) + .build(); + } else { + return Response.status(404) + .entity("Logement non trouvé") + .build(); + } + } + + // Afficher les logements d'une délégation + @GET + @Path("/getByDelegation/{delegation}") + @Produces(MediaType.APPLICATION_JSON) + public Response getByDelegation(@PathParam("delegation") String delegation) { + List logements = help.getLogementsByDeleguation(delegation); + if (logements != null) { + return Response.status(200) + .header("Access-Control-Allow-Origin", "*") + .entity(logements) + .build(); + + } else { + return Response.status(404) + .entity("Pas de logement dans cette délégation") + .build(); + } + } + + // Ajouter un nouveau logement + @POST + @Path("/add") + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.TEXT_PLAIN) + public Response addLogement(Logement logement) { + boolean added = help.addLogement(logement); + if (added) { + return Response.status(201) + .entity("Logement ajouté avec succès") + .build(); + } else { + return Response.status(500) + .entity("Échec de l'ajout du logement") + .build(); + } + } + + // Supprimer un logement + @DELETE + @Path("/delete/{ref}") + @Produces(MediaType.TEXT_PLAIN) + public Response deleteLogement(@PathParam("ref") int reference) { + boolean deleted = help.deleteLogement(reference); + if (deleted) { + return Response.status(200) + .entity("Logement supprimé avec succès") + .build(); + } else { + return Response.status(404) + .entity("Logement introuvable") + .build(); + } } + // Mettre à jour un logement + @PATCH + @Path("/update/{ref}") + @Consumes(MediaType.APPLICATION_JSON) + @Produces(MediaType.TEXT_PLAIN) + public Response updateLogement(@PathParam("ref") int reference, Logement logement) { + boolean updated = help.updateLogement(reference, logement); + if (updated) { + return Response.status(200) + .entity("Logement mis à jour avec succès") + .build(); + } else { + return Response.status(404) + .entity("Logement non trouvé pour la mise à jour") + .build(); + } + } } diff --git a/README.md b/README.md index 50fcc4b9..7c3b19c2 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # Exercice : Exposition des Web Services avec JAX-RS ## Objectif -L'objectif de cet exercice est de développer une API REST en utilisant **JAX-RS** pour exposer les services web associés aux entités **Logement** et **Rendez-vous**. Ensuite, vous allez implémenter un client web simple (HTML, CSS, JS) pour consommer ces services, et enfin ajouter une documentation API avec **Swagger**. +L'objectif de cet exercice est de développer une API REST en utilisant **JAX-RS** pour exposer les services web associés aux entités **Logement** et **Rendez-vous**. Ensuite, vous allez implémenter une documentation API avec **Swagger**. --- @@ -32,19 +32,6 @@ public class LogementResource { } ``` -### 2. Développement du Client Web (HTML, CSS, JS) -- Créez une interface web simple avec **HTML, CSS et JavaScript**. -- Utilisez **Fetch API** ou **AJAX-Jquery** pour appeler les services REST du backend. -- Affichez les données retournées par les services web dans l'interface. - -#### Exemple d'appel Fetch API -```javascript -fetch('http://localhost:8080/api/logements') - .then(response => response.json()) - .then(data => console.log(data)) - .catch(error => console.error('Erreur:', error)); -``` - ### 3. Documentation avec Swagger - Intégrez Swagger à votre projet pour documenter les services REST. - Ajoutez les annotations Swagger à vos classes de ressource JAX-RS. @@ -63,7 +50,6 @@ fetch('http://localhost:8080/api/logements') ## Critères d'évaluation ✅ Web Services REST bien exposés avec JAX-RS. -✅ Client Web fonctionnel permettant de consommer les services. ✅ Documentation API complète avec Swagger. ✅ Bonne structuration du code et respect des bonnes pratiques.