From d57ed6e0202e07003169299dd3fe81743b53f450 Mon Sep 17 00:00:00 2001 From: Roxane Date: Tue, 27 Feb 2024 16:43:35 +0100 Subject: [PATCH] construct of Tearcher's server part finished --- WebService/pom.xml | 44 -------------- .../controller/TeacherController.java | 58 ++++++++++++++++--- .../WebService/exception/TeacherAdvice.java | 17 ++++++ .../exception/TeacherException.java | 7 +++ .../SAE/ApiREST/WebService/model/Article.java | 11 ++-- .../SAE/ApiREST/WebService/model/Teacher.java | 6 +- .../WebService/service/ITeacherService.java | 9 +-- .../service/TeacherServiceStub.java | 18 ++++-- 8 files changed, 98 insertions(+), 72 deletions(-) create mode 100644 WebService/src/main/java/SAE/ApiREST/WebService/exception/TeacherAdvice.java create mode 100644 WebService/src/main/java/SAE/ApiREST/WebService/exception/TeacherException.java diff --git a/WebService/pom.xml b/WebService/pom.xml index 0f7f3be..fb20a79 100644 --- a/WebService/pom.xml +++ b/WebService/pom.xml @@ -1,34 +1,5 @@ - 4.0.0 - - org.springframework.boot - spring-boot-starter-parent - 3.2.2 - - - com.example - WebService - 0.0.1-SNAPSHOT - tp2 - Demo project for Spring Boot - - 17 - - - - org.springframework.boot - spring-boot-starter - - - - org.springframework.boot - spring-boot-starter-test - test - -======= xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 @@ -50,13 +21,11 @@ org.springframework.boot spring-boot-starter - org.springframework.boot spring-boot-starter-test test - org.springframework.boot spring-boot-starter-web @@ -66,18 +35,6 @@ jakarta.persistence-api ->>>>>>> origin/feature/response - - - org.springframework.boot - spring-boot-starter-web - - - jakarta.persistence - jakarta.persistence-api - - - @@ -86,5 +43,4 @@ - \ No newline at end of file diff --git a/WebService/src/main/java/SAE/ApiREST/WebService/controller/TeacherController.java b/WebService/src/main/java/SAE/ApiREST/WebService/controller/TeacherController.java index 5d44e1b..9a39d55 100644 --- a/WebService/src/main/java/SAE/ApiREST/WebService/controller/TeacherController.java +++ b/WebService/src/main/java/SAE/ApiREST/WebService/controller/TeacherController.java @@ -1,5 +1,7 @@ package SAE.ApiREST.WebService.controller; +import SAE.ApiREST.WebService.exception.TeacherAdvice; +import SAE.ApiREST.WebService.exception.TeacherException; import SAE.ApiREST.WebService.model.Teacher; import SAE.ApiREST.WebService.service.ITeacherService; import org.springframework.beans.factory.annotation.Autowired; @@ -10,8 +12,10 @@ import org.springframework.web.bind.annotation.*; import javax.print.attribute.standard.Media; import java.awt.*; +import java.util.ArrayList; import java.util.List; +//Todo() Response = Type de retour pour toutes les méthodes qui ont void @Controller @RequestMapping("/ProfWebService") public class TeacherController { @@ -25,16 +29,56 @@ public class TeacherController { @GetMapping(value = "/all", produces = MediaType.APPLICATION_JSON_VALUE) @ResponseStatus(HttpStatus.OK) - public List getAllTeacher(){ + public @ResponseBody List getAllTeacher(){ return iTeacherServ.getAllTeacher(); } - - @PostMapping(produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) + @PostMapping(value = "addTeacher",produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE) @ResponseStatus(HttpStatus.CREATED) - public Teacher createTeacher( @RequestBody Teacher teach){ + public @ResponseBody Teacher createTeacher( @RequestBody Teacher teach){ return teach; } - - //@GetMapping(value = "/{id}") - //public + @GetMapping(value = "/getid/{id}") + public @ResponseBody Teacher getTeachById(@PathVariable("id") Integer id){ + Teacher tt = iTeacherServ.getTeacherById(id); + if( tt == null ){ + throw new TeacherException("No teacher found for this id !"); + } + return tt; + } + @GetMapping(value = "/getusername/{username}") + public @ResponseBody Teacher getTeachByUsername(@PathVariable("username") String username) { + Teacher tt = iTeacherServ.getTeacherByUsername(username); + if (tt == null) { + throw new TeacherException("No teacher found for this username"); + } + return tt; + } + @GetMapping( value = "/getmail/{mail}" ) + public @ResponseBody Teacher getTeachByMail(@PathVariable("mail") String mail) { + Teacher tt = iTeacherServ.getTeacherByMail(mail); + if( tt == null ) { + throw new TeacherException("No teacher found for this mail"); + } + return tt; + } + @GetMapping( value = "/getdate/{date}" ) + public @ResponseBody Teacher getTeachByDate(@PathVariable("date") String date) { + Teacher tt = iTeacherServ.getTeacherByMail(date); + if( tt == null ) { + throw new TeacherException("No teacher found for this mail"); + } + return tt; + } + @PutMapping( value = "/modify/{username}" ) + public @ResponseBody Teacher modifyTeachUsername(@PathVariable("username") String username, Teacher tt){ + if( username == "" ){ + throw new TeacherException("Username provided for modification is empty"); + } + iTeacherServ.modifyUsername(tt,username); + return tt; + } + @DeleteMapping( value = "delete") + public @ResponseBody List deleteTeacher(Integer id){ + return iTeacherServ.deleteTeacher(id); + } } diff --git a/WebService/src/main/java/SAE/ApiREST/WebService/exception/TeacherAdvice.java b/WebService/src/main/java/SAE/ApiREST/WebService/exception/TeacherAdvice.java new file mode 100644 index 0000000..e781d8f --- /dev/null +++ b/WebService/src/main/java/SAE/ApiREST/WebService/exception/TeacherAdvice.java @@ -0,0 +1,17 @@ +package SAE.ApiREST.WebService.exception; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ControllerAdvice +public class TeacherAdvice { + @ResponseBody + @ExceptionHandler(TeacherException.class) + @ResponseStatus(HttpStatus.NOT_FOUND) + public String teacherNFHandler( TeacherException e) { + return e.getMessage(); + } +} diff --git a/WebService/src/main/java/SAE/ApiREST/WebService/exception/TeacherException.java b/WebService/src/main/java/SAE/ApiREST/WebService/exception/TeacherException.java new file mode 100644 index 0000000..ee61655 --- /dev/null +++ b/WebService/src/main/java/SAE/ApiREST/WebService/exception/TeacherException.java @@ -0,0 +1,7 @@ +package SAE.ApiREST.WebService.exception; + +public class TeacherException extends RuntimeException { + public TeacherException(String exception) { + super(exception); + } +} diff --git a/WebService/src/main/java/SAE/ApiREST/WebService/model/Article.java b/WebService/src/main/java/SAE/ApiREST/WebService/model/Article.java index dc3876f..9de95af 100644 --- a/WebService/src/main/java/SAE/ApiREST/WebService/model/Article.java +++ b/WebService/src/main/java/SAE/ApiREST/WebService/model/Article.java @@ -12,11 +12,8 @@ import jakarta.persistence.Id; public class Article { @Id @GeneratedValue(strategy = GenerationType.AUTO) -<<<<<<< HEAD -======= - String id; ->>>>>>> origin/feature/response + Integer id; String title; String URL; LocalDate dateAdded; @@ -28,7 +25,7 @@ public class Article { public Article() {} public Article(String title, String URL, LocalDate dateAdded, LocalDate datePublished, Boolean visibility, Integer type) { - this.id = "1"; + this.id = 1; this.title = title; this.URL = URL; this.dateAdded = dateAdded; @@ -37,11 +34,11 @@ public class Article { this.type = type; } - public String getId() { + public Integer getId() { return this.id; } - public void setId(String id) { + public void setId(Integer id) { this.id = id; } diff --git a/WebService/src/main/java/SAE/ApiREST/WebService/model/Teacher.java b/WebService/src/main/java/SAE/ApiREST/WebService/model/Teacher.java index a121920..d153cd7 100644 --- a/WebService/src/main/java/SAE/ApiREST/WebService/model/Teacher.java +++ b/WebService/src/main/java/SAE/ApiREST/WebService/model/Teacher.java @@ -21,7 +21,7 @@ public class Teacher { public Teacher(Integer id, String date, String mail, String username) { this.id = id; - this.date = LocalDate.parse(date, DateTimeFormatter.ISO_DATE); + this.date = LocalDate.parse(date, DateTimeFormatter.ofPattern("dd-MM-yyyy")); this.mail = mail; this.username = username; } @@ -38,8 +38,8 @@ public class Teacher { return date; } - public void setDate(LocalDate date) { - this.date = date; + public void setDate(String date) { + this.date = LocalDate.parse(date, DateTimeFormatter.ofPattern("dd-MM-yyyy")); } public String getMail() { diff --git a/WebService/src/main/java/SAE/ApiREST/WebService/service/ITeacherService.java b/WebService/src/main/java/SAE/ApiREST/WebService/service/ITeacherService.java index 329a2de..e610d0e 100644 --- a/WebService/src/main/java/SAE/ApiREST/WebService/service/ITeacherService.java +++ b/WebService/src/main/java/SAE/ApiREST/WebService/service/ITeacherService.java @@ -1,21 +1,18 @@ package SAE.ApiREST.WebService.service; +import SAE.ApiREST.WebService.Response; import SAE.ApiREST.WebService.model.Teacher; import java.time.LocalDate; import java.util.List; public interface ITeacherService { - - //Todo() by id, by mail, by username, allProf, by date (order), suppression, ajout, FAIRE DES REGIONS! public List getAllTeacher(); - - Teacher getTeacherById(Integer id); - + public Teacher getTeacherById(Integer id); public Teacher getTeacherByUsername(String username); public Teacher getTeacherByMail(String mail); public Teacher getTeacherByDate(String date); public List addTeacher(Teacher t); - public List deleteTeacher(Integer id); + public Response modifyUsername(Teacher t, String newUsername); } diff --git a/WebService/src/main/java/SAE/ApiREST/WebService/service/TeacherServiceStub.java b/WebService/src/main/java/SAE/ApiREST/WebService/service/TeacherServiceStub.java index 0b494f8..68f617f 100644 --- a/WebService/src/main/java/SAE/ApiREST/WebService/service/TeacherServiceStub.java +++ b/WebService/src/main/java/SAE/ApiREST/WebService/service/TeacherServiceStub.java @@ -1,5 +1,7 @@ package SAE.ApiREST.WebService.service; +import SAE.ApiREST.WebService.Response; +import SAE.ApiREST.WebService.exception.TeacherException; import SAE.ApiREST.WebService.model.Teacher; import org.springframework.stereotype.Service; @@ -31,9 +33,7 @@ public class TeacherServiceStub implements ITeacherService { } @Override - public Teacher getTeacherByUsername(String username) { - return new Teacher(12, "30-08-2020", "dadadou@gmail.com", username); - } + public Teacher getTeacherByUsername(String username) { return new Teacher(12, "30-08-2020", "dadadou@gmail.com", username); } @Override public Teacher getTeacherByMail(String mail) { @@ -59,7 +59,15 @@ public class TeacherServiceStub implements ITeacherService { allTeacher.add(new Teacher(1,"12-01-2023", "aline.alipres@gmail.com", "MsGarconManque")); allTeacher.add(new Teacher(2, "20-08-2023", "Viviane.Delvecchio@gmail.com", "MmeMath")); - allTeacher.remove(getTeacherById(id)); - return allTeacher; + if(allTeacher.remove(getTeacherById(id))){ + return allTeacher; + } else { + throw new TeacherException(String.format("Teacher {id} isn't removed", id)); + } + } + + public Response modifyUsername(Teacher t, String newUsername){ + t.setUsername(newUsername); + return new Response(t.getId(),String.format("This user %s has changed username", t.getMail())); } }