From 22143615ba26e30e006860379b29f15755d67b38 Mon Sep 17 00:00:00 2001 From: alartigu Date: Sun, 27 Dec 2020 11:00:47 +0400 Subject: [PATCH] Impossible de se connecter a BDD --- .../src/main/java/chatapp/Model/DataBase.java | 150 +++++++++++++++--- 1 file changed, 124 insertions(+), 26 deletions(-) diff --git a/Implementation/chatapp/src/main/java/chatapp/Model/DataBase.java b/Implementation/chatapp/src/main/java/chatapp/Model/DataBase.java index 92f384c..d068243 100644 --- a/Implementation/chatapp/src/main/java/chatapp/Model/DataBase.java +++ b/Implementation/chatapp/src/main/java/chatapp/Model/DataBase.java @@ -176,36 +176,58 @@ public class DataBase { /* - * 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 se connecter pour la premiere fois + * Methode permettant d'ajouter un utilisateur dans la base de donnée si celui-ci n'existe pas deja + * @param ID Id de l'utilisateur que l'on veut rajouter * @param Pseudo pseudo actuelle de l'utilisateur */ public void ajoutUtilisateurs(String ID , String Pseudo ) { // Verification que l'utilisateur n'existe pas - - - - - - 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 + String existe= "SELECT Pseudo FROM Customers WHERE ID = " + ID; + Statement stmt = null; + ResultSet rs = null ; 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"); + stmt = this.connection.createStatement(); + } catch (SQLException throwables) { + throwables.printStackTrace(); } - - //Execute la donnée SQL statement passe en parametre try { - Ps.executeUpdate(); - } catch (SQLException e) { - e.printStackTrace(); - System.out.println(" Echec executeUpdate "); + rs = stmt.executeQuery(existe); + } catch (SQLException throwables) { + throwables.printStackTrace(); + } + String P = "" ; + try { + P = rs.getString("Pseudo"); + } catch (SQLException throwables) { + throwables.printStackTrace(); + } + if( !P.equals("") ) { + // L'utilisateur existe deja + if (!P.equals(Pseudo)){ + this.majPseudo(ID,Pseudo); // On met a jour le nouveau pseudo + } + } + else { + 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 "); + } } } @@ -238,14 +260,90 @@ public class DataBase { } /* - * Methode permettant de recuperer les 20 derniers messages envoyés entre 2 utilisateurs + * Methode permettant de recuperer les N derniers messages envoyés entre 2 utilisateurs * @param ID Utilisateur associé a ChatApp * @param destinataire Celui avec qui correspond ID - * @return Les 20 derniers Messages + * @return Les N derniers Messages */ - public String recup20Msg(String ID, String IDdestinataire) { + public String recupNMsg(String ID, String IDdestinataire, int N) { String Msg = "" ; + String petit; + String grand; + int comparaison = ID.compareTo(IDdestinataire); + if (comparaison < 0) { + petit = ID; + grand = IDdestinataire; + } + else { + petit = ID; + grand = IDdestinataire ; + } + String nomTable = "Chat_" + petit + "_" + grand ; + String requete= "SELECT * FROM nomTable"; + Statement stmt = null; + ResultSet rs = null ; + try { + stmt = this.connection.createStatement(); + } catch (SQLException throwables) { + throwables.printStackTrace(); + } + try { + rs = stmt.executeQuery(requete); + } catch (SQLException throwables) { + throwables.printStackTrace(); + } + + for(int i = 0 ; i < N; i++){ + try { + if( rs.next()){ + String IDSource = rs.getString("Source"); + String Envoi = rs.getTimestamp("Envoi").toString(); + String Message = rs.getString("Message"); + if (IDSource.equals(ID)){ + Msg += ( "Moi (" + Envoi + ") : " + Message ) ; + } + else { + String PseudoSource = getPseudo(IDSource) ; + Msg += ( PseudoSource + "(" + Envoi + ") : " + Message ); + } + + } + } catch (SQLException throwables) { + throwables.printStackTrace(); + } + } + return Msg ; } + /* + * Methode permettant de recuperer le pseudo actuel d'un utilisateur en fonction de son ID + * @param ID Id de l'utilsateur dont on veut connaitre le pseudo + * @return Pseudo + */ + private String getPseudo(String idSource) { + String Pseudo = "" ; + String requete= "SELECT * FROM `Utilisateurs` WHERE ID = " + idSource; + Statement stmt = null; + ResultSet rs = null ; + try { + stmt = this.connection.createStatement(); + } catch (SQLException throwables) { + throwables.printStackTrace(); + } + try { + rs = stmt.executeQuery(requete); + } catch (SQLException throwables) { + throwables.printStackTrace(); + } + try { + if (! rs.getString("Pseudo").equals(null) ){ + Pseudo = rs.getString("Pseudo") ; + } + } catch (SQLException throwables) { + throwables.printStackTrace(); + } + return Pseudo ; + } + }