From dbad7174ec386877b861a0245f20f2da2b14c90e Mon Sep 17 00:00:00 2001 From: felix Date: Tue, 27 Feb 2024 16:18:21 +0100 Subject: [PATCH] Finshed api + tested --- .../controller/ArticleControler.java | 172 +++++++++++++++++- .../SAE/ApiREST/WebService/model/Article.java | 44 ++--- .../WebService/service/IArticleService.java | 25 +++ .../service/StubArticleService.java | 131 ++++++++++++- 4 files changed, 346 insertions(+), 26 deletions(-) diff --git a/WebService/src/main/java/SAE/ApiREST/WebService/controller/ArticleControler.java b/WebService/src/main/java/SAE/ApiREST/WebService/controller/ArticleControler.java index 4449e34..222846c 100644 --- a/WebService/src/main/java/SAE/ApiREST/WebService/controller/ArticleControler.java +++ b/WebService/src/main/java/SAE/ApiREST/WebService/controller/ArticleControler.java @@ -5,6 +5,7 @@ import org.springframework.http.MediaType; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; +import SAE.ApiREST.WebService.Response; import SAE.ApiREST.WebService.exception.ArticleException; import SAE.ApiREST.WebService.model.Article; import SAE.ApiREST.WebService.service.IArticleService; @@ -19,15 +20,92 @@ public class ArticleControler { IArticleService articleService; // region POST - + @PostMapping( + value = "/addArticle", + consumes = MediaType.APPLICATION_JSON_VALUE, + produces = MediaType.APPLICATION_JSON_VALUE + ) + public @ResponseBody Response addArticle( + @RequestBody Article article + ) { + return articleService.addArticle(article); + } // endregion // region PUT - + @PutMapping( + value = "/updateTitle/{title}", + consumes = MediaType.APPLICATION_JSON_VALUE, + produces = MediaType.APPLICATION_JSON_VALUE + ) + public @ResponseBody Article updateTitle( + @PathVariable("title") String title, + @RequestBody Article article + ) { + return articleService.updateTitle(article, title); + } + + @PutMapping( + value = "/updateUrl/{url}", + consumes = MediaType.APPLICATION_JSON_VALUE, + produces = MediaType.APPLICATION_JSON_VALUE + ) + public @ResponseBody Article updateUrl( + @PathVariable("url") String url, + @RequestBody Article article + ) { + return articleService.updateUrl(article, url); + } + + @PutMapping( + value = "/updateDatePublished/{datePublished}", + consumes = MediaType.APPLICATION_JSON_VALUE, + produces = MediaType.APPLICATION_JSON_VALUE + ) + public @ResponseBody Article updateDatePublished( + @PathVariable("datePublished") String datePublished, + @RequestBody Article article + ) { + return articleService.updateDatePublished(article, datePublished); + } + + @PutMapping( + value = "/updateDateAdded/{dateAdded}", + consumes = MediaType.APPLICATION_JSON_VALUE, + produces = MediaType.APPLICATION_JSON_VALUE + ) + public @ResponseBody Article updateDateAdded( + @PathVariable("dateAdded") String dateAdded, + @RequestBody Article article + ) { + return articleService.updateDateAdded(article, dateAdded); + } + + @PutMapping( + value = "/changeVisibility", + consumes = MediaType.APPLICATION_JSON_VALUE, + produces = MediaType.APPLICATION_JSON_VALUE + ) + public @ResponseBody Article changeVisibility( + @RequestBody Article article + ) { + return articleService.changeVisibility(article); + } + + @PutMapping( + value = "/updateType/{type}", + consumes = MediaType.APPLICATION_JSON_VALUE, + produces = MediaType.APPLICATION_JSON_VALUE + ) + public @ResponseBody Article updateType( + @PathVariable("type") Integer type, + @RequestBody Article article + ) { + return articleService.updateType(article, type); + } // endregion // region GET - @GetMapping(value = "/getAllArticle", produces = MediaType.APPLICATION_JSON_VALUE) public @ResponseBody List
getAllArticles() { ArrayList
results = (ArrayList
) articleService.getAllArticles(); @@ -160,6 +238,94 @@ public class ArticleControler { // endregion // region DELETE + @DeleteMapping( + value = "/deleteArticleFromId/{id}", + produces = MediaType.APPLICATION_JSON_VALUE + ) + public @ResponseBody Response deleteArticleFromId( + @PathVariable("id") Integer id + ) { + return articleService.deleteArticleFromId(id); + } + + @DeleteMapping( + value = "/deleteArticleFromTitle/{title}", + produces = MediaType.APPLICATION_JSON_VALUE + ) + public @ResponseBody Response deleteArticleFromTitle( + @PathVariable("title") String title + ) { + return articleService.deleteArticleFromTitle(title); + } + + @DeleteMapping( + value = "/deleteArticleFromUrl/{url}", + produces = MediaType.APPLICATION_JSON_VALUE + ) + public @ResponseBody Response deleteArticleFromUrl( + @PathVariable("url") String url + ) { + return articleService.deleteArticleFromUrl(url); + } + + @DeleteMapping( + value = "/deleteArticleAddedBefore/{date}", + produces = MediaType.APPLICATION_JSON_VALUE + ) + public @ResponseBody Response deleteArticleAddedBefore( + @PathVariable("date") String date + ) { + return articleService.deleteArticleAddedBefore(date); + } + @DeleteMapping( + value = "/deleteArticleAddedAfter/{date}", + produces = MediaType.APPLICATION_JSON_VALUE + ) + public @ResponseBody Response deleteArticleAddedAfter( + @PathVariable("date") String date + ) { + return articleService.deleteArticleAddedAfter(date); + }@DeleteMapping( + value = "/deleteArticleAddedBetween/{beginning}/{end}", + produces = MediaType.APPLICATION_JSON_VALUE + ) + public @ResponseBody Response deleteArticleAddedBetween( + @PathVariable("beginning") String beginning, + @PathVariable("end") String end + ) { + return articleService.deleteArticleAddedBetween(beginning, end); + } + + @DeleteMapping( + value = "/deleteArticlePublishedBefore/{date}", + produces = MediaType.APPLICATION_JSON_VALUE + ) + public @ResponseBody Response deleteArticlePublishedBefore( + @PathVariable("date") String date + ) { + return articleService.deleteArticlePublishedBefore(date); + } + + @DeleteMapping( + value = "/deleteArticlePublishedAfter/{date}", + produces = MediaType.APPLICATION_JSON_VALUE + ) + public @ResponseBody Response deleteArticlePublishedAfter( + @PathVariable("date") String date + ) { + return articleService.deleteArticlePublishedAfter(date); + } + + @DeleteMapping( + value = "/deleteArticlePublishedBetween/{beginning}/{end}", + produces = MediaType.APPLICATION_JSON_VALUE + ) + public @ResponseBody Response deleteArticlePublishedBetween( + @PathVariable("beginning") String beginning, + @PathVariable("end") String end + ) { + return articleService.deleteArticlePublishedBetween(beginning, end); + } // endregion } 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 550d3b0..41475a6 100644 --- a/WebService/src/main/java/SAE/ApiREST/WebService/model/Article.java +++ b/WebService/src/main/java/SAE/ApiREST/WebService/model/Article.java @@ -1,7 +1,7 @@ package SAE.ApiREST.WebService.model; - import java.time.LocalDate; +import java.time.format.DateTimeFormatter; import jakarta.persistence.Entity; import jakarta.persistence.GeneratedValue; @@ -12,32 +12,32 @@ import jakarta.persistence.Id; public class Article { @Id @GeneratedValue(strategy = GenerationType.AUTO) - String id; + Integer id; String title; - String URL; + String url; LocalDate dateAdded; LocalDate datePublished; - Boolean isVisible; + Boolean visible; Integer type; // ArrayList keywords = new ArrayList<>(); public Article() {} - public Article(String title, String URL, LocalDate dateAdded, LocalDate datePublished, Boolean visibility, Integer type) { - this.id = "1"; + public Article(String title, String url, LocalDate dateAdded, LocalDate datePublished, Boolean visibility, Integer type) { + this.id = 1; this.title = title; - this.URL = URL; + this.url = url; this.dateAdded = dateAdded; this.datePublished = datePublished; - this.isVisible = visibility; + this.visible = visibility; 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; } @@ -49,36 +49,36 @@ public class Article { this.title = title; } - public String getURL() { - return this.URL; + public String getUrl() { + return this.url; } - public void setURL(String URL) { - this.URL = URL; + public void setUrl(String url) { + this.url = url; } public LocalDate getDateAdded() { return this.dateAdded; } - public void setDateAdded(LocalDate dateAdded) { - this.dateAdded = dateAdded; + public void setDateAdded(String dateAdded) { + this.dateAdded = LocalDate.parse(dateAdded, DateTimeFormatter.ofPattern("dd-MM-yyyy")); } public LocalDate getDatePublished() { return this.datePublished; } - public void setDatePublished(LocalDate datePublished) { - this.datePublished = datePublished; + public void setDatePublished(String datePublished) { + this.datePublished = LocalDate.parse(datePublished, DateTimeFormatter.ofPattern("dd-MM-yyyy")); } - public Boolean isVisible() { - return this.isVisible; + public Boolean getVisible() { + return this.visible; } - public void setVisibility(Boolean isVisible) { - this.isVisible = isVisible; + public void setVisibility(Boolean visible) { + this.visible = visible; } public Integer getType() { diff --git a/WebService/src/main/java/SAE/ApiREST/WebService/service/IArticleService.java b/WebService/src/main/java/SAE/ApiREST/WebService/service/IArticleService.java index 427d987..eaa12ff 100644 --- a/WebService/src/main/java/SAE/ApiREST/WebService/service/IArticleService.java +++ b/WebService/src/main/java/SAE/ApiREST/WebService/service/IArticleService.java @@ -2,10 +2,24 @@ package SAE.ApiREST.WebService.service; import java.util.List; +import SAE.ApiREST.WebService.Response; import SAE.ApiREST.WebService.model.Article; public interface IArticleService { + // region POST + public Response addArticle(Article article); + // endregion + + // region PUT + public Article updateTitle(Article article, String title); + public Article updateUrl(Article article, String url); + public Article updateDatePublished(Article article, String datePublished); + public Article updateDateAdded(Article article, String dateAdded); + public Article changeVisibility(Article article); + public Article updateType(Article article, Integer type); + // endregion + // region GET public List
getAllArticles(); Article getArticlesById(Integer id); @@ -21,4 +35,15 @@ public interface IArticleService { public List
getArticlesPublishedBetween(String beginning, String end); // endregion + // region DELETE + public Response deleteArticleFromId(Integer id); + public Response deleteArticleFromTitle(String title); + public Response deleteArticleFromUrl(String url); + public Response deleteArticleAddedBefore(String date); + public Response deleteArticleAddedAfter(String date); + public Response deleteArticleAddedBetween(String beginning, String end); + public Response deleteArticlePublishedBefore(String date); + public Response deleteArticlePublishedAfter(String date); + public Response deleteArticlePublishedBetween(String beginning, String end); + // endregion } diff --git a/WebService/src/main/java/SAE/ApiREST/WebService/service/StubArticleService.java b/WebService/src/main/java/SAE/ApiREST/WebService/service/StubArticleService.java index 2ea238a..026dcbc 100644 --- a/WebService/src/main/java/SAE/ApiREST/WebService/service/StubArticleService.java +++ b/WebService/src/main/java/SAE/ApiREST/WebService/service/StubArticleService.java @@ -7,11 +7,66 @@ import java.util.List; import org.springframework.stereotype.Service; +import SAE.ApiREST.WebService.Response; import SAE.ApiREST.WebService.model.Article; @Service public class StubArticleService implements IArticleService { + // region POST + @Override + public Response addArticle(Article article) { + return new Response( + article.getId(), + "Article successfully created" + ); + } + // endregion + + // region PUT + @Override + public Article updateTitle(Article article, String title) { + Article newArticle = article; + newArticle.setTitle(title); + return newArticle; + } + + @Override + public Article updateUrl(Article article, String url) { + Article newArticle = article; + newArticle.setUrl(url); + return newArticle; + } + + @Override + public Article updateDatePublished(Article article, String datePublished) { + Article newArticle = article; + newArticle.setDatePublished(datePublished); + return newArticle; + } + + @Override + public Article updateDateAdded(Article article, String dateAdded) { + Article newArticle = article; + newArticle.setDateAdded(dateAdded); + return newArticle; + } + + @Override + public Article changeVisibility(Article article) { + Article newArticle = article; + newArticle.setVisibility(!article.getVisible()); + return newArticle; + } + + @Override + public Article updateType(Article article, Integer type) { + Article newArticle = article; + newArticle.setType(type); + return newArticle; + } + // endregion + // region GET @Override public List
getAllArticles() { @@ -224,4 +279,78 @@ public class StubArticleService implements IArticleService { return articles; } // endregion -} + + // region DELETE + @Override + public Response deleteArticleFromId(Integer id) { + return new Response( + id, + "Article successfully deleted" + ); + } + + @Override + public Response deleteArticleFromUrl(String url) { + return new Response( + 1, + "Article successfully deleted" + ); + } + + @Override + public Response deleteArticleFromTitle(String title) { + return new Response( + 1, + "Article successfully deleted" + ); + } + + @Override + public Response deleteArticleAddedBefore(String url) { + return new Response( + 1, + "Article successfully deleted" + ); + } + + @Override + public Response deleteArticleAddedAfter(String url) { + return new Response( + 1, + "Article successfully deleted" + ); + } + + @Override + public Response deleteArticleAddedBetween(String beginning, String end) { + return new Response( + 1, + "Article successfully deleted" + ); + } + + @Override + public Response deleteArticlePublishedBefore(String url) { + return new Response( + 1, + "Article successfully deleted" + ); + } + + @Override + public Response deleteArticlePublishedAfter(String url) { + return new Response( + 1, + "Article successfully deleted" + ); + } + + @Override + public Response deleteArticlePublishedBetween(String beginning, String end) { + return new Response( + 1, + "Article successfully deleted" + ); + } + // endregion +} \ No newline at end of file