Debug avec le package + javadoc des modeles

This commit is contained in:
2025-10-26 02:17:41 +01:00
parent 1ce86a4ee3
commit 4e44a4d915
7 changed files with 103 additions and 59 deletions
@@ -1,6 +1,3 @@
package fr.iutfbleau.papillon;
import java.sql.*; import java.sql.*;
/** /**
+34 -30
View File
@@ -1,33 +1,37 @@
package fr.iutfbleau.papillon;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.List; import java.util.List;
/** /**
* La classe <code>GestionRappel</code> gère les opérations métier * La classe <code>GestionRappel</code> gère les opérations CRUD
* liées aux rappels de lutilisateur actuellement identifié. * (création, lecture, modification, suppression) sur les rappels
* * associés à lutilisateur courant.
* <p>Elle fait le lien entre la couche applicative et la couche base de données * <p>
* (via la classe {@link RappelBD}) et sappuie sur {@link UserKey} * Elle sappuie sur les classes <code>Rappel</code>, <code>RappelBD</code>,
* et {@link UtilisateurBD} pour identifier lutilisateur.</p> * <code>UserKey</code> et <code>UtilisateurBD</code> pour interagir
* avec la base de données.
* </p>
* *
* @version 1.0 * @version 1.0
* @author Seri-khane YOLOU, Aylane SEHL, Jenson VAL * @author
* Seri-khane YOLOU, Aylane SEHL, Jenson VAL
*/ */
public class GestionRappel { public class GestionRappel {
/** Identifiant de lutilisateur courant. */ /** Identifiant de l'utilisateur courant. */
private final int utilisateurId; private final int utilisateurId;
/** /**
* Constructeur : initialise lutilisateur courant à partir de sa clé locale. * Constructeur de la classe <code>GestionRappel</code>.
* Si la clé nexiste pas, elle est créée automatiquement. * <p>
* Initialise lidentifiant utilisateur en se basant sur la clé locale.
* Si aucun utilisateur nexiste encore, il est automatiquement créé
* dans la base de données.
* </p>
*/ */
public GestionRappel() { public GestionRappel() {
int uid = -1; int uid = -1;
try { try {
String cle = UserKey.lireOuCreerCle(); // clé locale String cle = UserKey.lireOuCreerCle(); // clé locale
uid = UtilisateurBD.getOrCreateIdByKey(cle); // crée ou récupère utilisateur uid = UtilisateurBD.getOrCreateIdByKey(cle); // crée ou récupère utilisateur
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
@@ -40,11 +44,11 @@ public class GestionRappel {
* Ajoute un nouveau rappel pour lutilisateur courant. * Ajoute un nouveau rappel pour lutilisateur courant.
* *
* @param titre le titre du rappel * @param titre le titre du rappel
* @param contenu le contenu ou la description du rappel * @param contenu le contenu textuel du rappel
* @param theme la catégorie ou le thème du rappel * @param theme le thème associé au rappel
* @param rang la priorité ou lordre du rappel * @param rang la priorité du rappel
* @return lidentifiant du rappel nouvellement ajouté * @return le nombre de lignes affectées ou lID du rappel ajouté
* @throws SQLException si une erreur SQL survient * @throws SQLException si une erreur survient lors de lajout
*/ */
public int ajouter(String titre, String contenu, String theme, int rang) throws SQLException { public int ajouter(String titre, String contenu, String theme, int rang) throws SQLException {
Rappel r = new Rappel(titre, contenu, theme, rang); Rappel r = new Rappel(titre, contenu, theme, rang);
@@ -52,33 +56,33 @@ public class GestionRappel {
} }
/** /**
* Récupère tous les rappels de lutilisateur courant. * Liste tous les rappels appartenant à lutilisateur courant.
* *
* @return la liste des rappels enregistrés * @return la liste des rappels de lutilisateur
* @throws SQLException si une erreur SQL survient * @throws SQLException si une erreur de communication avec la base survient
*/ */
public List<Rappel> lister() throws SQLException { public List<Rappel> lister() throws SQLException {
return RappelBD.listerParUtilisateur(this.utilisateurId); return RappelBD.listerParUtilisateur(this.utilisateurId);
} }
/** /**
* Modifie un rappel existant appartenant à lutilisateur courant. * Modifie un rappel existant à partir de son identifiant.
* *
* @param id lidentifiant du rappel à modifier * @param id lidentifiant du rappel à modifier
* @param r lobjet {@link Rappel} contenant les nouvelles informations * @param r lobjet <code>Rappel</code> contenant les nouvelles valeurs
* @return le nombre de lignes modifiées * @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 { public int modifierParId(int id, Rappel r) throws SQLException {
return RappelBD.modifier(id, r, this.utilisateurId); return RappelBD.modifier(id, r, this.utilisateurId);
} }
/** /**
* Supprime un rappel spécifique appartenant à lutilisateur courant. * Supprime un rappel de la base de données selon son identifiant.
* *
* @param id lidentifiant du rappel à supprimer * @param id lidentifiant du rappel à supprimer
* @return le nombre de lignes supprimées * @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 { public int supprimerParId(int id) throws SQLException {
return RappelBD.supprimer(id, this.utilisateurId); return RappelBD.supprimer(id, this.utilisateurId);
@@ -88,16 +92,16 @@ public class GestionRappel {
* Supprime tous les rappels appartenant à lutilisateur courant. * Supprime tous les rappels appartenant à lutilisateur courant.
* *
* @return le nombre de rappels supprimés * @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 { public int viderTousMesRappels() throws SQLException {
return RappelBD.supprimerToutPourUtilisateur(this.utilisateurId); return RappelBD.supprimerToutPourUtilisateur(this.utilisateurId);
} }
/** /**
* Retourne lidentifiant de lutilisateur courant. * Renvoie lidentifiant de lutilisateur courant.
* *
* @return lidentifiant de lutilisateur * @return lID utilisateur
*/ */
public int getUtilisateurId() { public int getUtilisateurId() {
return this.utilisateurId; return this.utilisateurId;
-2
View File
@@ -5,8 +5,6 @@
* @version 1.0 * @version 1.0
* @author Seri-khane Yolou, Aylane SEHL, Jenson VAL * @author Seri-khane Yolou, Aylane SEHL, Jenson VAL
*/ */
package fr.iutfbleau.papillon;
public class Rappel { public class Rappel {
private int id; private int id;
-2
View File
@@ -1,5 +1,3 @@
package fr.iutfbleau.papillon;
import java.sql.*; import java.sql.*;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
+66 -15
View File
@@ -1,14 +1,38 @@
import java.io.*; import java.io.*;
import java.util.UUID; import java.util.UUID;
/**
* La classe <code>UserKey</code> permet de gérer une clé d'identification locale
* unique pour un utilisateur du logiciel <b>Papillon</b>.
*
* <p>
* Cette clé est stockée dans un fichier caché nommé <code>.papillon_id</code>
* 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.
* </p>
*
* <p>
* Lors du premier lancement du programme, si le fichier nexiste 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.
* </p>
*
* @version 1.0
* @author Seri-khane Yolou, Aylane Sehl, Jenson Val
*/
public class UserKey { public class UserKey {
/** /**
Lit la clé stockée dans le fichier ~/.papillon_id * Lit la clé stockée dans le fichier <code>~/.papillon_id</code>
ou en génère une nouvelle si le fichier n'existe pas. * ou en génère une nouvelle si le fichier n'existe pas ou est vide.
@return La clé utilisateur sous forme de chaîne de caractères *
* <p>Cette méthode est utilisée par {@link GestionRappel} pour associer
* chaque utilisateur à ses données locales.</p>
*
* @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 lutilisateur // Récupère le dossier personnel de lutilisateur
String home = System.getProperty("user.home"); String home = System.getProperty("user.home");
File fichier = new File(home, ".papillon_id"); File fichier = new File(home, ".papillon_id");
@@ -17,9 +41,14 @@ public class UserKey {
try { try {
// Si le fichier existe déjà on lit son contenu // Si le fichier existe déjà on lit son contenu
if (fichier.exists()) { 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); FileReader fr = new FileReader(fichier);
BufferedReader br = new BufferedReader(fr); BufferedReader br = new BufferedReader(fr);
cle = br.readLine(); // lit la première ligne (la clé) cle = br.readLine(); // lit la première ligne (la clé)
br.close(); br.close();
fr.close(); fr.close();
@@ -28,16 +57,8 @@ public class UserKey {
} }
// Sinon, on génère une nouvelle clé et on l’écrit dans le fichier // Sinon, on génère une nouvelle clé et on l’écrit dans le fichier
else { else {
cle = UUID.randomUUID().toString(); // Génère une clé unique cle = genererCle();
ecrireCle(fichier, cle);
FileWriter fw = new FileWriter(fichier);
BufferedWriter bw = new BufferedWriter(fw);
bw.write(cle);
bw.newLine();
bw.close();
fw.close();
System.out.println("Nouvelle clé générée et enregistrée : " + cle); System.out.println("Nouvelle clé générée et enregistrée : " + cle);
} }
@@ -48,4 +69,34 @@ public class UserKey {
return cle; return cle;
} }
/**
* Génère une nouvelle clé unique sous la forme d'un identifiant universel (UUID).
*
* <p>Cette méthode utilise la classe {@link java.util.UUID} pour générer
* une chaîne aléatoire unique et pratiquement impossible à deviner.</p>
*
* @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.
*
* <p>Cette méthode crée le fichier sil nexiste pas, puis enregistre
* la clé passée en paramètre sur la première ligne du fichier.</p>
*
* @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();
}
} }
@@ -5,8 +5,6 @@
* @version 1.0 * @version 1.0
* @author Seri-khane Yolou, Aylane SEHL, Jenson VAL * @author Seri-khane Yolou, Aylane SEHL, Jenson VAL
*/ */
package fr.iutfbleau.papillon;
public class Utilisateur { public class Utilisateur {
private int id; private int id;
+2 -4
View File
@@ -1,4 +1,4 @@
import java.sql.*;
/** /**
* La classe <code>UtilisateurBD</code> gère la table <b>utilisateur</b> * La classe <code>UtilisateurBD</code> gère la table <b>utilisateur</b>
@@ -7,10 +7,8 @@
* et de lire un utilisateur complet via sa clé.</p> * et de lire un utilisateur complet via sa clé.</p>
* *
* @version 1.0 * @version 1.0
* @author Seri-khane Yolou, Aylane SEHL, Jenson VAL * @author Junior
*/ */
package fr.iutfbleau.papillon;
import java.sql.*;
public class UtilisateurBD { public class UtilisateurBD {
/** Identifiant interne de lutilisateur. */ /** Identifiant interne de lutilisateur. */