From d5f69f87d7bbaca1f748d9c8c8bca3c8112d1224 Mon Sep 17 00:00:00 2001 From: Charlie Darques <charlie.darques.etu@univ-lille.fr> Date: Tue, 18 Mar 2025 00:09:16 +0100 Subject: [PATCH] finalisation dossier --- doc/doc_appli.md | 57 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 42 insertions(+), 15 deletions(-) diff --git a/doc/doc_appli.md b/doc/doc_appli.md index 4663f03..dc23d6a 100644 --- a/doc/doc_appli.md +++ b/doc/doc_appli.md @@ -9,7 +9,7 @@ Un utilisateur peut décider de **suivre des fils de discussions** pour y avoir accès directement sur sa page d'accueil. Il peut pour autant voir **tous** les fils existants et voir les messages de tous les autres utilisateurs. Il n'est pas possible d'avoir une conversation privée avec un autre utilisateur. -L'application permet une navigation accessible et fluide pour voir son fil d'actualité, les fils de discussions suivis et ceux à découvrir, et pour gérer les paramètres de son compte. +L'application permet une navigation accessible et fluide pour voir son fil d'actualité (bouton **Home**), les fils de discussions suivis (bouton **Followed**) et ceux à découvrir (bouton **Discover**), et pour gérer les paramètres de son compte (bouton **Account**). L'application est reliée à une **base de données** qui est la source de l'affichage de toutes les informations relatives aux comptes utilisateurs, aux messages et aux fils de discussions, ainsi que des informations sur les fils suivis et les messages *likés* par les utilisateurs. @@ -143,42 +143,67 @@ Voici le rendu de la commande `tree` à la racine du dépôt : │ └── User.java └── WEB-INF.iml -**Note** : à la compilation, les fichiers binaires sont redirigés vers le dossier `WEB-INF/classes`. Ils ne sont pas affichés ici pour des raisons de place. +**Note** : à la compilation, les fichiers binaires sont redirigés vers le dossier `WEB-INF/classes`. Ils ne sont pas affichés ici pour des raisons de visibilité. ## Liste des entrées du/des controleurs avec leur fonctionalité Nous avons uniquement utilisé des servlets sur ce projet. Pour une meilleure lisibilité du code, nous avons décidé de ne pas avoir un fichier global mais plusieurs contrôleurs avec chacun leurs propres responsabilités. -*Le nom de la servlet représente son entrée, chacune vérifient si l'utilisateur est connecté et indiqué dans la session. Si ce n'est pas le cas (par exemple si la page a été bookmarkée et visitée a posteriori), l'écran de connexion est affiché.* +*Le nom de la servlet représente son entrée, chacune vérifient si l'utilisateur est connecté et enregistré dans la session. Si ce n'est pas le cas (par exemple si la page a été bookmarkée et visitée a posteriori, une fois la session échue), les servlet redirigent toutes vers l'écran de connexion.* -**Account** +`http://localhost:8080/s4a021-web-backend/`**Account** - Permet de gérer les informations du compte de l'utilisateur (changer son mot de passe ou supprimer son compte) -**DeleteAccount** +`http://localhost:8080/s4a021-web-backend/`**DeleteAccount** - Est appelée par **Account** lorsque l'utilisateur supprime son compte. -**Discover** +`http://localhost:8080/s4a021-web-backend/`**Discover** -**Feed** +- Affiche tous les fils de discussion, sans prendre en compte si l'utilisateur connecté les suit déjà ou non. Un bouton *Follow* ou *Followed* permet d'indiquer à l'utilisateur s'il suit le fil affiché. -**Following** +`http://localhost:8080/s4a021-web-backend/`**Welcome** -**FollowThread** +- Affiche le fil d'actualité de l'utilisateur avec les messages des fils de discussion auxquels il est abonné. L'utilisateur peut réagir aux messages avec un bouton *Like* ou *Unlike*. +- L'utilisateur peut poster un message dans un fil de dicussion en dessous de chaque message affiché sur son feed. -**LikeMessage** +`http://localhost:8080/s4a021-web-backend/`**Following** -**LogIn** +- Affiche la liste des fils de discussion auxquels l'utilisateur connecté est abonné, et depuis combien de temps il les suit. -**NewThread** +`http://localhost:8080/s4a021-web-backend/`**FollowThread** -**PageGeneration** +- N'affiche rien et exécute seulement du code lorsqu'elle est appelée dans **Discover**. +- Avec les paramètres d'un formulaire envoyé en POST, une requête est exécutée pour enregistrer l'abonnement de l'utilisateur à un fil de discussion, puis la servlet redirige vers la page d'origine. -**PostMessage** +`http://localhost:8080/s4a021-web-backend/`**LikeMessage** -**SignUp** +- N'affiche rien et exécute seulement du code lorsqu'elle est appelée dans **Feed**. +- Comme pour **FollowThread**, avec les paramètres d'un formulaire envoyé en POST, une requête est exécutée pour enregistrer la réaction de l'utilisateur à un message d'un fil de discussion, puis la servlet redirige vers la page d'origine. +`http://localhost:8080/s4a021-web-backend/`**LogIn** + +- N'affiche rien et exécute du code lorsqu'elle reçoit les paramètres du formulaire de connexion de la page `index.html`. +- Vérifie si l'utilisateur existe bien dans la base de données et si oui, elle redirige vers la page **Welcome**. Si non, elle indique une erreur. +- Si le login ou le mot de passe est vide, la page affiche un message d'erreur en indiquant qu'il est nécessaire, et permet de revenir sur le formulaire de connexion. + +`http://localhost:8080/s4a021-web-backend/`**NewThread** + +- Affiche un formulaire de création de fil de discussion avec un premier message à poster dedans. Quand le formulaire est envoyé, la page s'appelle elle-même pour exécuter la requête de création et affiche un message de validation si tout a bien fonctionné. + +`http://localhost:8080/s4a021-web-backend/`**PageGeneration** + +- Ce contrôleur n'est pas une servlet, seulement une classe Java avec une seule méthode statique permettant de générer le menu de navigation pour éviter la redondance d'écriture HTML. + +`http://localhost:8080/s4a021-web-backend/`**PostMessage** + +- N'affiche rien et exécute le code nécessaire à l'exécution d'une requête d'envoi de message dans un fil de discussion. +- Elle peut être appelée par **Welcome** quand un utilisateur poste un message dans un fil qu'il suit, ou dans **NewThread** quand il crée un nouveau fil. + +`http://localhost:8080/s4a021-web-backend/`**SignUp** + +- Similairement à **LogIn**, n'affiche rien mais vérifie que le nouveau compte envoyé dans le formulaire de `create.html` n'existe pas dans la base de donnée. S'il n'existe pas déjà , elle exécute la requête de création d'utilisateur. Sinon, elle affiche un message d'information et permet de revenir sur l'écran de connexion. ## Points techniques difficiles et comment ils ont été réglés @@ -187,3 +212,5 @@ Nous avons essentiellement rencontrés des problèmes au niveau de la base de do Une autre difficulté sur ce même point était que nous n'avions pas réussi à paramétrer le programme afin de pouvoir l'exécuter sur nos machines personnelles (difficultés de connexion au Driver via Postgres). Quand nous travaillions depuis chez nous, nous ne pouvions rien tester de notre travail et le code se faisait un peu à l'aveugle dans l'attente de pouvoir le vérifier. Ceci dit, cela nous a poussé à nous appliquer dans notre développement sans se presser à coder trop vite en testant à répétition. + +L'utilisation des requêtes SQL a étonnemment été le principal point difficile. Nous avions souvent fait des erreurs d'inattention qui finalement avaient beaucoup d'impact sur l'ensemble du code car elles sont utilisées à beaucoup de reprises. En faisant preuve de plus de précision dans nos méthodes et en s'appliquant à prendre le temps de tester manuellement les requêtes, nous avons pris de meilleurs réflexes qui ont permis de coder plus proprement, en limitant la redondance et en se relisant plusieurs fois. -- GitLab