From 33b4655fe7482b89046624065c72435b9f4c218f Mon Sep 17 00:00:00 2001 From: Siwa12100 Date: Sat, 16 Mar 2024 13:32:13 +0100 Subject: [PATCH] ajout du controleur --- pom.xml | 15 ++- .../controleurs/ArticlesControleur.java | 24 +++- .../VeraxFeather/modele/articles/Article.java | 1 + .../modele/articles/stub/StubArticles.java | 111 ++++++++++++++++++ 4 files changed, 143 insertions(+), 8 deletions(-) create mode 100644 src/main/java/VeraxFeather/modele/articles/stub/StubArticles.java diff --git a/pom.xml b/pom.xml index feeb487..f63f466 100644 --- a/pom.xml +++ b/pom.xml @@ -18,21 +18,23 @@ 18 18 + + org.springframework.boot spring-boot-starter-web + org.springframework.boot - spring-boot-starter-test - test + spring-boot-starter-data-jpa - org.springframework.boot - spring-boot-starter-data-jpa + jakarta.persistence + jakarta.persistence-api @@ -41,9 +43,10 @@ runtime + - jakarta.persistence - jakarta.persistence-api + org.springframework.boot + spring-boot-starter-hateoas diff --git a/src/main/java/VeraxFeather/controleurs/ArticlesControleur.java b/src/main/java/VeraxFeather/controleurs/ArticlesControleur.java index 9e518e5..4215bbb 100644 --- a/src/main/java/VeraxFeather/controleurs/ArticlesControleur.java +++ b/src/main/java/VeraxFeather/controleurs/ArticlesControleur.java @@ -1,13 +1,33 @@ package VeraxFeather.controleurs; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; +import VeraxFeather.modele.articles.IArticlesDataManager; +import VeraxFeather.modele.articles.stub.StubArticles; +import VeraxFeather.modele.articles.Article; + +import java.util.List; @RestController public class ArticlesControleur { + private final IArticlesDataManager articlesDataManager = new StubArticles(); + + @GetMapping(value="/articles", produces="application/json") + public List
getAllArticles() { + return articlesDataManager.getAllArticles(); + } + + @GetMapping(value="/articles/{id}", produces="application/json") + public Article getArticle(@PathVariable int id) { + + System.out.println("Id renseigné : " + id); + return articlesDataManager.getArticle(id); + } + @GetMapping(value="/test") - public String testAPI(){ + public String testAPI() { return "L'API fonctionne correctement!"; } -} \ No newline at end of file +} diff --git a/src/main/java/VeraxFeather/modele/articles/Article.java b/src/main/java/VeraxFeather/modele/articles/Article.java index 384fa07..d80a906 100644 --- a/src/main/java/VeraxFeather/modele/articles/Article.java +++ b/src/main/java/VeraxFeather/modele/articles/Article.java @@ -18,6 +18,7 @@ public class Article { public Article(int id, String titre, String description, String temps, String date, String auteur, String imagePrincipale) { + this.id = id; this.titre = titre; this.description = description; this.temps = temps; diff --git a/src/main/java/VeraxFeather/modele/articles/stub/StubArticles.java b/src/main/java/VeraxFeather/modele/articles/stub/StubArticles.java new file mode 100644 index 0000000..a5138af --- /dev/null +++ b/src/main/java/VeraxFeather/modele/articles/stub/StubArticles.java @@ -0,0 +1,111 @@ +package VeraxFeather.modele.articles.stub; + +import VeraxFeather.modele.articles.IArticlesDataManager; +import VeraxFeather.modele.articles.Article; +import VeraxFeather.modele.articles.contenus.Contenu; +import VeraxFeather.modele.articles.contenus.ContenuParagraphe; +import VeraxFeather.modele.articles.contenus.ContenuMedia; + +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class StubArticles implements IArticlesDataManager { + private List
lArticles; + + public StubArticles() { + chargerArticles(); + } + + private void chargerArticles() { + lArticles = new ArrayList<>(); + Map> contenuMap = chargerContenuParagraphe(); + + // Article 1 + Article article1 = new Article(1, "Thinkerview", "Thinkerview est une chaîne youtube d'interview-débat...", + "3", LocalDate.now().toString(), "Siwa", "assets/img/mainThinkerview.webp"); + article1.remplirArticle(contenuMap.get("article1")); + lArticles.add(article1); + + // Article 2 + Article article2 = new Article(2, "Guerre en Ukraine : Les troupes ukrainiennes reprennent-elles du terrain ?", + "Les troupes ukrainiennes reprennent-elles du territoire ?...", + "7", LocalDate.now().toString(), "Siwa", "https://images.ladepeche.fr/api/v1/images/view/64e31dd60f90f526a4234177/large/image.jpg?v=1"); + article2.remplirArticle(contenuMap.get("article2")); + lArticles.add(article2); + + } + + private Map> chargerContenuParagraphe() { + Map> contenuMap = new HashMap<>(); + List article1Contenus = new ArrayList<>(); + List article2Contenus = new ArrayList<>(); + List article3Contenus = new ArrayList<>(); + + // Contenu de l'article 1 + article1Contenus.add(new ContenuParagraphe(1, "Le mystérieux cygne noir.", + "Sous les traits d’un mystérieux cygne noir, un objet vidéo non identifié plane dans la galaxie médiatique. Ambiance Star Wars...")); + article1Contenus.add(new ContenuMedia(0, "Des sujets majeurs abordés", "https://www.systext.org/sites/default/files/styles/large/public/Ill_Thinkerview_Janv2022.png?itok=JvlFQmCH")); + article1Contenus.add(new ContenuParagraphe(2, "Penser, réfléchir et s'exprimer librement.", + "Dernier carton en date : un entretien de deux heures avec Juan Branco...")); + article1Contenus.add(new ContenuMedia(1, "De prestigieux et fascinants invités", "https://i.ytimg.com/vi/_D-AnsdbnRI/maxresdefault.jpg")); + article1Contenus.add(new ContenuParagraphe(3, "Une alternative dans un monde aux informations formatées", + "\"Nous faisons des interviews aux perspectives alternatives dans un monde aux informations formatées\"...")); + article1Contenus.add(new ContenuMedia(2, "Prendre le temps d'écouter les experts dans leurs domaines.", "https://www.youtube.com/embed/1tTksQL2kqs")); + + // Contenu de l'article 2 + article2Contenus.add(new ContenuParagraphe(1, "Oui les Ukrainiens reprennent du terrain", + "Timéo demande à Eric Biegala, grand reporter à la rédaction internationale de Radio France...")); + article2Contenus.add(new ContenuMedia(1, "Des violents affrontements", "https://images.ladepeche.fr/api/v1/images/view/655a496a7097bc144658af8c/large/image.jpg?v=1")); + article2Contenus.add(new ContenuParagraphe(2, "Non les rayons ne seront pas vides cet hiver", + "Lorenzo se demande s'il est vrai \"qu'il y aura une pénurie de produits étrangers cet hiver\"...")); + article2Contenus.add(new ContenuMedia(2, "Une carte en perpétuelle évolution", + "https://ds1.static.rtbf.be/image/media/object/default/16x9/1920x1080/4/e/6/4e67668ff30a378cbf0a9172f92712a7.jpg")); + article2Contenus.add(new ContenuParagraphe(3, "Le gaz va augmenter en 2023, mais l'Etat va continuer à aider", + "Isra se demande s'il est vrai \"que le gaz va être plus cher cet hiver\"...")); + + // Contenu de l'article 3 + article3Contenus.add(new ContenuParagraphe(1, "Une certaine \"tempête Jinette\" en Guyane", + "Ne vous laissez pas convaincre par les nuages et les pluies au-dessus de l'île de Cayenne ce matin...")); + article3Contenus.add(new ContenuMedia(1, "Pour aujourd'hui, la vigilance est au vert en Guyane.", + "https://medias.franceantilles.fr/api/v1/images/view/6560a041c9b8a232734f9fda/width_1000/image.jpg")); + article3Contenus.add(new ContenuParagraphe(2, "De simples petites averses en prévision !", + "Les quelques averses qui passent actuellement au-dessus de l'île de Cayenne et des savanes ne sont que passagères...")); + article3Contenus.add(new ContenuMedia(2, "Le faux document en question. Diffusé depuis hier soir.", + "https://medias.franceantilles.fr/api/v1/images/view/6560b08a04eeb6664b7f5488/width_1000/image.jpg")); + + contenuMap.put("article1", article1Contenus); + contenuMap.put("article2", article2Contenus); + contenuMap.put("article3", article3Contenus); + + return contenuMap; + } + + + @Override + public List
getAllArticles() { + return lArticles; + } + + @Override + public Article getArticle(int id) { + + System.out.println("Passage dans getArticle avec comme id : " + id); + System.out.println("Nombre d'articles disponibles : " + lArticles.size()); + + Article articleARenvoyer = lArticles.stream().filter(article -> article.getId() == id).findFirst().orElse(null); + + System.out.println(articleARenvoyer); + + // Article articleARenvoyer = this.lArticles.get(id); + + return articleARenvoyer; + } + + @Override + public List
getDerniersArticles(int nbArticles) { + return lArticles.subList(0, Math.min(nbArticles, lArticles.size())); + } +}