Compare commits
3 commits
Author | SHA1 | Date | |
---|---|---|---|
dd08bd4fb2 | |||
ad27139ee2 | |||
8791c73d38 |
17 changed files with 240 additions and 7 deletions
BIN
Implementation/lib/mysql-connector-java-8.0.22.jar
Normal file
BIN
Implementation/lib/mysql-connector-java-8.0.22.jar
Normal file
Binary file not shown.
BIN
Implementation/mysql-connector-java-8.0.22.jar
Normal file
BIN
Implementation/mysql-connector-java-8.0.22.jar
Normal file
Binary file not shown.
BIN
Implementation/src/Controller/ChatApp.class
Normal file
BIN
Implementation/src/Controller/ChatApp.class
Normal file
Binary file not shown.
|
@ -15,6 +15,8 @@ import java.util.Map;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
import java.util.concurrent.Executors;
|
import java.util.concurrent.Executors;
|
||||||
|
|
||||||
|
import src.Model.DataBase;
|
||||||
import src.Protocoles.*;
|
import src.Protocoles.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -22,7 +24,6 @@ import src.Protocoles.*;
|
||||||
* Classe recapitulant toutes les actions possibles pour un utilisateur
|
* Classe recapitulant toutes les actions possibles pour un utilisateur
|
||||||
* </p>
|
* </p>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class ChatApp {
|
public class ChatApp {
|
||||||
|
|
||||||
/* Liste des utilisateurs actifs */
|
/* Liste des utilisateurs actifs */
|
||||||
|
@ -198,11 +199,9 @@ public class ChatApp {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main (String[] args) throws IOException {
|
public static void main (String[] args) throws IOException {
|
||||||
ChatApp app = new ChatApp(args[0],Integer.parseInt(args[1])) ;
|
System.out.println("Creation DB");
|
||||||
|
DataBase Db = DataBase.getInstance();
|
||||||
|
/*ChatApp app = new ChatApp(args[0],Integer.parseInt(args[1])) ;
|
||||||
|
|
||||||
|
|
||||||
ExecutorService execUDP = Executors.newFixedThreadPool(1000);
|
ExecutorService execUDP = Executors.newFixedThreadPool(1000);
|
||||||
execUDP.submit(new RunnerEcouteUDP(app));
|
execUDP.submit(new RunnerEcouteUDP(app));
|
||||||
try {
|
try {
|
||||||
|
@ -222,7 +221,7 @@ public class ChatApp {
|
||||||
app.getHist("Doudou").afficher10derniers();
|
app.getHist("Doudou").afficher10derniers();
|
||||||
System.out.println("Tentative de connexion avec Doudou");
|
System.out.println("Tentative de connexion avec Doudou");
|
||||||
TCPEchange.demarrerSession(app, app.actifUsers.getPseudoList("Doudou"));
|
TCPEchange.demarrerSession(app, app.actifUsers.getPseudoList("Doudou"));
|
||||||
}
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
BIN
Implementation/src/Controller/Historique.class
Normal file
BIN
Implementation/src/Controller/Historique.class
Normal file
Binary file not shown.
BIN
Implementation/src/Controller/ListUtilisateurs.class
Normal file
BIN
Implementation/src/Controller/ListUtilisateurs.class
Normal file
Binary file not shown.
BIN
Implementation/src/Controller/MessageHorodate.class
Normal file
BIN
Implementation/src/Controller/MessageHorodate.class
Normal file
Binary file not shown.
BIN
Implementation/src/Controller/Utilisateur.class
Normal file
BIN
Implementation/src/Controller/Utilisateur.class
Normal file
Binary file not shown.
BIN
Implementation/src/Model/DataBase.class
Normal file
BIN
Implementation/src/Model/DataBase.class
Normal file
Binary file not shown.
234
Implementation/src/Model/DataBase.java
Normal file
234
Implementation/src/Model/DataBase.java
Normal file
|
@ -0,0 +1,234 @@
|
||||||
|
package src.Model;
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.sql.*;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.sql.DriverManager;
|
||||||
|
|
||||||
|
public class DataBase {
|
||||||
|
private String DBurl = "jdbc:mysql://srv-bdens.insa-toulouse.fr:3306" ;
|
||||||
|
private Connection connection = null;
|
||||||
|
private String login = "tp_servlet_006";
|
||||||
|
private String pswd = "baePh9ei";
|
||||||
|
|
||||||
|
|
||||||
|
/*Format de la table
|
||||||
|
+--------+-------------+---------+---------------------+
|
||||||
|
| ID | Pseudo | Actif | Date d'inscription |
|
||||||
|
+--------+-------------+---------+---------------------+
|
||||||
|
Id correspond à l'addresse IP
|
||||||
|
Pseudo : Dernier Pseudo utilisé pour cette adresse IP, va etre remplacé par le pseudo actuel avec majPseudo
|
||||||
|
Date d'inscription comme son nom l'indique le jour de l'inscription de cette utilisateur
|
||||||
|
Actif est un boolean indicant si l'utilisateur est actif
|
||||||
|
|
||||||
|
Chaque communication entres utilisateurs sera stocké dans une table de la forme
|
||||||
|
+------------------+-----------+---------------+---------------+
|
||||||
|
| Destinataire | Source | Message | Date d'envoi |
|
||||||
|
+--------+---------------------+---------------+---------------+
|
||||||
|
Destinataire -> Id du destinataire du message
|
||||||
|
Source -> Id de celui qui envoie le message
|
||||||
|
Message -> Msg envoye
|
||||||
|
Date d'envoie -> Date a laquelle Source a envoye le message a destinataire
|
||||||
|
*/
|
||||||
|
|
||||||
|
private static DataBase instance = null; // Singleton
|
||||||
|
|
||||||
|
public DataBase() {
|
||||||
|
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.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/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) {
|
||||||
|
e.printStackTrace();
|
||||||
|
System.out.println("Echec d'etablissement de la connexion");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static DataBase getInstance() {
|
||||||
|
synchronized (DataBase.class) {
|
||||||
|
DataBase DB = instance;
|
||||||
|
if (DB == null) {
|
||||||
|
DB = new DataBase();
|
||||||
|
}
|
||||||
|
return DB;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
public void CreationTableHistorique(String ID1 , String ID2) {
|
||||||
|
// Pour eviter d'avoir les tables en double
|
||||||
|
String petit;
|
||||||
|
String grand;
|
||||||
|
int comparaison = ID1.compareTo(ID2);
|
||||||
|
if (comparaison < 0) {
|
||||||
|
petit = ID1;
|
||||||
|
grand = ID2 ;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
petit = ID2;
|
||||||
|
grand = ID1 ;
|
||||||
|
}
|
||||||
|
String nomTable = "Chat_" + petit + "_" + grand ;
|
||||||
|
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 {
|
||||||
|
Ps = connection.prepareStatement(Requete);
|
||||||
|
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 ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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`=? WHERE id=?";
|
||||||
|
PreparedStatement Ps = null ;
|
||||||
|
//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);
|
||||||
|
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 ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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
|
||||||
|
* @param Msg Message envoye entre les deux utilisateurs
|
||||||
|
*/
|
||||||
|
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 ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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
|
||||||
|
* @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
|
||||||
|
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 ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 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
|
||||||
|
*/
|
||||||
|
public void majUtilisateursActifs(Boolean Connecte, String Id) {
|
||||||
|
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 ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
BIN
Implementation/src/Protocoles/RunnerEcouteTCP.class
Normal file
BIN
Implementation/src/Protocoles/RunnerEcouteTCP.class
Normal file
Binary file not shown.
BIN
Implementation/src/Protocoles/RunnerEcouteUDP.class
Normal file
BIN
Implementation/src/Protocoles/RunnerEcouteUDP.class
Normal file
Binary file not shown.
BIN
Implementation/src/Protocoles/RunnerTCPEcoute.class
Normal file
BIN
Implementation/src/Protocoles/RunnerTCPEcoute.class
Normal file
Binary file not shown.
BIN
Implementation/src/Protocoles/RunnerTCPEnvoi.class
Normal file
BIN
Implementation/src/Protocoles/RunnerTCPEnvoi.class
Normal file
Binary file not shown.
BIN
Implementation/src/Protocoles/RunnerUDP.class
Normal file
BIN
Implementation/src/Protocoles/RunnerUDP.class
Normal file
Binary file not shown.
BIN
Implementation/src/Protocoles/TCPEchange.class
Normal file
BIN
Implementation/src/Protocoles/TCPEchange.class
Normal file
Binary file not shown.
BIN
Implementation/src/Protocoles/UDPEchange.class
Normal file
BIN
Implementation/src/Protocoles/UDPEchange.class
Normal file
Binary file not shown.
Loading…
Reference in a new issue