From b9c08fa6cc345922e4a816aa4c6f2c9372fde918 Mon Sep 17 00:00:00 2001 From: kmitresse Date: Wed, 1 May 2024 09:46:28 +0200 Subject: [PATCH] fix: devWeb - Display game when game end --- .../java/uppa/project/bean/PlayerBean.java | 39 +++++++++++++++++++ .../java/uppa/project/database/pojo/Game.java | 2 +- .../uppa/project/web/websocket/GameWS.java | 9 +++-- 3 files changed, 46 insertions(+), 4 deletions(-) create mode 100644 S2/DevWeb/Projet/src/main/java/uppa/project/bean/PlayerBean.java diff --git a/S2/DevWeb/Projet/src/main/java/uppa/project/bean/PlayerBean.java b/S2/DevWeb/Projet/src/main/java/uppa/project/bean/PlayerBean.java new file mode 100644 index 0000000..ab93ba7 --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/bean/PlayerBean.java @@ -0,0 +1,39 @@ +package uppa.project.bean; + +import jakarta.persistence.EntityManager; +import uppa.project.database.dao.DAO; +import uppa.project.database.dao.DAOException; +import uppa.project.database.dao.EntityManagerProvider; +import uppa.project.database.dao.jpa.Game_JPA_DAO_Factory; +import uppa.project.database.pojo.Player; + +public class PlayerBean { + private Player player; + + public PlayerBean(Player player){ + this.player = player; + } + + public boolean validate(){ + EntityManager em = EntityManagerProvider.getInstance(); + em.getTransaction().begin(); + try{ + DAO playerDAO = new Game_JPA_DAO_Factory().getDAOPlayer(); + Player dbPlayer = new Player(player.getGame(),player.getUser()); + dbPlayer.setScore(player.getScore()); + if (player.isWinner()) dbPlayer.setWinner(); + dbPlayer.setClickCount(player.getClickCount()); + dbPlayer.setRapidClickCount(player.getRapidClickCount()); + dbPlayer.setRightClickCount(player.getRightClickCount()); + player.getGame().addPlayer(dbPlayer); + player.getUser().addPlayedGame(dbPlayer); + playerDAO.create(dbPlayer); + em.getTransaction().commit(); + return true; + } catch (DAOException e) { + System.out.println("Player :" + this.player.getUser().getUsername() +"n'a pas pu être enregistré en base de données"); + em.getTransaction().rollback(); + return false; + } + } +} diff --git a/S2/DevWeb/Projet/src/main/java/uppa/project/database/pojo/Game.java b/S2/DevWeb/Projet/src/main/java/uppa/project/database/pojo/Game.java index 204aec9..4373cf4 100644 --- a/S2/DevWeb/Projet/src/main/java/uppa/project/database/pojo/Game.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/database/pojo/Game.java @@ -151,7 +151,7 @@ public class Game implements Serializable { @Override public int hashCode() { - return Objects.hash(id, createdAt, players); + return Objects.hash(id, createdAt); } /** diff --git a/S2/DevWeb/Projet/src/main/java/uppa/project/web/websocket/GameWS.java b/S2/DevWeb/Projet/src/main/java/uppa/project/web/websocket/GameWS.java index dfe1b6a..e27b6e4 100644 --- a/S2/DevWeb/Projet/src/main/java/uppa/project/web/websocket/GameWS.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/web/websocket/GameWS.java @@ -12,6 +12,7 @@ import jakarta.websocket.server.ServerEndpoint; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import uppa.project.bean.PlayerBean; import uppa.project.database.dao.DAO; import uppa.project.database.dao.DAOException; import uppa.project.database.dao.EntityManagerProvider; @@ -227,10 +228,12 @@ public class GameWS { theoricWinner.setWinner(); EntityManager em = EntityManagerProvider.getFactory().createEntityManager(); - DAO playerDAO = new Game_JPA_DAO_Factory().getDAOPlayer(); - em.getTransaction().begin(); - for (Player p : games.get(game)) playerDAO.create(p); + for (Player p : games.get(game)) { + PlayerBean playerBean = new PlayerBean(p); + if (playerBean.validate()) System.out.println("Player "+p.getUser().getUsername()+" sauvegardé en base de données"); + else System.out.println(""); + }; em.getTransaction().commit(); em.close();