// Définition du chemin de base pour toutes les ressources de VolService
@Path("/vols") // Spécification du type de média produit et consommé par les méthodes @Produces(MediaType.APPLICATION_JSON) @Consumes(MediaType.APPLICATION_JSON) public class VolService {
// Injection de dépendances du VolRepository dans la classe
private VolRepository volRepository;
// Constructeur qui prend un VolRepository en paramètre pour l'injection de dépendances
public VolService(VolRepository volRepository) { this.volRepository = volRepository; }
// Méthode HTTP GET pour obtenir tous les vols
@GET public Response getAllVols() { // Appel à la méthode findAll() du VolRepository pour obtenir tous les vols List<Vol> vols = volRepository.findAll(); // Construction d'une réponse HTTP OK avec la liste des vols en tant qu'entité return Response.ok().entity(vols).build(); }
// Méthode HTTP GET pour obtenir un vol par son ID
@GET @Path("/{id}") public Response getVolById(@PathParam("id") Long id) { // Appel à la méthode findById() du VolRepository pour obtenir un vol par son ID Vol vol = volRepository.findById(id); // Vérification si le vol a été trouvé if (vol != null) { // Construction d'une réponse HTTP OK avec le vol en tant qu'entité return Response.ok().entity(vol).build(); } else { // Construction d'une réponse HTTP Not Found si le vol n'est pas trouvé return Response.status(Response.Status.NOT_FOUND).entity("Vol non trouvé pour l'ID spécifié.").build(); } }
// Méthode HTTP POST pour ajouter un nouveau vol
@POST public Response addVol(Vol vol) { // Validation des données du vol if (isValidVolData(vol)) { // Appel à la méthode save() du VolRepository pour ajouter le vol Vol addedVol = volRepository.save(vol); // Construction d'une réponse HTTP Created avec le vol ajouté en tant qu'entité return Response.status(Response.Status.CREATED).entity(addedVol).build(); } else { // Construction d'une réponse HTTP Bad Request si les données du vol ne sont pas valides return Response.status(Response.Status.BAD_REQUEST).entity("Données de vol non valides.").build(); } }
// Méthode HTTP PUT pour mettre à jour un vol existant
@PUT @Path("/{id}") public Response updateVol(@PathParam("id") Long id, Vol updatedVol) { // Recherche du vol existant par son ID Vol existingVol = volRepository.findById(id); // Vérification si le vol existant a été trouvé if (existingVol != null) { // Validation des données du vol mis à jour if (isValidVolData(updatedVol)) { // Mise à jour de l'ID du vol mis à jour avec l'ID existant updatedVol.setId(id); // Appel à la méthode save() du VolRepository pour mettre à jour le vol Vol updated = volRepository.save(updatedVol); // Construction d'une réponse HTTP OK avec le vol mis à jour en tant qu'entité return Response.ok().entity(updated).build(); } else { // Construction d'une réponse HTTP Bad Request si les données du vol mis à jour ne sont pas valides return Response.status(Response.Status.BAD_REQUEST).entity("Données de vol mises à jour non valides.").build(); } } else { // Construction d'une réponse HTTP Not Found si le vol n'est pas trouvé pour l'ID spécifié return Response.status(Response.Status.NOT_FOUND).entity("Vol non trouvé pour l'ID spécifié.").build(); } }
// Méthode HTTP DELETE pour supprimer un vol par son ID
@DELETE @Path("/{id}") public Response deleteVol(@PathParam("id") Long id) { // Recherche du vol existant par son ID Vol existingVol = volRepository.findById(id); // Vérification si le vol existant a été trouvé if (existingVol != null) { // Appel à la méthode deleteById() du VolRepository pour supprimer le vol volRepository.deleteById(id); // Construction d'une réponse HTTP OK avec un message de confirmation return Response.ok().entity("Vol supprimé avec succès.").build(); } else { // Construction d'une réponse HTTP Not Found si le vol n'est pas trouvé pour l'ID spécifié return Response.status(Response.Status.NOT_FOUND).entity("Vol non trouvé pour l'ID spécifié.").build(); } }
// Méthode de validation des données du vol
private boolean isValidVolData(Vol vol) { // Vérification des contraintes de validation, par exemple, date de départ < date d'arrivée LocalDateTime heureDepart = vol.getHeureDepart