fix(DevWeb): Add Javadoc

This commit is contained in:
Lucàs
2024-03-20 17:18:44 +01:00
parent 6229718c4f
commit 07b5bdd926
18 changed files with 656 additions and 130 deletions
@@ -10,9 +10,19 @@ import uppa.project.dao.jpa.Game_JPA_DAO_Factory;
/**
* Factory renvoyant une factory de DAO en fonction du support de persistance choisi
*
* @author Kevin Mitressé
* @author Lucàs Vabre
*/
public class AbstractDAOFactory {
/**
* Renvoie une factory de DAO en fonction du support de persistance choisi
*
* @param type le support de persistance
* @return la factory de DAO
* @see PersistenceKind
*/
public static GameDAOFactory getDAOFactory(PersistenceKind type) {
if (type.equals(PersistenceKind.JPA)) return new Game_JPA_DAO_Factory();
return null;
@@ -6,56 +6,86 @@
package uppa.project.dao;
import jakarta.persistence.TypedQuery;
import java.util.List;
import uppa.project.pojo.User;
import jakarta.persistence.EntityManager;
/**
* DAO abstrait et générique pour tout type de données
*
* @param <D> la classe paramétrant le DAO
* @author Kevin Mitressé
* @author Lucàs Vabre
*/
public abstract class DAO<D> {
public void DAO() throws DAOException {
/**
* Gestionnaire d'entités
*/
protected EntityManager entityManager;
/**
* Constructeur par défaut
*
* @throws DAOException si une erreur survient lors de la création du DAO
*/
public DAO() throws DAOException {
this.entityManager = EntityManagerProvider.getInstance();
}
/**
* Retourne à partir du support de persistance un objet en fonction de son identifiant
* Retourne l'objet {@link D} en fonction de son identifiant
*
* @param id identifiant de l'objet
* @return l'instance de l'objet
* @return l'instance de l'objet {@link D}
* @throws DAOException en cas de problème
* @see D
*/
public abstract D findById(int id) throws DAOException;
/**
* Retourne tous les objets {@link D} paramétrant le DAO
*
* @return un tableau d'objets {@link D}
* @throws DAOException en cas de problème
* @see D
*/
public abstract D[] findAll() throws DAOException;
/**
* Rend persistant un objet qui n'avait pas encore de réprésentation sur le support de persistance
* Rend persistant un objet {@link D} qui n'avait pas encore de réprésentation sur le support de persistance
*
* @param data l'objet à rendre persistant
* @param data l'objet {@link D} à rendre persistant
* @throws DAOException en cas de problème
* @see D
*/
public abstract void create(D data) throws DAOException;
/**
* Met à jour le contenu correspondant à l'objet sur le support persistant (l'objet
* Met à jour le contenu correspondant à l'objet {@link D} sur le support persistant (l'objet
* avait déjà une représentation sur le support persistant)
*
* @param data l'objet modifié dont le contenu est à mettre à jour
* @param data l'objet {@link D} modifié dont le contenu est à mettre à jour
* @throws DAOException en cas de problème
* @see D
*/
public abstract void update(D data) throws DAOException;
/**
* Efface du support persistant le contenu équivalent à l'objet
* Efface du support persistant le contenu équivalent à l'objet {@link D}
*
* @param data l'objet à supprimer
* @param data l'objet {@link D} à supprimer
* @throws DAOException en cas de problème
* @see D
*/
public abstract void delete(D data) throws DAOException;
/**
* Retourne les objets {@link D} paramétrant le DAO en fonction d'un champ et d'une valeur
*
* @param field le champ à rechercher
* @param value la valeur à rechercher
* @return un tableau d'objets {@link D}
* @throws DAOException en cas de problème
* @see D
*/
public abstract D[] findByField(String field, String value) throws DAOException;
}
@@ -8,13 +8,25 @@ package uppa.project.dao;
/**
* Exception spécifique aux problèmes d'accès aux données via un DAO
*
* @author Kevin Mitressé
* @author Lucàs Vabre
* @see DAO
*/
public class DAOException extends Exception {
/**
* Constructeur par défaut
*/
public DAOException() {
super();
}
/**
* Constructeur avec message
*
* @param message le message de l'exception
*/
public DAOException(String message) {
super(message);
}
@@ -0,0 +1,41 @@
/*
* EntityManagerProvider.java, 20/03/2024
* UPPA M1 TI 2023-2024
* Pas de copyright, aucun droits
*/
package uppa.project.dao;
import jakarta.persistence.EntityManager;
import jakarta.persistence.EntityManagerFactory;
import jakarta.persistence.Persistence;
/**
* Fournisseur d'EntityManager
* Permet de récupérer une instance d'EntityManager
* pour les DAO
*
* @see jakarta.persistence.EntityManager
*/
public final class EntityManagerProvider {
private final static String PERSISTANCE_UNIT_NAME = "db";
private static EntityManager instance;
private static EntityManagerFactory factory;
public static EntityManager getInstance() {
if (factory == null) {
factory = Persistence.createEntityManagerFactory(PERSISTANCE_UNIT_NAME);
}
if (instance == null) {
instance = factory.createEntityManager();
}
return instance;
}
public static void close() {
if (instance.isOpen()) instance.close();
if (factory.isOpen()) factory.close();
}
}
@@ -1,33 +1,41 @@
/*
* SportsDAOFactory.java, 09/02/2024
* GameDAOFactory.java, 20/03/2024
* UPPA M1 TI 2023-2024
* Pas de copyright, aucun droits
*/
package uppa.project.dao;
import uppa.project.pojo.*;
import uppa.project.pojo.Game;
import uppa.project.pojo.Player;
import uppa.project.pojo.User;
/**
* Fabrique abstraite de DAO pour le schéma sports
* Fabrique abstraite de DAO pour le schéma du jeu
*
* @author Kevin Mitressé
* @author Lucàs Vabre
*/
public abstract class GameDAOFactory {
/**
* @return le DAO pour la classe/table User
* @throws DAOException en cas de problème
* @see User
*/
public abstract DAO<User> getDAOUser() throws DAOException;
/**
* @return le DAO pour la classe/table Game
* @throws DAOException en cas de problème
* @see Game
*/
public abstract DAO<Game> getDAOGame() throws DAOException;
/**
* @return le DAO pour la classe/table Player
* @throws DAOException en cas de problème
* @see Player
*/
public abstract DAO<Player> getDAOPlayer() throws DAOException;
@@ -1,5 +1,5 @@
/*
* PersistenceKind.java, 09/02/2024
* PersistenceKind.java, 20/03/2024
* UPPA M1 TI 2023-2024
* Pas de copyright, aucun droits
*/
@@ -8,7 +8,12 @@ package uppa.project.dao;
/**
* Type de support de persistance pour les données
*
* @author Kevin Mitressé
* @author Lucàs Vabre
*
* @see AbstractDAOFactory
*/
public enum PersistenceKind {
JDBC, JPA, XML
JPA
}
@@ -1,30 +1,45 @@
/**
* DAO_JPA_Game.java, 20/03/2024
* UPPA M1 TI 2023-2024
* Pas de copyright, aucun droits
*/
package uppa.project.dao.jpa;
import jakarta.persistence.EntityManager;
import jakarta.persistence.TypedQuery;
import java.math.BigDecimal;
import java.util.List;
import uppa.project.EntityManagerProvider;
import uppa.project.dao.DAO;
import uppa.project.dao.DAOException;
import uppa.project.pojo.Game;
import uppa.project.pojo.User;
/**
* DAO pour les parties de jeu
*
* @author Kevin Mitressé
* @author Lucàs Vabre
* @see Game
* @see DAO
*/
public class DAO_JPA_Game extends DAO<Game> {
private final EntityManager entityManager;
/**
* Constructeur par défaut
*
* @throws DAOException si une erreur survient lors de la création du DAO
*/
public DAO_JPA_Game() throws DAOException {
this.entityManager = EntityManagerProvider.getInstance();
super();
}
@Override
public Game findById(int id) throws DAOException {
Game result = entityManager.find(Game.class, new BigDecimal(id));
Game result = entityManager.find(Game.class, new BigDecimal(id));
entityManager.flush();
return result;
}
@Override
public Game[] findByField(String field, String value) throws DAOException {
TypedQuery<Game> query = entityManager.createQuery("SELECT u FROM Game u WHERE ?1=?2", Game.class);
query.setParameter(1, field);
@@ -1,21 +1,30 @@
/*
* DAO_JPA_Player.java, 20/03/2024
* UPPA M1 TI 2023-2024
* Pas de copyright, aucun droits
*/
package uppa.project.dao.jpa;
import jakarta.persistence.EntityManager;
import jakarta.persistence.TypedQuery;
import java.math.BigDecimal;
import java.util.List;
import uppa.project.EntityManagerProvider;
import uppa.project.dao.DAO;
import uppa.project.dao.DAOException;
import uppa.project.pojo.Player;
import uppa.project.pojo.User;
/**
* DAO pour les joueurs
*
* @author Kévin Mitresse
* @author Lucàs Vabre
* @see Player
* @see DAO
*/
public class DAO_JPA_Player extends DAO<Player> {
private final EntityManager entityManager;
public DAO_JPA_Player() throws DAOException {
this.entityManager = EntityManagerProvider.getInstance();
super();
}
@Override
@@ -25,6 +34,7 @@ public class DAO_JPA_Player extends DAO<Player> {
return result;
}
@Override
public Player[] findByField(String field, String value) throws DAOException {
TypedQuery<Player> query = entityManager.createQuery("SELECT p FROM Player p WHERE ?1=?2", Player.class);
query.setParameter(1, field);
@@ -1,20 +1,30 @@
/*
* DAO_JPA_User.java, 20/03/2024
* UPPA M1 TI 2023-2024
* Pas de copyright, aucun droits
*/
package uppa.project.dao.jpa;
import jakarta.persistence.EntityManager;
import jakarta.persistence.TypedQuery;
import java.math.BigDecimal;
import java.util.List;
import uppa.project.dao.DAO;
import uppa.project.dao.DAOException;
import uppa.project.EntityManagerProvider;
import uppa.project.pojo.User;
/**
* DAO pour les utilisateurs
*
* @author Kévin Mitresse
* @author Lucàs Vabre
* @see User
* @see DAO
*/
public class DAO_JPA_User extends DAO<User> {
private final EntityManager entityManager;
public DAO_JPA_User() throws DAOException {
this.entityManager = EntityManagerProvider.getInstance();
super();
}
@Override
@@ -13,13 +13,26 @@ import uppa.project.dao.GameDAOFactory;
/**
* Fabrique concrète de DAO pour le schéma relationnel sports avec une implémentation en JDBC.
*
* @author Kevin Mitressé
* @author Lucàs Vabre
* @see GameDAOFactory
*/
public class Game_JPA_DAO_Factory extends GameDAOFactory {
/**
* DAO pour les utilisateurs
*/
private DAO_JPA_User daoUser = null;
/**
* DAO pour les parties
*/
private DAO_JPA_Game daoGame = null;
/**
* DAO pour les joueurs
*/
private DAO_JPA_Player daoPlayer = null;
@Override