From 4e44a4d91598796c6e34cb40c5a4827648663a8a Mon Sep 17 00:00:00 2001 From: yolou Date: Sun, 26 Oct 2025 02:17:41 +0100 Subject: [PATCH] Debug avec le package + javadoc des modeles --- src/fr/iutfbleau/papillon/BaseDeDonnees.java | 3 - src/fr/iutfbleau/papillon/GestionRappel.java | 64 ++++++++------- src/fr/iutfbleau/papillon/Rappel.java | 2 - src/fr/iutfbleau/papillon/RappelBD.java | 2 - src/fr/iutfbleau/papillon/UserKey.java | 83 ++++++++++++++++---- src/fr/iutfbleau/papillon/Utilisateur.java | 2 - src/fr/iutfbleau/papillon/UtilisateurBD.java | 6 +- 7 files changed, 103 insertions(+), 59 deletions(-) diff --git a/src/fr/iutfbleau/papillon/BaseDeDonnees.java b/src/fr/iutfbleau/papillon/BaseDeDonnees.java index 7c282aa..bf2e499 100644 --- a/src/fr/iutfbleau/papillon/BaseDeDonnees.java +++ b/src/fr/iutfbleau/papillon/BaseDeDonnees.java @@ -1,6 +1,3 @@ -package fr.iutfbleau.papillon; - - import java.sql.*; /** diff --git a/src/fr/iutfbleau/papillon/GestionRappel.java b/src/fr/iutfbleau/papillon/GestionRappel.java index fa4506f..20a5a32 100644 --- a/src/fr/iutfbleau/papillon/GestionRappel.java +++ b/src/fr/iutfbleau/papillon/GestionRappel.java @@ -1,33 +1,37 @@ - -package fr.iutfbleau.papillon; - import java.sql.SQLException; import java.util.List; /** - * La classe GestionRappel gère les opérations métier - * liées aux rappels de l’utilisateur actuellement identifié. - * - *

Elle fait le lien entre la couche applicative et la couche base de données - * (via la classe {@link RappelBD}) et s’appuie sur {@link UserKey} - * et {@link UtilisateurBD} pour identifier l’utilisateur.

+ * La classe GestionRappel gère les opérations CRUD + * (création, lecture, modification, suppression) sur les rappels + * associés à l’utilisateur courant. + *

+ * Elle s’appuie sur les classes Rappel, RappelBD, + * UserKey et UtilisateurBD pour interagir + * avec la base de données. + *

* * @version 1.0 - * @author Seri-khane YOLOU, Aylane SEHL, Jenson VAL + * @author + * Seri-khane YOLOU, Aylane SEHL, Jenson VAL */ public class GestionRappel { - /** Identifiant de l’utilisateur courant. */ + /** Identifiant de l'utilisateur courant. */ private final int utilisateurId; /** - * Constructeur : initialise l’utilisateur courant à partir de sa clé locale. - * Si la clé n’existe pas, elle est créée automatiquement. + * Constructeur de la classe GestionRappel. + *

+ * Initialise l’identifiant utilisateur en se basant sur la clé locale. + * Si aucun utilisateur n’existe encore, il est automatiquement créé + * dans la base de données. + *

*/ public GestionRappel() { int uid = -1; try { - String cle = UserKey.lireOuCreerCle(); // clé locale + String cle = UserKey.lireOuCreerCle(); // clé locale uid = UtilisateurBD.getOrCreateIdByKey(cle); // crée ou récupère utilisateur } catch (Exception e) { e.printStackTrace(); @@ -40,11 +44,11 @@ public class GestionRappel { * Ajoute un nouveau rappel pour l’utilisateur courant. * * @param titre le titre du rappel - * @param contenu le contenu ou la description du rappel - * @param theme la catégorie ou le thème du rappel - * @param rang la priorité ou l’ordre du rappel - * @return l’identifiant du rappel nouvellement ajouté - * @throws SQLException si une erreur SQL survient + * @param contenu le contenu textuel du rappel + * @param theme le thème associé au rappel + * @param rang la priorité du rappel + * @return le nombre de lignes affectées ou l’ID du rappel ajouté + * @throws SQLException si une erreur survient lors de l’ajout */ public int ajouter(String titre, String contenu, String theme, int rang) throws SQLException { Rappel r = new Rappel(titre, contenu, theme, rang); @@ -52,33 +56,33 @@ public class GestionRappel { } /** - * Récupère tous les rappels de l’utilisateur courant. + * Liste tous les rappels appartenant à l’utilisateur courant. * - * @return la liste des rappels enregistrés - * @throws SQLException si une erreur SQL survient + * @return la liste des rappels de l’utilisateur + * @throws SQLException si une erreur de communication avec la base survient */ public List lister() throws SQLException { return RappelBD.listerParUtilisateur(this.utilisateurId); } /** - * Modifie un rappel existant appartenant à l’utilisateur courant. + * Modifie un rappel existant à partir de son identifiant. * * @param id l’identifiant du rappel à modifier - * @param r l’objet {@link Rappel} contenant les nouvelles informations + * @param r l’objet Rappel contenant les nouvelles valeurs * @return le nombre de lignes modifiées - * @throws SQLException si une erreur SQL survient + * @throws SQLException si une erreur survient lors de la mise à jour */ public int modifierParId(int id, Rappel r) throws SQLException { return RappelBD.modifier(id, r, this.utilisateurId); } /** - * Supprime un rappel spécifique appartenant à l’utilisateur courant. + * Supprime un rappel de la base de données selon son identifiant. * * @param id l’identifiant du rappel à supprimer * @return le nombre de lignes supprimées - * @throws SQLException si une erreur SQL survient + * @throws SQLException si une erreur survient lors de la suppression */ public int supprimerParId(int id) throws SQLException { return RappelBD.supprimer(id, this.utilisateurId); @@ -88,16 +92,16 @@ public class GestionRappel { * Supprime tous les rappels appartenant à l’utilisateur courant. * * @return le nombre de rappels supprimés - * @throws SQLException si une erreur SQL survient + * @throws SQLException si une erreur survient lors de la suppression */ public int viderTousMesRappels() throws SQLException { return RappelBD.supprimerToutPourUtilisateur(this.utilisateurId); } /** - * Retourne l’identifiant de l’utilisateur courant. + * Renvoie l’identifiant de l’utilisateur courant. * - * @return l’identifiant de l’utilisateur + * @return l’ID utilisateur */ public int getUtilisateurId() { return this.utilisateurId; diff --git a/src/fr/iutfbleau/papillon/Rappel.java b/src/fr/iutfbleau/papillon/Rappel.java index cc83f18..46e6fb7 100644 --- a/src/fr/iutfbleau/papillon/Rappel.java +++ b/src/fr/iutfbleau/papillon/Rappel.java @@ -5,8 +5,6 @@ * @version 1.0 * @author Seri-khane Yolou, Aylane SEHL, Jenson VAL */ -package fr.iutfbleau.papillon; - public class Rappel { private int id; diff --git a/src/fr/iutfbleau/papillon/RappelBD.java b/src/fr/iutfbleau/papillon/RappelBD.java index abd8459..dd5f9d2 100644 --- a/src/fr/iutfbleau/papillon/RappelBD.java +++ b/src/fr/iutfbleau/papillon/RappelBD.java @@ -1,5 +1,3 @@ -package fr.iutfbleau.papillon; - import java.sql.*; import java.util.ArrayList; import java.util.List; diff --git a/src/fr/iutfbleau/papillon/UserKey.java b/src/fr/iutfbleau/papillon/UserKey.java index a6ac759..39fdfe7 100644 --- a/src/fr/iutfbleau/papillon/UserKey.java +++ b/src/fr/iutfbleau/papillon/UserKey.java @@ -1,14 +1,38 @@ import java.io.*; import java.util.UUID; +/** + * La classe UserKey permet de gérer une clé d'identification locale + * unique pour un utilisateur du logiciel Papillon. + * + *

+ * Cette clé est stockée dans un fichier caché nommé .papillon_id + * dans le répertoire personnel de l'utilisateur. + * Elle sert à identifier l'utilisateur sans avoir besoin de système de connexion + * ou d'authentification centralisée. + *

+ * + *

+ * Lors du premier lancement du programme, si le fichier n’existe pas ou est vide, + * une clé unique (UUID) est automatiquement générée, enregistrée dans ce fichier + * et réutilisée pour les prochaines exécutions. + *

+ * + * @version 1.0 + * @author Seri-khane Yolou, Aylane Sehl, Jenson Val + */ public class UserKey { /** - Lit la clé stockée dans le fichier ~/.papillon_id - ou en génère une nouvelle si le fichier n'existe pas. - @return La clé utilisateur sous forme de chaîne de caractères + * Lit la clé stockée dans le fichier ~/.papillon_id + * ou en génère une nouvelle si le fichier n'existe pas ou est vide. + * + *

Cette méthode est utilisée par {@link GestionRappel} pour associer + * chaque utilisateur à ses données locales.

+ * + * @return une chaîne de caractères représentant la clé unique de l'utilisateur */ - public static String lireOuCreerCle() { + protected static String lireOuCreerCle() { // Récupère le dossier personnel de l’utilisateur String home = System.getProperty("user.home"); File fichier = new File(home, ".papillon_id"); @@ -17,27 +41,24 @@ public class UserKey { try { // Si le fichier existe déjà on lit son contenu if (fichier.exists()) { + if (fichier.length() == 0) { + cle = genererCle(); // Génère une clé unique + ecrireCle(fichier, cle); + System.out.println("Le fichier de clé est vide. Génération d'une nouvelle clé."); + } + FileReader fr = new FileReader(fichier); BufferedReader br = new BufferedReader(fr); - cle = br.readLine(); // lit la première ligne (la clé) br.close(); fr.close(); System.out.println("Clé existante trouvée : " + cle); - } + } // Sinon, on génère une nouvelle clé et on l’écrit dans le fichier else { - cle = UUID.randomUUID().toString(); // Génère une clé unique - - FileWriter fw = new FileWriter(fichier); - BufferedWriter bw = new BufferedWriter(fw); - - bw.write(cle); - bw.newLine(); - bw.close(); - fw.close(); - + cle = genererCle(); + ecrireCle(fichier, cle); System.out.println("Nouvelle clé générée et enregistrée : " + cle); } @@ -48,4 +69,34 @@ public class UserKey { return cle; } + /** + * Génère une nouvelle clé unique sous la forme d'un identifiant universel (UUID). + * + *

Cette méthode utilise la classe {@link java.util.UUID} pour générer + * une chaîne aléatoire unique et pratiquement impossible à deviner.

+ * + * @return une chaîne aléatoire unique représentant une clé utilisateur + */ + private static String genererCle() { + return UUID.randomUUID().toString(); + } + + /** + * Écrit une clé donnée dans un fichier texte. + * + *

Cette méthode crée le fichier s’il n’existe pas, puis enregistre + * la clé passée en paramètre sur la première ligne du fichier.

+ * + * @param fichier le fichier dans lequel écrire la clé + * @param cle la clé à sauvegarder dans le fichier + * @throws IOException si une erreur survient lors de l’écriture + */ + private static void ecrireCle(File fichier, String cle) throws IOException { + FileWriter fw = new FileWriter(fichier); + BufferedWriter bw = new BufferedWriter(fw); + bw.write(cle); + bw.newLine(); + bw.close(); + fw.close(); + } } diff --git a/src/fr/iutfbleau/papillon/Utilisateur.java b/src/fr/iutfbleau/papillon/Utilisateur.java index c9e23da..55c26f9 100644 --- a/src/fr/iutfbleau/papillon/Utilisateur.java +++ b/src/fr/iutfbleau/papillon/Utilisateur.java @@ -5,8 +5,6 @@ * @version 1.0 * @author Seri-khane Yolou, Aylane SEHL, Jenson VAL */ -package fr.iutfbleau.papillon; - public class Utilisateur { private int id; diff --git a/src/fr/iutfbleau/papillon/UtilisateurBD.java b/src/fr/iutfbleau/papillon/UtilisateurBD.java index a849ef2..aab4000 100644 --- a/src/fr/iutfbleau/papillon/UtilisateurBD.java +++ b/src/fr/iutfbleau/papillon/UtilisateurBD.java @@ -1,4 +1,4 @@ - +import java.sql.*; /** * La classe UtilisateurBD gère la table utilisateur @@ -7,10 +7,8 @@ * et de lire un utilisateur complet via sa clé.

* * @version 1.0 - * @author Seri-khane Yolou, Aylane SEHL, Jenson VAL + * @author Junior */ -package fr.iutfbleau.papillon; -import java.sql.*; public class UtilisateurBD { /** Identifiant interne de l’utilisateur. */