From dd08bd4fb2910634093ebe3b254be2ecbe5ccb50 Mon Sep 17 00:00:00 2001 From: alartigu Date: Mon, 21 Dec 2020 18:02:29 +0400 Subject: [PATCH] DB prete (ajout fonctions potentielle dans futur proche) --- Implementation/src/Controller/ChatApp.java | 5 +- Implementation/src/Model/DataBase.class | Bin 3485 -> 3477 bytes Implementation/src/Model/DataBase.java | 126 +++++++++++++++------ 3 files changed, 94 insertions(+), 37 deletions(-) diff --git a/Implementation/src/Controller/ChatApp.java b/Implementation/src/Controller/ChatApp.java index f3ceae0..424dba5 100644 --- a/Implementation/src/Controller/ChatApp.java +++ b/Implementation/src/Controller/ChatApp.java @@ -199,8 +199,9 @@ public class ChatApp { } public static void main (String[] args) throws IOException { + System.out.println("Creation DB"); DataBase Db = DataBase.getInstance(); - ChatApp app = new ChatApp(args[0],Integer.parseInt(args[1])) ; + /*ChatApp app = new ChatApp(args[0],Integer.parseInt(args[1])) ; ExecutorService execUDP = Executors.newFixedThreadPool(1000); execUDP.submit(new RunnerEcouteUDP(app)); try { @@ -220,7 +221,7 @@ public class ChatApp { app.getHist("Doudou").afficher10derniers(); System.out.println("Tentative de connexion avec Doudou"); TCPEchange.demarrerSession(app, app.actifUsers.getPseudoList("Doudou")); - } + }*/ diff --git a/Implementation/src/Model/DataBase.class b/Implementation/src/Model/DataBase.class index 43b4dd15f90444d44c44fc74ac611c1c26b5bb03..c09223da609d7bb8ddabc95e527ad18d103bcba2 100644 GIT binary patch delta 46 zcmbO$Jym*xGNYnyR!UN`Rc>W*VUCr)eolUJVopYWafy`$5a@@b7ME=HVGQH}0Bhb4 AH2?qr delta 54 zcmbO#Jy&{zGNYzxR!UN`Rc>W*VUCr)eolUJVopYWafy|Mg@vVlXh~*HW^rOkYH3mN JW*5dl9svE-6086K diff --git a/Implementation/src/Model/DataBase.java b/Implementation/src/Model/DataBase.java index 1876fd0..b598031 100644 --- a/Implementation/src/Model/DataBase.java +++ b/Implementation/src/Model/DataBase.java @@ -33,18 +33,18 @@ public class DataBase { private static DataBase instance = null; // Singleton public DataBase() { - /*try { + try { // Besoin d'installer le driver JDBC entre java IDE et le system DBMS pour faire un pont entre les deux - Class.forName("com.mysql.jdbc.Driver"); + Class.forName("com.mysql.cj.jdbc.Driver"); System.out.println("Driver Installe"); } catch (ClassNotFoundException e) { e.printStackTrace(); System.out.println("Echec installation Driver"); - }*/ + } try { // Etablir une connexion , forme : (url, "myLogin", "myPassword"); - this.connection = DriverManager.getConnection("jdbc:mysql://localhost:8889/Utilisateurs?useSSL=false", "root", "Tppoo2020"); + this.connection = DriverManager.getConnection("jdbc:mysql://localhost:8889/POO_AL_NM?allowPublicKeyRetrieval=true&useSSL=false", "root", "root"); //this.connection = DriverManager.getConnection(this.DBurl,login,pswd); System.out.println("Connexion Etablie"); } catch (SQLException e) { @@ -82,12 +82,12 @@ public class DataBase { grand = ID1 ; } String nomTable = "Chat_" + petit + "_" + grand ; - String Requete = "CREATE TABLE IF NOT EXISTS " + nomTable + "( Destinataire VARCHAR, Source VARCHAR, Message , Date d'envoi)" ; - - Statement stmt = null ; + String Requete = "CREATE TABLE IF NOT EXISTS`" + nomTable +"` (\n" + "`Destinataire` varchar(100) NOT NULL,\n" + " `Source` varchar(100) NOT NULL,\n" + " `Envoi` timestamp NOT NULL,\n" + " `Message` text NOT NULL\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;"; + System.out.println(Requete); + PreparedStatement Ps = null ; //Statement est utilisé pour envoyer une requete SQL à la base de donnee try { - stmt= connection.createStatement(); + Ps = connection.prepareStatement(Requete); System.out.println("Statement cree"); } catch (SQLException e) { e.printStackTrace(); @@ -96,32 +96,34 @@ public class DataBase { //Execute la donnée SQL statement passe en parametre try { - stmt.executeUpdate(Requete); + Ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); System.out.println(" Echec executeUpdate "); } } - + /* * Methode permettant de mettre a jour le pseudo d'un utilisateur en fonction de son ID dans la base de donnee * @param ID Id de l'utilisateur qui vient de changer de pseudo * @param Pseudo Nouveau Pseudo de l'utilisateur */ public void majPseudo( String ID , String Pseudo) { - String requete = "UPDATE Utilisateurs SET Pseudo = '"+Pseudo+"’ WHERE ID = '"+ID+"'"; - Statement stmt = null ; + String requete= "UPDATE `Utilisateurs` SET `Pseudo`=? WHERE id=?"; + PreparedStatement Ps = null ; //Statement est utilisé pour envoyer une requete SQL à la base de donnee try { - stmt= connection.createStatement(); + Ps = connection.prepareStatement(requete); + Ps.setString(1, Pseudo); + Ps.setString(2, ID); System.out.println("Statement cree"); } catch (SQLException e) { e.printStackTrace(); System.out.println("Echec creation Statement"); - } + } //Execute la donnée SQL statement passe en parametre try { - stmt.executeUpdate(requete); + Ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); System.out.println(" Echec executeUpdate "); @@ -135,10 +137,41 @@ public class DataBase { * @param IDdest Id de l'utilisateur Destinataire du message * @param IDdest Id de celui qui envoi le message * @param Msg Message envoye entre les deux utilisateurs - * @param date Date de l'envoi du message */ - public void ajoutHistorique(String IDdest , String IDsrc, String Msg, Date date) { - // A REMPLIR + public void ajoutHistorique(String IDdest , String IDsrc, String Msg) { + String petit; + String grand; + int comparaison = IDdest.compareTo(IDsrc); + if (comparaison < 0) { + petit = IDdest; + grand = IDsrc ; + } + else { + petit = IDsrc; + grand = IDdest ; + } + String nomTable = "Chat_" + petit + "_" + grand ; + String requete= "INSERT INTO `"+ nomTable +"`(`Destinataire`, `Source`, `Message`) VALUES ( ? , ? , ?)"; + PreparedStatement Ps = null ; + //Statement est utilisé pour envoyer une requete SQL à la base de donnee + try { + Ps = connection.prepareStatement(requete); + Ps.setString(1, IDdest); + Ps.setString(2, IDsrc); + Ps.setString(3, Msg); + System.out.println("Statement cree"); + } catch (SQLException e) { + e.printStackTrace(); + System.out.println("Echec creation Statement"); + } + + //Execute la donnée SQL statement passe en parametre + try { + Ps.executeUpdate(); + } catch (SQLException e) { + e.printStackTrace(); + System.out.println(" Echec executeUpdate "); + } } @@ -148,12 +181,26 @@ public class DataBase { * @param Pseudo pseudo actuelle de l'utilisateur */ public void ajoutUtilisateurs(String ID , String Pseudo ) { - // A REMPLIR - Date date = new Date(); - String dateString = date.toString(); - String BooleanActif = "true"; - String requete= "INSERT INTO Utilisateurs`(`ID`, `Pseudo`, `Actif`, `Inscription`) VALUES ('valeur 1', 'valeur 2', ...)"; - + String requete= "INSERT INTO `Utilisateurs` (`ID`, `Pseudo`, `Actif`) VALUES ( ? , ? , '1')"; + PreparedStatement Ps = null ; + //Statement est utilisé pour envoyer une requete SQL à la base de donnee + try { + Ps = connection.prepareStatement(requete); + Ps.setString(1, ID); + Ps.setString(2, Pseudo); + System.out.println("Statement cree"); + } catch (SQLException e) { + e.printStackTrace(); + System.out.println("Echec creation Statement"); + } + + //Execute la donnée SQL statement passe en parametre + try { + Ps.executeUpdate(); + } catch (SQLException e) { + e.printStackTrace(); + System.out.println(" Echec executeUpdate "); + } } /* @@ -162,17 +209,26 @@ public class DataBase { * @param connecte Boolean true si il est connecte , false sinon */ public void majUtilisateursActifs(Boolean Connecte, String Id) { - // A REMPLIR + String requete= "UPDATE `Utilisateurs` SET `Actif`=? WHERE id=?"; + PreparedStatement Ps = null ; + Integer Actif = Connecte ? 1 : 0; + //Statement est utilisé pour envoyer une requete SQL à la base de donnee + try { + Ps = connection.prepareStatement(requete); + Ps.setInt(1, Actif); + Ps.setString(2, Id); + System.out.println("Statement cree"); + } catch (SQLException e) { + e.printStackTrace(); + System.out.println("Echec creation Statement"); + } + //Execute la donnée SQL statement passe en parametre + try { + Ps.executeUpdate(); + } catch (SQLException e) { + e.printStackTrace(); + System.out.println(" Echec executeUpdate "); + } } - - - - /*public static void main (String[] args) throws IOException { - DataBase DB = DataBase.getInstance(); - DB.CreationTableHistorique("Auriane", "Nabil"); - }*/ - - - }