mirror of
https://github.com/kmitresse/Cards-Rush.git
synced 2026-05-16 09:05:28 +00:00
fix(DevWeb): Add Javadoc
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user