Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
@@ -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<Logement> 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<Logement> 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();
}
}

}
16 changes: 1 addition & 15 deletions README.md
Original file line number Diff line number Diff line change
@@ -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**.

---

Expand Down Expand Up @@ -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.
Expand All @@ -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.

Expand Down