From 0c2c3ee5a55f36d270171f2f67938542e251fdc5 Mon Sep 17 00:00:00 2001 From: polo Date: Thu, 2 Jul 2026 00:14:17 +0200 Subject: fork utilisant maven --- src/main/java/controlleur/BDD.java | 322 +++++++++++++++++++++ src/main/java/controlleur/Connexion.java | 65 +++++ src/main/java/controlleur/ControllerAdmin.java | 119 ++++++++ src/main/java/controlleur/ControllerTopMenu.java | 58 ++++ src/main/java/controlleur/ControlleurSimu.java | 218 ++++++++++++++ src/main/java/controlleur/CreationCompte.java | 38 +++ src/main/java/controlleur/EvenementController.java | 267 +++++++++++++++++ src/main/java/controlleur/GestionListe.java | 82 ++++++ src/main/java/controlleur/Instanciation.java | 304 +++++++++++++++++++ src/main/java/controlleur/ModificationListe.java | 214 ++++++++++++++ src/main/java/controlleur/StockageCreerListe.java | 75 +++++ src/main/java/controlleur/SupprListe.java | 27 ++ 12 files changed, 1789 insertions(+) create mode 100644 src/main/java/controlleur/BDD.java create mode 100644 src/main/java/controlleur/Connexion.java create mode 100644 src/main/java/controlleur/ControllerAdmin.java create mode 100644 src/main/java/controlleur/ControllerTopMenu.java create mode 100644 src/main/java/controlleur/ControlleurSimu.java create mode 100644 src/main/java/controlleur/CreationCompte.java create mode 100644 src/main/java/controlleur/EvenementController.java create mode 100644 src/main/java/controlleur/GestionListe.java create mode 100644 src/main/java/controlleur/Instanciation.java create mode 100644 src/main/java/controlleur/ModificationListe.java create mode 100644 src/main/java/controlleur/StockageCreerListe.java create mode 100644 src/main/java/controlleur/SupprListe.java (limited to 'src/main/java/controlleur') diff --git a/src/main/java/controlleur/BDD.java b/src/main/java/controlleur/BDD.java new file mode 100644 index 0000000..af1a754 --- /dev/null +++ b/src/main/java/controlleur/BDD.java @@ -0,0 +1,322 @@ +package controlleur; + +import java.sql.Connection; +import java.sql.Date; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.ResultSetMetaData; +import java.sql.SQLException; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; + +import javafx.scene.layout.VBox; +import modele.Arme; +import modele.ArmeeListe; +import modele.Evenement; +import modele.Unit; +import modele.User; + +public class BDD { + + private Connection connec; + private PreparedStatement stat = null; + private ResultSet rs ; + + private static String user; + private static String password; + private static String dbname; + + public BDD() { + try { + //Class.forName("com.mysql.cj.jdbc.Driver"); + Class.forName("org.mariadb.jdbc.Driver"); + //String host = "mysql-stathammer.alwaysdata.net"; + String host = "localhost"; + //this.connec = DriverManager.getConnection("jdbc:mysql://" + host + ":3306/"+ dbname, user, password); + this.connec = DriverManager.getConnection("jdbc:mariadb://" + host + ":3306/"+ dbname, user, password); + this.rs = connec.prepareStatement("SELECT * FROM faction;").executeQuery(); + } catch (ClassNotFoundException e) { + // TODO: handle exception + + e.printStackTrace(); + } catch (SQLException e) { + System.err.println(e.getMessage()); + } + } + + public static void setInfos(String login, String pwd, String base) + { + user = login; + password = pwd; + dbname = base; + } + + public Statement getStatement() throws SQLException + { + return connec.createStatement(); + } + + public PreparedStatement getPreparedStatement(String sql, Object... params) throws SQLException + { + stat = connec.prepareStatement(sql); + if(params.length > 0) + { + for (int i = 0; i < params.length; i++) { + stat.setObject(i + 1, params[i]); + } + } + return stat; + } + + public ArrayList selectUtilisateur(String nom, String mdp) { + ArrayList rendu = new ArrayList(); + try { + + String requete = "SELECT id_utilisateur, nom_utilisateur, role_utilisateur FROM utilisateur WHERE nom_utilisateur=? AND mdp_utilisateur = ?;"; + stat = connec.prepareStatement(requete); + stat.setString(1, nom); + stat.setString(2,String.valueOf(mdp)); + //stat.setString(2,String.valueOf(mdp.hashCode())); + + ResultSet rs = stat.executeQuery(); + ResultSetMetaData md = rs.getMetaData(); + ArrayList column = new ArrayList(); + + for (int i = 1; i <= md.getColumnCount(); i++) { + column.add(md.getColumnName(i)); + } + while (rs.next()) { + rendu.add(rs.getString("nom_utilisateur")); + rendu.add(rs.getInt("id_utilisateur")); + rendu.add(rs.getString("role_utilisateur")); + } + return rendu; + + } catch (SQLException e) { + // TODO: handle exception + System.err.println(e.getMessage()); + + } + return rendu; + } + + public ArrayList creerUtilisateur(String adresse, String nom, String mdp) { + ArrayList crea = new ArrayList(); + + String creationRequete = "INSERT INTO utilisateur" + " (nom_utilisateur, email_utilisateur, mdp_utilisateur)" + + "VALUES (?, ?, ?);"; + try { + if (connec == null || connec.isClosed()) { + System.err.println("La connexion à la bdd n'est pas possible."); + return crea; + } + PreparedStatement stat = connec.prepareStatement(creationRequete); + stat.setString(1, nom); + stat.setString(2, adresse); + stat.setString(3, mdp); + + int rowsInserted = stat.executeUpdate(); + + if (rowsInserted > 0) { + crea.add(adresse); + } + stat.close(); + } catch (SQLException e) { + System.err.println("Erreur SQL : " + e.getMessage()); + } + return crea; + } + + public Connection getConnection() { + return this.connec; + } + + public void close() { + try { + connec.close(); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public ArrayList select(String requete,String... param ) throws SQLException{ + ArrayList rendu = new ArrayList(); + try { + PreparedStatement pstat = null; + + pstat = connec.prepareStatement(requete); + if(param.length>0) { + for(int i = 1;i<=param.length;i++) { + pstat.setString(i, param[i-1]); + } + } + + rs.close(); + rs = pstat.executeQuery(); + ResultSetMetaData md = rs.getMetaData(); + ArrayList column = new ArrayList(); + + + for(int i =1;i<=md.getColumnCount();i++) { + column.add(md.getColumnName(i)); + } + while(rs.next()) { + for (String col : column) { + rendu.add(rs.getString(col)); + } + + + + } + + return rendu; + + } catch (SQLException e) { + // TODO: handle exception + System.err.println(e.getMessage()); + + + } + return rendu; + } + + public void updateUtilisateur(String pseudo,int id) { + try { + stat = this.getPreparedStatement("UPDATE `utilisateur` SET nom_utilisateur=? WHERE id_utilisateur=?;",pseudo,id); + stat.executeUpdate(); + + } catch (SQLException e) { + // TODO: handle exception + System.err.println(e.getMessage()); + } + } + public void insertListe(ArmeeListe armee,User session) { + try { + int id; + ArrayList rendu = new ArrayList(); + String requete = "INSERT INTO liste VALUES(DEFAULT,?,?,?,?);"; + stat = this.getPreparedStatement(requete); + stat.setString(1, armee.getName()); + stat.setString(2, armee.getDescription()); + stat.setString(3, armee.getData()); + stat.setInt(4, session.getId()); + stat.executeUpdate(); + + requete = "SELECT id_liste FROM liste WHERE nom_liste = ?;"; + + rendu = this.select(requete,armee.getName()); + + id = Integer.parseInt(rendu.getFirst()); + requete = "INSERT INTO contenir VALUES(?,?);"; + + for(Unit unit : armee.getUnits()) { + + + stat = this.getPreparedStatement(requete); + stat.setInt(1, unit.getId()); + stat.setInt(2, id); + stat.executeUpdate(); + } + + } catch (SQLException e) { + // TODO: handle exception + } + } + + + public void updateMp(String mdp,int id) { + try { + //stat = this.getPreparedStatement("UPDATE `utilisateur` SET mdp_utilisateur=? WHERE id_utilisateur=?;",mdp.hashCode(),id); + stat = this.getPreparedStatement("UPDATE `utilisateur` SET mdp_utilisateur=? WHERE id_utilisateur=?;",mdp.hashCode(),id); + stat.executeUpdate(); + + } catch (SQLException e) { + // TODO: handle exception + System.err.println(e.getMessage()); + } + } + + public int UtilisateurID(String nom, String mdp) { + try { + stat = this.getPreparedStatement("SELECT id_utilisateur FROM utilisateur WHERE nom_utilisateur=? AND mdp_utilisateur = ?;", + nom, mdp); + + ResultSet rs = stat.executeQuery(); + rs.next(); + int id = rs.getInt("id_utilisateur"); + + return id; + + } catch (SQLException e) { + // TODO: handle exception + System.err.println(e.getMessage()); + + return 0; + } + } + public String UtilisateurRole(String nom, String mdp) { + String role = "null"; + try { + + stat = this.getPreparedStatement("SELECT role_utilisateur FROM utilisateur WHERE nom_utilisateur=? AND mdp_utilisateur = ?;", + nom, mdp); + + ResultSet rs = stat.executeQuery(); + rs.next(); + role = rs.getString("role_utilisateur"); + + return role; + + } catch (SQLException e) { + // TODO: handle exception + System.err.println(e.getMessage()); + + + } + return role; + } + + public String UtilisateurMdp(int id) { + String mdp = "test null"; + try { + stat = this.getPreparedStatement("SELECT mdp_utilisateur FROM utilisateur WHERE id_utilisateur=?;", + id); + + ResultSet rs = stat.executeQuery(); + rs.next(); + mdp = rs.getString("mdp_utilisateur"); + + return mdp; + + } catch (SQLException e) { + // TODO: handle exception + System.err.println(e.getMessage()); + + + } + return mdp; + } + + + public void ajouter(Arme a) { + try { + stat.executeUpdate("INSERT INTO arme (id,prenom,login,password,statut,age) VALUES (NULL,"); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + } + + public void supprimer(Arme a) { + try { + stat.executeUpdate("DELETE FROM acces WHERE login =''"); + } catch (SQLException e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } + + } +} diff --git a/src/main/java/controlleur/Connexion.java b/src/main/java/controlleur/Connexion.java new file mode 100644 index 0000000..f8c6b4f --- /dev/null +++ b/src/main/java/controlleur/Connexion.java @@ -0,0 +1,65 @@ +package controlleur; + +import java.sql.SQLException; +import java.util.ArrayList; + +import javafx.stage.Stage; +import modele.Evenement; +import modele.User; +import vue.AfficheAccueil; +import vue.AfficheConnexionFailed; + +public class Connexion { + public static EvenementController eventC ; + public static Evenement event ; + public static void verif(String login, String mdp,Stage primaryStage) { + + login = login.trim(); + mdp = Integer.toString(mdp.hashCode()); + BDD conec = new BDD(); + + eventC = new EvenementController(); + event = new Evenement(eventC.getNom_event().get(0), + eventC.getNom_image().get(0), + eventC.getDesc_event().get(0), + eventC.getDate_event().get(0)); + System.out.println(eventC.getNom_image().get(0)); + ArrayList rendu = conec.selectUtilisateur(login, mdp); + int id = conec.UtilisateurID(login, mdp); + String role = conec.UtilisateurRole(login, mdp); + //System.out.println(role); + conec.close(); + + try { + if (login.equals(rendu.get(0))) { + User session = new User(login,id,role); + + //primaryStage.close(); + AfficheAccueil.affiche(primaryStage,session); + } + else { + System.out.println(rendu); + } + } + catch(Exception e) { + AfficheConnexionFailed.affiche(primaryStage); + } + } + + public static void updatePseudo(String pseudo,int id) throws SQLException { + BDD conec = new BDD(); + conec.updateUtilisateur(pseudo,id); + conec.close(); + } + public static void updateMdp(String mdp,int id) throws SQLException { + BDD conec = new BDD(); + conec.updateMp(mdp,id); + conec.close(); + } + public static String selectMdp(int id) throws SQLException { + BDD conec = new BDD(); + String mdp =conec.UtilisateurMdp(id); + conec.close(); + return mdp; + } +} \ No newline at end of file diff --git a/src/main/java/controlleur/ControllerAdmin.java b/src/main/java/controlleur/ControllerAdmin.java new file mode 100644 index 0000000..a12f01c --- /dev/null +++ b/src/main/java/controlleur/ControllerAdmin.java @@ -0,0 +1,119 @@ +package controlleur; + +import java.io.File; +import java.io.IOException; +import java.nio.file.Files; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; +import java.time.LocalDate; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +import javafx.geometry.Pos; +import javafx.scene.control.Alert; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.HBox; +import javafx.scene.layout.VBox; +import javafx.scene.text.Text; +import javafx.stage.FileChooser; +import javafx.stage.Stage; +import vue.AfficheAccueil; +import vue.AfficheAdmin; +import vue.AfficheConnexionFailed; +import modele.Evenement; +import modele.User; + +public class ControllerAdmin { + private static String destinationDir; + private static File destinationFile ; + private static File file; + + public static void parcourir(Stage primaryStage, ImageView imageView) { + FileChooser fileChooser = new FileChooser(); + fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Fichiers Images", "*.png", "*.jpg")); + + // Ouvrir le file chooser et obtenir le fichier sélectionné + file = fileChooser.showOpenDialog(primaryStage); + + boolean nomFich = true; + + if (file != null) { + + for (int i = 0 ; i < Connexion.eventC.getNbrEvt();i++) { + + if (file.getName().equals(Connexion.eventC.getNom_image().get(i))) { + + Alert alert = new Alert(Alert.AlertType.ERROR); + alert.setTitle("StatHammer : Nom d'image déjà existant"); + alert.setHeaderText(null); + alert.setContentText("Le nom de l'image est déjà prise."); + alert.showAndWait(); + nomFich = false; + + } + } + if (nomFich) { + System.out.println("Fichier sélectionné : " + file.getName()); + System.out.println("Chemin du fichier : " + file.getAbsolutePath()); + + // Créer une nouvelle image à partir du chemin absolu du fichier + Image image = new Image("file:" + file.getAbsolutePath()); + + // Définir l'image dans l'ImageView + imageView.setImage(image); + + // Destination pour sauvegarder l'image + destinationDir = "src\\images"; + File destinationFolder = new File(destinationDir); + + // Créez le répertoire s'il n'existe pas + if (!destinationFolder.exists()) { + destinationFolder.mkdirs(); + } + + File nouveauNom = new File(file.getName()); + destinationFile = new File(destinationFolder, nouveauNom.getName()); + + } + + } + } + + + //méthode "valider" + public static VBox valider(String nom_evt, String nom_img, String desc, String date) { + Evenement evt = new Evenement(nom_evt, nom_img, desc, date); + VBox event = new VBox(); + event.setPrefHeight(50); + event.setAlignment(Pos.CENTER); + try { + // Copier le fichier dans le dossier de destination + Files.copy(file.toPath(), destinationFile.toPath()); + System.out.println("Fichier enregistré à : " + destinationFile.getAbsolutePath()); + EvenementController.insererEvenement(evt); + event = EvenementController.EvenementVBox(); + + } catch (IOException ioException) { + System.out.println("Probleme sur Valider"); + ioException.printStackTrace(); + } + return event; + } + + public static File getFile() { + return file; + } + + + public static String getDestinationDir() { + return destinationDir; + } + + + +} \ No newline at end of file diff --git a/src/main/java/controlleur/ControllerTopMenu.java b/src/main/java/controlleur/ControllerTopMenu.java new file mode 100644 index 0000000..baef8df --- /dev/null +++ b/src/main/java/controlleur/ControllerTopMenu.java @@ -0,0 +1,58 @@ +package controlleur; + +import application.Battle; +import javafx.stage.Stage; +import modele.Evenement; +import modele.User; +import vue.AfficheAccueil; +import vue.AfficheAdmin; +import vue.AfficheConnexion; +import vue.AfficheCreerListe; +import vue.AfficheGestionCompte; +import vue.GestionListe.AfficheGestionListe; +import vue.simulation.AfficheSimulation; + +public class ControllerTopMenu { + static BDD db = new BDD(); + + public static void go_accueil(Stage primaryStage,User session) { + //primaryStage.close(); pour fermer stage + AfficheAccueil.affiche(primaryStage,session); + } + public static void go_gestion_compte(Stage primaryStage,User session) { + AfficheGestionCompte.affiche(primaryStage,session); + } + public static void go_gestion_listes(Stage primaryStage,User session) { + +// db.getArmyLists(session); + AfficheGestionListe.affiche(primaryStage, session); + + // + + } + public static void go_deco(Stage primaryStage, User session) { + AfficheSimulation.cleanWeaponsAtitudesMenu(); + Battle.clean(); // VRAIMENT ?! + session = null; + AfficheConnexion.affiche(primaryStage); + } + public static void go_simulation(Stage primaryStage, User session){ + + + Instanciation.getArmyLists(session); + + AfficheSimulation.affiche(primaryStage, session); + } + public static void go_admin(Stage primaryStage,User session) { + AfficheAdmin.affiche(primaryStage,session); + } + public static void go_creer_liste(Stage primaryStage, User session) { + AfficheCreerListe.afficheCreerListe(primaryStage, session); + } +// public static void go_gestionliste(Stage primaryStage,User session) { +// AfficheGestionListe.affiche(primaryStage,session); +// } +} + + + diff --git a/src/main/java/controlleur/ControlleurSimu.java b/src/main/java/controlleur/ControlleurSimu.java new file mode 100644 index 0000000..a349036 --- /dev/null +++ b/src/main/java/controlleur/ControlleurSimu.java @@ -0,0 +1,218 @@ +package controlleur; + +import java.util.ArrayList; +import java.util.HashMap; +import application.Battle; +import javafx.scene.control.Button; +import javafx.scene.control.ChoiceBox; +import javafx.scene.image.Image; +import javafx.scene.image.ImageView; +import javafx.scene.layout.FlowPane; +import javafx.scene.layout.HBox; +import javafx.scene.layout.Pane; +import modele.Aptitude; +import modele.Arme; +import modele.ArmeeListe; +import modele.Calcul; +import modele.Figurine; +import modele.Unit; +import vue.simulation.AfficheSimulation; +import vue.simulation.SimAptAndWeaponsVBox; +import vue.simulation.SimFigurinesVBox; +import vue.simulation.SimHistogramme; +import vue.simulation.SimUnitsVBox; + +public class ControlleurSimu +{ + // déroulement des unités d'une liste (appui sur lists_drop_down.get(i) dans AfficheSimulation) + public static void selectAList(int num_list, ArrayList lists, String choice) + { + // choix de la liste + for(ArmeeListe one_list : lists) + { + if(one_list.getName().equals(choice)) { + // "copie profonde" d'une liste + ArmeeListe list = new ArmeeListe(one_list.getName(), one_list.getDescription(), one_list.getData()); + Battle.setSelectedList(num_list, list); + break; // choix unique + } + } + + // obtenir les unités, l'armée, les figurines, armes et aptitudes + Instanciation.getUnitsOfAList(Battle.getSelectedList(num_list)); + + Battle.setArmy(num_list, Battle.getSelectedList(num_list).getUnits().get(0).getArmee()); + + } + + // déroulement des figurines d'une unité (appui sur buttons.get(i) dans SimUnitsVBox) + public static void PullDownUnits(int num_list, HBox dropdown_menu_box, SimUnitsVBox list_box) { + ArmeeListe list = Battle.getSelectedList(num_list); + + // noms des unités + String[] unit_names = new String[list.getUnits().size()]; + for(int i = 0; i < list.getUnits().size(); i++) { + unit_names[i] = list.getUnits().get(i).getName(); + } + + // supprimer l'ancien logo + if(dropdown_menu_box.getChildren().size() == 2){ + dropdown_menu_box.getChildren().remove(1); + } + + // logo de faction + Image logo_faction = null; + if(Battle.getArmy(num_list) != null) // possibilité d'une liste vide + { + String file_name = Battle.getArmy(num_list).getLogo(); + logo_faction = new Image("/images/armees/" + file_name); + } + ImageView logo_box = new ImageView(); + + logo_box.setPreserveRatio(true); + logo_box.fitHeightProperty().bind(dropdown_menu_box.heightProperty()); + logo_box.setImage(logo_faction); + dropdown_menu_box.getChildren().add(logo_box); + + // effacer la zone armes et aptitudes + AfficheSimulation.getWeaponsAtitudesMenu().setStyle("-fx-border-width: 0;"); + AfficheSimulation.getWeaponsAtitudesMenu().getChildren().clear(); + + // effacer et recréer les unités + list_box.getButtons().clear(); + list_box.getFigBoxes().clear(); + list_box.getChildren().clear(); + list_box.setList(num_list); + } + + // déroulement des figurines d'une unité (appui sur buttons.get(i) dans SimUnitsVBox) + public static void selectAnUnit(SimUnitsVBox lists, int col, int j) + { + ArrayList