Compare commits

...

2 commits

Author SHA1 Message Date
22143615ba Impossible de se connecter a BDD 2020-12-27 11:00:47 +04:00
42ae14a012 structure nouvelle fonction 2020-12-27 10:35:26 +04:00
3 changed files with 142 additions and 27 deletions

View file

@ -8,15 +8,15 @@ chatapp/Model/Historique.java
chatapp.Model.Historique
chatapp/Model/MessageHorodate.java
chatapp.Model.MessageHorodate
chatapp/Model/DataBase.java
chatapp.Model.DataBase
chatapp/View/View_Menu.java
chatapp.View.View_Menu
chatapp/Protocol/RunnerEcouteTCP.java
chatapp.Protocol.RunnerEcouteTCP
chatapp/View/FenetreSession.java
chatapp.View.FenetreSession
chatapp.View.FenetreSession$1
chatapp/Controller/ChatApp.java
chatapp.Controller.ChatApp
chatapp/View/DemarrerSession.java
chatapp.View.DemarrerSession
chatapp/View/ChangementPseudo.java
chatapp.View.ChangementPseudo
chatapp/Protocol/RunnerEcouteUDP.java
@ -39,7 +39,7 @@ chatapp/View/ConnexionScreen.java
chatapp.View.ConnexionScreen
chatapp/View/View_Utilisateurs.java
chatapp.View.View_Utilisateurs
chatapp/View/View_Menu.java
chatapp.View.View_Menu
chatapp/View/DemarrerSession.java
chatapp.View.DemarrerSession
chatapp/Controller/ChatApp.java
chatapp.Controller.ChatApp
chatapp/Model/DataBase.java
chatapp.Model.DataBase

View file

@ -48,7 +48,7 @@ public class ChatApp implements PropertyChangeListener {
this.actifUsers.addList(getMe());
this.main = main;
//this.db= DataBase.getInstance();
this.db= DataBase.getInstance();
}
public static synchronized ChatApp getInstance(String pseudo, Integer port, Application main){

View file

@ -176,30 +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 ) {
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
// Verification que l'utilisateur n'existe pas
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 ");
}
}
}
@ -231,4 +259,91 @@ public class DataBase {
}
}
/*
* 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 N derniers Messages
*/
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 ;
}
}