BDD Fct GetPseudo / TailleBDD / AjoutUtilisateurs fonctionnelles
このコミットが含まれているのは:
コミット
a4df947767
3個のファイルの変更、192行の追加、79行の削除
|
@ -1,39 +1,39 @@
|
|||
chatapp/Model/DataBase.java
|
||||
chatapp.Model.DataBase
|
||||
chatapp/Model/ListUtilisateurs.java
|
||||
chatapp.Model.ListUtilisateurs
|
||||
chatapp/Model/Utilisateur.java
|
||||
chatapp.Model.Utilisateur
|
||||
chatapp/Model/MessageHorodate.java
|
||||
chatapp.Model.MessageHorodate
|
||||
chatapp/Launcher.java
|
||||
chatapp.Launcher
|
||||
chatapp/Protocol/RunnerEcouteTCP.java
|
||||
chatapp.Protocol.RunnerEcouteTCP
|
||||
chatapp/View/DemarrerSession.java
|
||||
chatapp.View.DemarrerSession
|
||||
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/Protocol/RunnerEcouteUDP.java
|
||||
chatapp.Protocol.RunnerEcouteUDP
|
||||
chatapp/Protocol/UDPEchange.java
|
||||
chatapp.Protocol.RunnerUDP
|
||||
chatapp.Protocol.UDPEchange
|
||||
chatapp/Main.java
|
||||
chatapp.Main
|
||||
chatapp/Model/Utilisateur.java
|
||||
chatapp.Model.Utilisateur
|
||||
chatapp/View/ConnexionScreen.java
|
||||
chatapp.View.ConnexionScreen
|
||||
chatapp/View/ChangementPseudo.java
|
||||
chatapp.View.ChangementPseudo
|
||||
chatapp/View/Clavardage.java
|
||||
chatapp.View.Clavardage
|
||||
chatapp.View.Clavardage$1
|
||||
chatapp/Protocol/SessionClavardage.java
|
||||
chatapp.Protocol.SessionClavardage
|
||||
chatapp/View/ConnexionScreen.java
|
||||
chatapp.View.ConnexionScreen
|
||||
chatapp/View/View_Utilisateurs.java
|
||||
chatapp.View.View_Utilisateurs
|
||||
chatapp/Launcher.java
|
||||
chatapp.Launcher
|
||||
chatapp/Model/ListUtilisateurs.java
|
||||
chatapp.Model.ListUtilisateurs
|
||||
chatapp/View/View_Menu.java
|
||||
chatapp.View.View_Menu
|
||||
chatapp/View/ChangementPseudo.java
|
||||
chatapp.View.ChangementPseudo
|
||||
chatapp/Model/MessageHorodate.java
|
||||
chatapp.Model.MessageHorodate
|
||||
chatapp/View/View_Utilisateurs.java
|
||||
chatapp.View.View_Utilisateurs
|
||||
chatapp/Protocol/RunnerEcouteTCP.java
|
||||
chatapp.Protocol.RunnerEcouteTCP
|
||||
chatapp/Protocol/UDPEchange.java
|
||||
chatapp.Protocol.RunnerUDP
|
||||
chatapp.Protocol.UDPEchange
|
||||
chatapp/Controller/ChatApp.java
|
||||
chatapp.Controller.ChatApp
|
||||
chatapp/Main.java
|
||||
chatapp.Main
|
||||
chatapp/Protocol/SessionClavardage.java
|
||||
chatapp.Protocol.SessionClavardage
|
||||
chatapp/Model/DataBase.java
|
||||
chatapp.Model.DataBase
|
||||
chatapp/Protocol/RunnerEcouteUDP.java
|
||||
chatapp.Protocol.RunnerEcouteUDP
|
||||
|
|
|
@ -2,6 +2,6 @@ package chatapp;
|
|||
|
||||
public class Launcher {
|
||||
public static void main(String[] args) {
|
||||
Main.main(args);
|
||||
// Main.main(args);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -30,6 +30,10 @@ public class DataBase {
|
|||
|
||||
private static DataBase instance = null; // Singleton
|
||||
|
||||
/**
|
||||
* Constructeur de la database
|
||||
* On installe le driver et on établit la connection.
|
||||
*/
|
||||
public DataBase() {
|
||||
try {
|
||||
//Besoin d'installer le driver JDBC entre java IDE et le system DBMS pour faire un pont entre les deux
|
||||
|
@ -39,10 +43,12 @@ public class DataBase {
|
|||
e.printStackTrace();
|
||||
System.out.println("Echec installation Driver");
|
||||
}
|
||||
|
||||
try {
|
||||
//Etablir une connexion , forme : (url, "myLogin", "myPassword");
|
||||
this.connection = DriverManager.getConnection("jdbc:mysql://localhost/POO_AL_NM?allowPublicKeyRetrieval=true&useSSL=false", "root", "1234");
|
||||
// Nabil : DECOMMENTER CETTE LIGNE
|
||||
//this.connection = DriverManager.getConnection("jdbc:mysql://localhost/POO_AL_NM?allowPublicKeyRetrieval=true&useSSL=false", "root", "1234");
|
||||
// Auriane : DECOMMENTER CETTE LIGNE
|
||||
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) {
|
||||
|
@ -51,6 +57,10 @@ public class DataBase {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Méthode permettant de renvoyer une instance de la classe DataBase
|
||||
* @return Retourne l'instance du singleton DataBase.
|
||||
*/
|
||||
public static DataBase getInstance() {
|
||||
synchronized (DataBase.class) {
|
||||
DataBase DB = instance;
|
||||
|
@ -61,7 +71,7 @@ public class DataBase {
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
* Methode permettant de creer une table pour stocker les messages entre deux utilisateurs
|
||||
* @param ID1 Id du premier utilisateur
|
||||
* @param ID2 Id du second utilisateur
|
||||
|
@ -91,7 +101,6 @@ public class DataBase {
|
|||
e.printStackTrace();
|
||||
System.out.println("Echec creation Statement");
|
||||
}
|
||||
|
||||
//Execute la donnée SQL statement passe en parametre
|
||||
try {
|
||||
Ps.executeUpdate();
|
||||
|
@ -101,7 +110,7 @@ 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 changer de pseudo
|
||||
* @param Pseudo Nouveau Pseudo de l'utilisateur
|
||||
|
@ -112,8 +121,8 @@ public class DataBase {
|
|||
//Statement est utilisé pour envoyer une requete SQL à la base de donnee
|
||||
try {
|
||||
Ps = connection.prepareStatement(requete);
|
||||
Ps.setString(1, Pseudo);
|
||||
Ps.setString(2, ID);
|
||||
Ps.setString(1, Pseudo); // ? n°1 devient la valeur contenu dans Pseudo
|
||||
Ps.setString(2, ID); // ? n°2 devient la valeur contenu dans ID
|
||||
System.out.println("Statement cree");
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -130,7 +139,7 @@ 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 IDdest Id de l'utilisateur Destinataire du message
|
||||
* @param IDdest Id de celui qui envoi le message
|
||||
|
@ -154,15 +163,15 @@ public class DataBase {
|
|||
//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);
|
||||
Ps.setString(1, IDdest); // ? n°1 devient la valeur contenu dans IDdest
|
||||
Ps.setString(2, IDsrc); // ? n°2 devient la valeur contenu dans IDsrc
|
||||
Ps.setString(3, Msg); // ? n°3 devient la valeur contenu dans Msg
|
||||
//La date de l'envoi n'a pas besoin d'être renseigné, elle est automatique
|
||||
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();
|
||||
|
@ -173,52 +182,54 @@ public class DataBase {
|
|||
}
|
||||
|
||||
|
||||
/*
|
||||
/**
|
||||
* 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 existe= "SELECT Pseudo FROM Utilisateurs WHERE ID = " + ID +",";
|
||||
String existe= "SELECT * FROM `Utilisateurs` WHERE `ID` LIKE '" + ID +"'";
|
||||
Statement stmt = null;
|
||||
ResultSet rs = null ;
|
||||
try {
|
||||
stmt = this.connection.createStatement();
|
||||
} catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
}
|
||||
try {
|
||||
rs = stmt.executeQuery(existe);
|
||||
} catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
}
|
||||
String P = "" ;
|
||||
try {
|
||||
if(rs.next()){
|
||||
P = rs.getString("Pseudo");
|
||||
// On recupere le pseudo de l'utilisateur dont l'ID est le parametre d'entree ID
|
||||
// Si l'utilisateur n'est pas encore dans la base de donnée , P reste vide
|
||||
}
|
||||
} catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
}
|
||||
if( !P.equals("") ) {
|
||||
// L'utilisateur existe deja
|
||||
if (!P.equals(Pseudo)){
|
||||
System.out.println("L'utilisateur " + P + " existe deja");
|
||||
if (!P.equals(Pseudo)){ // On regarde si le pseudo associé à ID dans la base de donnee est bien a jour
|
||||
this.majPseudo(ID,Pseudo); // On met a jour le nouveau pseudo
|
||||
}
|
||||
}
|
||||
else {
|
||||
// L'utilisateur n'existe pas , on va le rajouter.
|
||||
System.out.println("On rajoute l'utilisateur " + 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
|
||||
try {
|
||||
Ps = connection.prepareStatement(requete);
|
||||
Ps.setString(1, ID);
|
||||
Ps.setString(2, Pseudo);
|
||||
Ps.setString(1, ID); // ? n°1 devient la valeur contenu dans ID
|
||||
Ps.setString(2, Pseudo); // ? n°2 devient la valeur contenu dans 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();
|
||||
|
@ -229,20 +240,20 @@ public class DataBase {
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
/**
|
||||
* Methode permettant de mettre a jour les utilisateurs actuellement actif
|
||||
* @param ID Id de l'utilisateur qui vient de se connecter ou deconnecter
|
||||
* @param connecte Boolean true si il est connecte , false sinon
|
||||
* @param Id Id de l'utilisateur qui vient de se connecter ou deconnecter
|
||||
* @param Connecte Boolean true si il est connecte , false sinon
|
||||
*/
|
||||
public void majUtilisateursActifs(Boolean Connecte, String Id) {
|
||||
String requete= "UPDATE `Utilisateurs` SET `Actif`=? WHERE id=?";
|
||||
PreparedStatement Ps = null ;
|
||||
Integer Actif = Connecte ? 1 : 0;
|
||||
Integer Actif = Connecte ? 1 : 0; // True -> 1 , False -> 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);
|
||||
Ps.setInt(1, Actif); // ? n°1 devient la valeur contenu dans Actif (1 ou 0)
|
||||
Ps.setString(2, Id); // // ? n°2 devient la valeur contenu dans Id
|
||||
System.out.println("Statement cree");
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -257,10 +268,11 @@ 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
|
||||
* @param IDdestinataire Celui avec qui correspond ID
|
||||
* @param N le nombre de messages souhaités
|
||||
* @return Les N derniers Messages
|
||||
*/
|
||||
public String recupNMsg(String ID, String IDdestinataire, int N) {
|
||||
|
@ -273,11 +285,11 @@ public class DataBase {
|
|||
grand = IDdestinataire;
|
||||
}
|
||||
else {
|
||||
petit = ID;
|
||||
grand = IDdestinataire ;
|
||||
petit = IDdestinataire;
|
||||
grand = ID ;
|
||||
}
|
||||
String nomTable = "Chat_" + petit + "_" + grand ;
|
||||
String requete= "SELECT * FROM nomTable";
|
||||
String requete = "SELECT * FROM "+ nomTable;
|
||||
Statement stmt = null;
|
||||
ResultSet rs = null ;
|
||||
try {
|
||||
|
@ -290,7 +302,10 @@ public class DataBase {
|
|||
} catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
}
|
||||
|
||||
Integer Taille = tailleBDD(nomTable);
|
||||
if(Taille < N ){
|
||||
N = Taille ;
|
||||
}
|
||||
for(int i = 0 ; i < N; i++){
|
||||
try {
|
||||
if( rs.next()){
|
||||
|
@ -304,24 +319,25 @@ public class DataBase {
|
|||
String PseudoSource = getPseudo(IDSource) ;
|
||||
Msg += ( PseudoSource + "(" + Envoi + ") : " + Message );
|
||||
}
|
||||
|
||||
Msg += '\n';
|
||||
}
|
||||
// MSG de la forme :
|
||||
// Source (Date) : Texte
|
||||
} 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
|
||||
* @param idSource 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;
|
||||
String requete= "SELECT * FROM `Utilisateurs` WHERE `ID` LIKE '" + idSource + "'";
|
||||
Statement stmt = null;
|
||||
ResultSet rs = null ;
|
||||
try {
|
||||
|
@ -335,7 +351,7 @@ public class DataBase {
|
|||
throwables.printStackTrace();
|
||||
}
|
||||
try {
|
||||
if (! rs.getString("Pseudo").equals(null) ){
|
||||
if (rs.next()){
|
||||
Pseudo = rs.getString("Pseudo") ;
|
||||
}
|
||||
} catch (SQLException throwables) {
|
||||
|
@ -344,4 +360,101 @@ public class DataBase {
|
|||
return Pseudo ;
|
||||
}
|
||||
|
||||
/**
|
||||
* Methode permettant de recuperer les messages d'une plage de donnée [deb,fin] envoyés entre 2 utilisateurs
|
||||
* @param ID Utilisateur associé a ChatApp
|
||||
* @param IDdestinataire Celui avec qui correspond ID
|
||||
* @param deb On veut les messages à partir de l'indice deb
|
||||
* @param fin On veut les messages jusqu'a l'indice fin
|
||||
* @return Les messages d'une plage de donnée [deb,fin]
|
||||
*/
|
||||
public String recupMsg(String ID, String IDdestinataire, int deb , int fin) {
|
||||
String Msg = "" ;
|
||||
String petit;
|
||||
String grand;
|
||||
int comparaison = ID.compareTo(IDdestinataire);
|
||||
if (comparaison < 0) {
|
||||
petit = ID;
|
||||
grand = IDdestinataire;
|
||||
}
|
||||
else {
|
||||
petit = IDdestinataire;
|
||||
grand = ID ;
|
||||
}
|
||||
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 < fin; 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 );
|
||||
}
|
||||
Msg += '\n';
|
||||
}
|
||||
} catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
return Msg ;
|
||||
}
|
||||
|
||||
/**
|
||||
* Cette méthode sert à recuperer la taille d'un base de donnée
|
||||
* @param nomTable Nom de la table de donnée dont on veut récuperer le nom
|
||||
* @return Taille de la BDD
|
||||
*/
|
||||
public Integer tailleBDD(String nomTable) {
|
||||
Integer Taille = 0 ;
|
||||
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();
|
||||
}
|
||||
while(true){
|
||||
try {
|
||||
if (!rs.next()) break;
|
||||
} catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
}
|
||||
Taille++;
|
||||
}
|
||||
return Taille;
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
DataBase db = DataBase.getInstance();
|
||||
String Msg = db.recupNMsg("MacYAYA", "MacBibil", 5);
|
||||
System.out.println(Msg);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
読み込み中…
新しいイシューから参照