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
+
+
+ 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.