diff --git a/S2/DevWeb/Projet/README.md b/S2/DevWeb/Projet/README.md new file mode 100644 index 0000000..ce76548 --- /dev/null +++ b/S2/DevWeb/Projet/README.md @@ -0,0 +1,11 @@ +# Projet Développent Web - 2024 + +## Installation + +Pour pouvoir lancer le projet, il vous faut avoir docker et maven d'installé sur votre machine. + +Lancez les commandes suivantes pour installer le projet : +```` +docker-compose up -d +mvn install +```` \ No newline at end of file diff --git a/S2/DevWeb/Projet/mysql/init.sql b/S2/DevWeb/Projet/mysql/init.sql index ad3d0d6..fecf4e0 100644 --- a/S2/DevWeb/Projet/mysql/init.sql +++ b/S2/DevWeb/Projet/mysql/init.sql @@ -2,37 +2,38 @@ CREATE DATABASE IF NOT EXISTS db; USE db; -- Table: User -CREATE TABLE IF NOT EXISTS User +CREATE TABLE IF NOT EXISTS `user` ( - id_user INT NOT NULL AUTO_INCREMENT, - username VARCHAR(255) NOT NULL, + id INT NOT NULL AUTO_INCREMENT, + username VARCHAR(255) NOT NULL UNIQUE, password VARCHAR(255) NOT NULL, - birth_date DATE NOT NULL, - sexe VARCHAR(255) NOT NULL, - PRIMARY KEY (id_user) + gender VARCHAR(255) NOT NULL, + birth DATE NOT NULL, + PRIMARY KEY (id) ); -- Table: Game -CREATE TABLE IF NOT EXISTS Game -( - id_game INT NOT NULL AUTO_INCREMENT, - date DATE NOT NULL, - starting_time TIME NOT NULL, - PRIMARY KEY (id_game) +CREATE TABLE IF NOT EXISTS game +( + id INT NOT NULL AUTO_INCREMENT, + created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, + PRIMARY KEY (id) ); -CREATE TABLE IF NOT EXISTS Player +CREATE TABLE IF NOT EXISTS player ( - id_player INT NOT NULL AUTO_INCREMENT, - id_game INT NOT NULL, - id_user INT NOT NULL, - score INT NOT NULL, - winner BOOLEAN NOT NULL, - nb_clicks INT NOT NULL, - nb_good_clicks INT NOT NULL, - nb_rapid_clicks INT NOT NULL, - PRIMARY KEY (id_player), - FOREIGN KEY (id_game) REFERENCES Game (id_game), - FOREIGN KEY (id_user) REFERENCES User (id_user) -) + id INT NOT NULL AUTO_INCREMENT, + game_id INT NOT NULL, + user_id INT NOT NULL, + + score INT NOT NULL, + winner BOOLEAN NOT NULL, + click_count INT NOT NULL, + right_click_count INT NOT NULL, + rapid_click_count INT NOT NULL, + + PRIMARY KEY (id), + FOREIGN KEY (game_id) REFERENCES game (id), + FOREIGN KEY (user_id) REFERENCES `user` (id) +); diff --git a/S2/DevWeb/Projet/pom.xml b/S2/DevWeb/Projet/pom.xml index 2eaa3eb..b5702d1 100644 --- a/S2/DevWeb/Projet/pom.xml +++ b/S2/DevWeb/Projet/pom.xml @@ -1,13 +1,14 @@ - 4.0.0 - tp4 - Project + uppa + project 1.0-SNAPSHOT - TP4_mysql_2 + Projet + war UTF-8 @@ -17,35 +18,42 @@ + + jakarta.platform + jakarta.jakartaee-web-api + 9.1.0 + provided + org.eclipse.persistence org.eclipse.persistence.jpa - 3.0.2 + 3.0.4 - mysql mysql-connector-java - 8.0.12 + 8.0.27 - org.junit.jupiter junit-jupiter-api ${junit.version} test - - - org.junit.jupiter - junit-jupiter-engine - ${junit.version} - test - - + + org.junit.jupiter + junit-jupiter-engine + ${junit.version} + test + - + + + org.apache.maven.plugins + maven-war-plugin + 3.3.2 + - + \ No newline at end of file diff --git a/S2/DevWeb/Projet/src/main/java/project/Main.java b/S2/DevWeb/Projet/src/main/java/project/Main.java deleted file mode 100644 index 9159c23..0000000 --- a/S2/DevWeb/Projet/src/main/java/project/Main.java +++ /dev/null @@ -1,51 +0,0 @@ -package project; - -import java.util.Calendar; -import project.dao.DAO; -import project.dao.DAOException; -import project.dao.jpa.Game_JPA_DAO_Factory; -import project.pojo.Game; -import project.pojo.Player; -import project.pojo.User; - -public class Main { - - public static void main(String[] args) { - try { - Game_JPA_DAO_Factory jpaDaoFactory = new Game_JPA_DAO_Factory(); - DAO daoJpaUser = jpaDaoFactory.getDAOUser(); - DAO daoJpaGame = jpaDaoFactory.getDAOGame(); - DAO daoJpaPlayer = jpaDaoFactory.getDAOPlayer(); - - // Contenu de la BD au début - User[] users = daoJpaUser.findAll(); - for (User u : users) { - System.out.println(u.toString()); - } - System.out.println(); - - // Ajout d'un joueur : - Calendar calendarUser1 = Calendar.getInstance(); - calendarUser1.set(1996,Calendar.FEBRUARY,20); - - User user1 = new User("Kevin", "Mitresse", calendarUser1.getTime(), User.Sexe.HOMME); - - Calendar calendarUser2 = Calendar.getInstance(); - calendarUser2.set(2002,Calendar.JUNE,28); - - User user2 = new User("Lucàs", "Vabre", calendarUser1.getTime(), User.Sexe.HOMME); - - users = daoJpaUser.findAll(); - for (User u : users) { - System.out.println(u.toString()); - } - System.out.println(); - - EntityManagerProvider.close(); - } catch (DAOException e) { - e.printStackTrace(); - } catch (Exception e) { - System.out.println("Error : : : : "); - } - } -} diff --git a/S2/DevWeb/Projet/src/main/java/project/EntityManagerProvider.java b/S2/DevWeb/Projet/src/main/java/uppa/project/EntityManagerProvider.java similarity index 88% rename from S2/DevWeb/Projet/src/main/java/project/EntityManagerProvider.java rename to S2/DevWeb/Projet/src/main/java/uppa/project/EntityManagerProvider.java index 8b22a69..828b5b2 100644 --- a/S2/DevWeb/Projet/src/main/java/project/EntityManagerProvider.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/EntityManagerProvider.java @@ -1,4 +1,4 @@ -package project; +package uppa.project; import jakarta.persistence.EntityManager; import jakarta.persistence.EntityManagerFactory; @@ -8,7 +8,7 @@ public final class EntityManagerProvider { private static EntityManager instance; private static EntityManagerFactory factory; - private final static String PERSISTANCE_UNIT_NAME = "default"; + private final static String PERSISTANCE_UNIT_NAME = "db"; public static EntityManager getInstance() { if (factory == null) { diff --git a/S2/DevWeb/Projet/src/main/java/uppa/project/Main.java b/S2/DevWeb/Projet/src/main/java/uppa/project/Main.java new file mode 100644 index 0000000..2d08219 --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/Main.java @@ -0,0 +1,50 @@ +package uppa.project; + +import java.util.Calendar; +import uppa.project.dao.DAO; +import uppa.project.dao.jpa.Game_JPA_DAO_Factory; +import uppa.project.pojo.Game; +import uppa.project.pojo.Player; +import uppa.project.pojo.User; + +public class Main { + + public static void main(String[] args) { + try { + Game_JPA_DAO_Factory jpaDaoFactory = new Game_JPA_DAO_Factory(); + DAO daoJpaUser = jpaDaoFactory.getDAOUser(); +// DAO daoJpaGame = jpaDaoFactory.getDAOGame(); +// DAO daoJpaPlayer = jpaDaoFactory.getDAOPlayer(); + + // Contenu de la BD au début + User[] users = daoJpaUser.findAll(); + for (User u : users) { + System.out.println(u.toString()); + } + System.out.println(); + + // Ajout d'User : + Calendar cal1 = Calendar.getInstance(); + cal1.set(1996, Calendar.FEBRUARY, 20); + User user1 = new User("Kevin", "Mitresse", cal1.getTime(), User.Gender.MALE); + + Calendar cal2 = Calendar.getInstance(); + cal2.set(2002, Calendar.JUNE, 28); + User user2 = new User("Lucàs", "Vabre", cal2.getTime(), User.Gender.MALE); + + daoJpaUser.create(user1); + daoJpaUser.create(user2); + + // Contenu de la BD après ajout + users = daoJpaUser.findAll(); + for (User u : users) { + System.out.println(u.toString()); + } + System.out.println(); + + EntityManagerProvider.close(); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/S2/DevWeb/Projet/src/main/java/project/dao/AbstractDAOFactory.java b/S2/DevWeb/Projet/src/main/java/uppa/project/dao/AbstractDAOFactory.java similarity index 84% rename from S2/DevWeb/Projet/src/main/java/project/dao/AbstractDAOFactory.java rename to S2/DevWeb/Projet/src/main/java/uppa/project/dao/AbstractDAOFactory.java index 729d2ff..b58c0df 100644 --- a/S2/DevWeb/Projet/src/main/java/project/dao/AbstractDAOFactory.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/dao/AbstractDAOFactory.java @@ -4,9 +4,9 @@ * Pas de copyright, aucun droits */ -package project.dao; +package uppa.project.dao; -import project.dao.jpa.Game_JPA_DAO_Factory; +import uppa.project.dao.jpa.Game_JPA_DAO_Factory; /** * Factory renvoyant une factory de DAO en fonction du support de persistance choisi diff --git a/S2/DevWeb/Projet/src/main/java/project/dao/DAO.java b/S2/DevWeb/Projet/src/main/java/uppa/project/dao/DAO.java similarity index 98% rename from S2/DevWeb/Projet/src/main/java/project/dao/DAO.java rename to S2/DevWeb/Projet/src/main/java/uppa/project/dao/DAO.java index 5596f20..56ed1c1 100644 --- a/S2/DevWeb/Projet/src/main/java/project/dao/DAO.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/dao/DAO.java @@ -4,7 +4,7 @@ * Pas de copyright, aucun droits */ -package project.dao; +package uppa.project.dao; /** * DAO abstrait et générique pour tout type de données diff --git a/S2/DevWeb/Projet/src/main/java/project/dao/DAOException.java b/S2/DevWeb/Projet/src/main/java/uppa/project/dao/DAOException.java similarity index 92% rename from S2/DevWeb/Projet/src/main/java/project/dao/DAOException.java rename to S2/DevWeb/Projet/src/main/java/uppa/project/dao/DAOException.java index 93c4712..a665b06 100644 --- a/S2/DevWeb/Projet/src/main/java/project/dao/DAOException.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/dao/DAOException.java @@ -4,7 +4,7 @@ * Pas de copyright, aucun droits */ -package project.dao; +package uppa.project.dao; /** * Exception spécifique aux problèmes d'accès aux données via un DAO diff --git a/S2/DevWeb/Projet/src/main/java/project/dao/GameDAOFactory.java b/S2/DevWeb/Projet/src/main/java/uppa/project/dao/GameDAOFactory.java similarity index 92% rename from S2/DevWeb/Projet/src/main/java/project/dao/GameDAOFactory.java rename to S2/DevWeb/Projet/src/main/java/uppa/project/dao/GameDAOFactory.java index 7aa518b..c6bcde4 100644 --- a/S2/DevWeb/Projet/src/main/java/project/dao/GameDAOFactory.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/dao/GameDAOFactory.java @@ -4,9 +4,9 @@ * Pas de copyright, aucun droits */ -package project.dao; +package uppa.project.dao; -import project.pojo.*; +import uppa.project.pojo.*; /** * Fabrique abstraite de DAO pour le schéma sports diff --git a/S2/DevWeb/Projet/src/main/java/project/dao/PersistenceKind.java b/S2/DevWeb/Projet/src/main/java/uppa/project/dao/PersistenceKind.java similarity index 89% rename from S2/DevWeb/Projet/src/main/java/project/dao/PersistenceKind.java rename to S2/DevWeb/Projet/src/main/java/uppa/project/dao/PersistenceKind.java index d11bf74..9369df6 100644 --- a/S2/DevWeb/Projet/src/main/java/project/dao/PersistenceKind.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/dao/PersistenceKind.java @@ -4,7 +4,7 @@ * Pas de copyright, aucun droits */ -package project.dao; +package uppa.project.dao; /** * Type de support de persistance pour les données diff --git a/S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_Game.java b/S2/DevWeb/Projet/src/main/java/uppa/project/dao/jpa/DAO_JPA_Game.java similarity index 87% rename from S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_Game.java rename to S2/DevWeb/Projet/src/main/java/uppa/project/dao/jpa/DAO_JPA_Game.java index bc2486f..a87fcc3 100644 --- a/S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_Game.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/dao/jpa/DAO_JPA_Game.java @@ -1,13 +1,13 @@ -package project.dao.jpa; +package uppa.project.dao.jpa; import jakarta.persistence.EntityManager; import jakarta.persistence.TypedQuery; import java.math.BigDecimal; import java.util.List; -import project.EntityManagerProvider; -import project.dao.DAO; -import project.dao.DAOException; -import project.pojo.Game; +import uppa.project.EntityManagerProvider; +import uppa.project.dao.DAO; +import uppa.project.dao.DAOException; +import uppa.project.pojo.Game; public class DAO_JPA_Game extends DAO { diff --git a/S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_Player.java b/S2/DevWeb/Projet/src/main/java/uppa/project/dao/jpa/DAO_JPA_Player.java similarity index 88% rename from S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_Player.java rename to S2/DevWeb/Projet/src/main/java/uppa/project/dao/jpa/DAO_JPA_Player.java index 8da155d..e82200b 100644 --- a/S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_Player.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/dao/jpa/DAO_JPA_Player.java @@ -1,13 +1,13 @@ -package project.dao.jpa; +package uppa.project.dao.jpa; import jakarta.persistence.EntityManager; import jakarta.persistence.TypedQuery; import java.math.BigDecimal; import java.util.List; -import project.EntityManagerProvider; -import project.dao.DAO; -import project.dao.DAOException; -import project.pojo.Player; +import uppa.project.EntityManagerProvider; +import uppa.project.dao.DAO; +import uppa.project.dao.DAOException; +import uppa.project.pojo.Player; public class DAO_JPA_Player extends DAO { diff --git a/S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_User.java b/S2/DevWeb/Projet/src/main/java/uppa/project/dao/jpa/DAO_JPA_User.java similarity index 87% rename from S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_User.java rename to S2/DevWeb/Projet/src/main/java/uppa/project/dao/jpa/DAO_JPA_User.java index 647fca7..8f882d9 100644 --- a/S2/DevWeb/Projet/src/main/java/project/dao/jpa/DAO_JPA_User.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/dao/jpa/DAO_JPA_User.java @@ -1,13 +1,13 @@ -package project.dao.jpa; +package uppa.project.dao.jpa; import jakarta.persistence.EntityManager; import jakarta.persistence.TypedQuery; import java.math.BigDecimal; import java.util.List; -import project.dao.DAO; -import project.dao.DAOException; -import project.EntityManagerProvider; -import project.pojo.User; +import uppa.project.dao.DAO; +import uppa.project.dao.DAOException; +import uppa.project.EntityManagerProvider; +import uppa.project.pojo.User; public class DAO_JPA_User extends DAO { diff --git a/S2/DevWeb/Projet/src/main/java/project/dao/jpa/Game_JPA_DAO_Factory.java b/S2/DevWeb/Projet/src/main/java/uppa/project/dao/jpa/Game_JPA_DAO_Factory.java similarity index 83% rename from S2/DevWeb/Projet/src/main/java/project/dao/jpa/Game_JPA_DAO_Factory.java rename to S2/DevWeb/Projet/src/main/java/uppa/project/dao/jpa/Game_JPA_DAO_Factory.java index 90c0903..d25dc75 100644 --- a/S2/DevWeb/Projet/src/main/java/project/dao/jpa/Game_JPA_DAO_Factory.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/dao/jpa/Game_JPA_DAO_Factory.java @@ -4,12 +4,12 @@ * Pas de copyright, aucun droits */ -package project.dao.jpa; +package uppa.project.dao.jpa; -import project.dao.DAO; -import project.pojo.*; -import project.dao.DAOException; -import project.dao.GameDAOFactory; +import uppa.project.dao.DAO; +import uppa.project.pojo.*; +import uppa.project.dao.DAOException; +import uppa.project.dao.GameDAOFactory; /** * Fabrique concrète de DAO pour le schéma relationnel sports avec une implémentation en JDBC. diff --git a/S2/DevWeb/Projet/src/main/java/project/pojo/Card.java b/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Card.java similarity index 70% rename from S2/DevWeb/Projet/src/main/java/project/pojo/Card.java rename to S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Card.java index 302f3b8..045e673 100644 --- a/S2/DevWeb/Projet/src/main/java/project/pojo/Card.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Card.java @@ -1,13 +1,13 @@ -package project.pojo; +package uppa.project.pojo; public class Card { - public enum Color{coeur, carreau, pique, trèfle} + public enum Color{coeur, carreau, pique, trefle} public enum Value{un, deux, trois, quatre, cinq, six, sept, huit, neuf, dix, valet, dame, roi} - private Color color; + private final Color color; - private Value value; + private final Value value; public Card(Color color, Value value) { this.color = color; diff --git a/S2/DevWeb/Projet/src/main/java/project/pojo/Deck.java b/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Deck.java similarity index 95% rename from S2/DevWeb/Projet/src/main/java/project/pojo/Deck.java rename to S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Deck.java index 8f338fb..cd595f1 100644 --- a/S2/DevWeb/Projet/src/main/java/project/pojo/Deck.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Deck.java @@ -1,4 +1,4 @@ -package project.pojo; +package uppa.project.pojo; import java.util.ArrayList; import java.util.Collections; diff --git a/S2/DevWeb/Projet/src/main/java/project/pojo/Game.java b/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Game.java similarity index 64% rename from S2/DevWeb/Projet/src/main/java/project/pojo/Game.java rename to S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Game.java index d2312ba..75b9494 100644 --- a/S2/DevWeb/Projet/src/main/java/project/pojo/Game.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Game.java @@ -1,4 +1,4 @@ -package project.pojo; +package uppa.project.pojo; import jakarta.persistence.CascadeType; import jakarta.persistence.Column; @@ -23,52 +23,30 @@ import java.util.Set; public class Game implements Serializable { @Id - @Column(name = "id_game") + @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) private BigDecimal id; - @Temporal(TemporalType.DATE) - @Column(name="date") - private Date date; - @Temporal(TemporalType.TIMESTAMP) - @Column(name="starting_time") - private Timestamp startTime; + @Column(name="created_at") + private Date createdAt; @OneToMany(mappedBy = "game", cascade = CascadeType.ALL, fetch = FetchType.LAZY) private Set players; public Game() { - - } - - public Game(Date date, Timestamp startTime) { - this.date = date; - this.startTime = startTime; } @Override public int hashCode() { - return Objects.hash(id, date); + return Objects.hash(id, createdAt, players); } public BigDecimal getId() { return id; } - public Date getDate() { - return date; - } - - public void setDate(Date date) { - this.date = date; - } - - public Timestamp getStartTime() { - return startTime; - } - - public void setStartTime(Timestamp startTime) { - this.startTime = startTime; + public Date getCreatedAt() { + return createdAt; } public Set getPlayers() { @@ -87,10 +65,6 @@ public class Game implements Serializable { @Override public String toString() { - return "Game{" + - "id=" + id + - ", date=" + date + - ", players=" + players + - '}'; + return String.format("Game{id=%s, createdAt=%s, players=%s}", id.toString(), createdAt, players); } } diff --git a/S2/DevWeb/Projet/src/main/java/project/pojo/Player.java b/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Player.java similarity index 51% rename from S2/DevWeb/Projet/src/main/java/project/pojo/Player.java rename to S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Player.java index dd8bfb8..8f95259 100644 --- a/S2/DevWeb/Projet/src/main/java/project/pojo/Player.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/Player.java @@ -1,4 +1,4 @@ -package project.pojo; +package uppa.project.pojo; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -17,16 +17,16 @@ import java.util.Objects; public class Player implements Serializable { @Id - @Column(name = "id_player") + @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) private BigDecimal id; @ManyToOne - @JoinColumn(name = "id_game", nullable = false) + @JoinColumn(name = "game_id", nullable = false) private Game game; @ManyToOne - @JoinColumn(name = "id_user", nullable = false) + @JoinColumn(name = "user_id", nullable = false) private User user; @Column(name = "score") @@ -35,14 +35,14 @@ public class Player implements Serializable { @Column(name = "winner") private boolean winner; - @Column(name = "nb_clicks") - private int nbClicks; + @Column(name = "click_count") + private int clickCount; - @Column(name = "nb_right_clicks") - private int nbRightClicks; + @Column(name = "right_click_count") + private int rightClickCount; - @Column(name = "nb_rapid_clicks") - private int nbRapidClick; + @Column(name = "rapid_click_count") + private int rapidClickCount; public Player() { @@ -53,24 +53,24 @@ public class Player implements Serializable { this.user = user; this.score = 0; this.winner = false; - this.nbClicks = 0; - this.nbRightClicks = 0; - this.nbRapidClick = 0; + this.clickCount = 0; + this.rightClickCount = 0; + this.rapidClickCount = 0; } - public Player(Game game, User user, int score, boolean winner, int nbClicks, int nbRightClicks, int nbRapidClick) { + public Player(Game game, User user, int score, boolean winner, int clickCount, int rightClickCount, int rapidClickCount) { this.game = game; this.user = user; this.score = score; this.winner = winner; - this.nbClicks = nbClicks; - this.nbRightClicks = nbRightClicks; - this.nbRapidClick = nbRapidClick; + this.clickCount = clickCount; + this.rightClickCount = rightClickCount; + this.rapidClickCount = rapidClickCount; } @Override public int hashCode() { - return Objects.hash(game, user, score, winner, nbClicks, nbRightClicks, nbRapidClick); + return Objects.hash(game, user, score, winner, clickCount, rightClickCount, rapidClickCount); } public Game getGame() { @@ -107,51 +107,43 @@ public class Player implements Serializable { this.winner = true; } - public int getNbClicks() { - return nbClicks; + public int getClickCount() { + return clickCount; } - public void setNbClicks(int nbClicks) { - this.nbClicks = nbClicks; + public void setClickCount(int clickCount) { + this.clickCount = clickCount; } - public void addClick() { - this.nbClicks++; + public void incrementClickCount() { + clickCount++; } - public int getNbRightClicks() { - return nbRightClicks; + public int getRightClickCount() { + return rightClickCount; } - public void setNbRightClicks(int nbRightClicks) { - this.nbRightClicks = nbRightClicks; + public void setRightClickCount(int rightClickCount) { + this.rightClickCount = rightClickCount; } - public void addRightClick() { - this.nbRapidClick++; + public void incrementRightClickCount() { + rightClickCount++; } - public int getNbRapidClick() { - return nbRapidClick; + public int getRapidClickCount() { + return rapidClickCount; } - public void setNbRapidClick(int nbRapidClick) { - this.nbRapidClick = nbRapidClick; + public void setRapidClickCount(int rapidClickCount) { + this.rapidClickCount = rapidClickCount; } - public void addRapidClick() { - this.nbRapidClick++; + public void incrementRapidClickCount() { + rapidClickCount++; } @Override public String toString() { - return "Player{" + - "game=" + game + - ", user=" + user + - ", score=" + score + - ", winner=" + winner + - ", nbClicks=" + nbClicks + - ", nbRightClicks=" + nbRightClicks + - ", nbRapidClick=" + nbRapidClick + - '}'; + return String.format("Player{id=%s, game=%s, user=%s, score=%d, winner=%b, clickCount=%d, rightClickCount=%d, rapidClickCount=%d}", id.toString(), game.toString(), user.toString(), score, winner, clickCount, rightClickCount, rapidClickCount); } } diff --git a/S2/DevWeb/Projet/src/main/java/project/pojo/User.java b/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/User.java similarity index 68% rename from S2/DevWeb/Projet/src/main/java/project/pojo/User.java rename to S2/DevWeb/Projet/src/main/java/uppa/project/pojo/User.java index 0b1b35e..a813c22 100644 --- a/S2/DevWeb/Projet/src/main/java/project/pojo/User.java +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/pojo/User.java @@ -1,4 +1,4 @@ -package project.pojo; +package uppa.project.pojo; import jakarta.persistence.CascadeType; import jakarta.persistence.Column; @@ -15,45 +15,41 @@ import jakarta.persistence.Temporal; import jakarta.persistence.TemporalType; import java.io.Serializable; import java.math.BigDecimal; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; import java.util.Date; import java.util.Objects; import java.util.Set; -import java.security.MessageDigest; -import java.security.NoSuchAlgorithmException; + @Entity @Table(name = "user") public class User implements Serializable { - public enum Sexe {FEMME, HOMME, NONBINAIRE}; - @Id - @Column(name = "id_user") + @Column(name = "id") @GeneratedValue(strategy = GenerationType.IDENTITY) private BigDecimal id; @Column(name = "username") private String username; - @Column(name = "password") private String password; - @Temporal(TemporalType.DATE) - @Column(name = "birth_date") - private Date bithDate; - - @Column(name = "sexe") - @Enumerated( EnumType.STRING) - private Sexe sexe; + @Column(name = "birth") + private Date birth; + @Column(name = "gender") + @Enumerated(EnumType.STRING) + private Gender gender; @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY) private Set playedGame; - public User() {} - public User(String username, String password, Date birthDate, Sexe sexe) { - this.username = username; - String hashedPassword = hashPassword(password); - this.password = hashedPassword; - this.bithDate = birthDate; - this.sexe = sexe; + public User() { + } + public User(String username, String password, Date birth, Gender gender) { + this.username = username; + this.password = hashPassword(password); + this.birth = birth; + this.gender = gender; } public User(BigDecimal id, String username, String password) { @@ -64,11 +60,13 @@ public class User implements Serializable { @Override public int hashCode() { - return Objects.hash(id, username, password, bithDate, sexe); + return Objects.hash(id, username, password, birth, gender); } - public BigDecimal getId(){ + + public BigDecimal getId() { return id; } + public String getUsername() { return username; } @@ -82,29 +80,30 @@ public class User implements Serializable { } public void setPassword(String password) { - String hashedPassword = hashPassword(password); - this.password = hashedPassword; + this.password = hashPassword(password); } - public Date getBithDate() { - return bithDate; + public Date getBirth() { + return birth; } - public void setBithDate(Date bithDate) { - this.bithDate = bithDate; + public void setBirth(Date birth) { + this.birth = birth; } - public Sexe getSexe() { - return sexe; + public Gender getGender() { + return gender; } - public void setSexe(Sexe sexe) { - this.sexe = sexe; + public void setGender(Gender gender) { + this.gender = gender; } - public int getAge(){ - //TODO: Implement this function - return 1; + public int getAge() { + Date currentDate = new Date(); + long diff = currentDate.getTime() - birth.getTime(); + long diffDays = diff / (24 * 60 * 60 * 1000); + return (int) (diffDays / 365); } private String hashPassword(String password) { @@ -134,11 +133,8 @@ public class User implements Serializable { @Override public String toString() { - return "User{" + - "id=" + id + - ", username='" + username + '\'' + - ", age=" + getAge() + - ", sexe=" + sexe + - '}'; + return String.format("User{id=%s, username='%s', birth=%s, gender=%s}", id.toString(), username, birth.toString(), gender.toString()); } + + public enum Gender {MALE, FEMALE, OTHER} } diff --git a/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/HelloServlet.java b/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/HelloServlet.java new file mode 100644 index 0000000..5686113 --- /dev/null +++ b/S2/DevWeb/Projet/src/main/java/uppa/project/servlet/HelloServlet.java @@ -0,0 +1,27 @@ +package uppa.project.servlet; + +import java.io.*; +import jakarta.servlet.http.*; +import jakarta.servlet.annotation.*; + +@WebServlet(name = "helloServlet", value = "/hello-servlet") +public class HelloServlet extends HttpServlet { + private String message; + + public void init() { + message = "Hello World!"; + } + + public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException { + response.setContentType("text/html"); + + // Hello + PrintWriter out = response.getWriter(); + out.println(""); + out.println("

" + message + "

"); + out.println(""); + } + + public void destroy() { + } +} \ No newline at end of file diff --git a/S2/DevWeb/Projet/src/main/resources/META-INF/beans.xml b/S2/DevWeb/Projet/src/main/resources/META-INF/beans.xml new file mode 100644 index 0000000..4011358 --- /dev/null +++ b/S2/DevWeb/Projet/src/main/resources/META-INF/beans.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/S2/DevWeb/Projet/src/main/resources/META-INF/persistence.xml b/S2/DevWeb/Projet/src/main/resources/META-INF/persistence.xml index c4737b9..5f4edfe 100644 --- a/S2/DevWeb/Projet/src/main/resources/META-INF/persistence.xml +++ b/S2/DevWeb/Projet/src/main/resources/META-INF/persistence.xml @@ -1,14 +1,13 @@ - - + - project.pojo.User - project.pojo.Game - project.pojo.Player - + uppa.project.pojo.User + uppa.project.pojo.Game + uppa.project.pojo.Player diff --git a/S2/DevWeb/Projet/src/main/webapp/WEB-INF/web.xml b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/web.xml new file mode 100644 index 0000000..2491795 --- /dev/null +++ b/S2/DevWeb/Projet/src/main/webapp/WEB-INF/web.xml @@ -0,0 +1,6 @@ + + + \ No newline at end of file diff --git a/S2/DevWeb/Projet/src/main/webapp/index.jsp b/S2/DevWeb/Projet/src/main/webapp/index.jsp new file mode 100644 index 0000000..3d6d7b9 --- /dev/null +++ b/S2/DevWeb/Projet/src/main/webapp/index.jsp @@ -0,0 +1,12 @@ +<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> + + + + JSP - Hello World + + +

<%= "Hello World!" %>

+
+Hello Servlet + + \ No newline at end of file