Files
SAE-PROJET-PAPILLON/src/fr/iutfbleau/papillon/UtilisateurBD.java
2025-10-26 22:42:53 +01:00

85 lines
2.7 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package fr.iutfbleau.papillon;
import java.sql.*;
/**
* La classe <code>UtilisateurBD</code> gère la table <b>utilisateur</b>
* de la base de données.
* <p>Elle permet de créer ou de récupérer un utilisateur à partir dune clé locale,
* et de lire un utilisateur complet via sa clé.</p>
*
* @version 1.0
* @author Seri-khane YOLOU, Aylane SEHL, Jenson VAL
*/
public class UtilisateurBD {
/** Identifiant interne de lutilisateur. */
private static int id;
/**
* Récupère ou crée un utilisateur en fonction de sa clé unique.
*
* @param cle la clé unique associée à lutilisateur
* @return lidentifiant de lutilisateur correspondant
* @throws SQLException si une erreur SQL survient
*/
public static int getOrCreateIdByKey(String cle) throws SQLException {
Connection cnx = BaseDeDonnees.getConnexion();
// Vérifie si un utilisateur existe déjà avec cette clé
String sqlSelect = "SELECT id FROM utilisateur WHERE cle = ?";
PreparedStatement pstSelect = cnx.prepareStatement(sqlSelect);
pstSelect.setString(1, cle);
ResultSet rs = pstSelect.executeQuery();
if (rs.next()) {
id = rs.getInt("id");
} else {
// Sinon on en crée un nouveau
String sqlInsert = "INSERT INTO utilisateur (cle) VALUES (?)";
PreparedStatement pstInsert = cnx.prepareStatement(sqlInsert, Statement.RETURN_GENERATED_KEYS);
pstInsert.setString(1, cle);
pstInsert.executeUpdate();
ResultSet keys = pstInsert.getGeneratedKeys();
if (keys.next()) {
id = keys.getInt(1);
}
keys.close();
pstInsert.close();
}
rs.close();
pstSelect.close();
cnx.close();
return id;
}
/**
* Récupère un utilisateur complet à partir de sa clé.
*
* @param cle la clé unique de lutilisateur
* @return un objet {@link Utilisateur} si trouvé, sinon <code>null</code>
* @throws SQLException si une erreur SQL survient
*/
public static Utilisateur findByKey(String cle) throws SQLException {
Connection cnx = BaseDeDonnees.getConnexion();
String sql = "SELECT id, cle FROM utilisateur WHERE cle = ?";
PreparedStatement pst = cnx.prepareStatement(sql);
pst.setString(1, cle);
ResultSet rs = pst.executeQuery();
Utilisateur u = null;
if (rs.next()) {
u = new Utilisateur(rs.getInt("id"), rs.getString("cle"));
}
rs.close();
pst.close();
cnx.close();
return u;
}
}