diff --git a/Implementation/src/ChatApp.class b/Implementation/src/ChatApp.class index ce9ebb7..4477cf6 100644 Binary files a/Implementation/src/ChatApp.class and b/Implementation/src/ChatApp.class differ diff --git a/Implementation/src/ChatApp.java b/Implementation/src/ChatApp.java index 5c56390..95e9a35 100644 --- a/Implementation/src/ChatApp.java +++ b/Implementation/src/ChatApp.java @@ -2,6 +2,7 @@ import java.io.IOException; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.ArrayList; +import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -17,7 +18,7 @@ public class ChatApp { /* Liste des utilisateurs actifs */ private ListUtilisateurs actifUsers ; private static ArrayList ListPort = new ArrayList(); - private Map mapHistorique ; + private Map mapHistorique ; @@ -49,8 +50,13 @@ public class ChatApp { //ip.getHostAddress(); this.me = new Utilisateur(pseudo,port,ip); this.actifUsers.addList(getMe()); + this.mapHistorique = new HashMap() ; } + public void majHistorique(String pseudo,Historique h) { + getMapHistorique().put(h.getUser2().getPseudo(),h); + } + /** @@ -112,6 +118,8 @@ public class ChatApp { public static void main (String[] args) throws IOException { //Integer p = 2345 ; ChatApp app = new ChatApp(args[0],Integer.parseInt(args[1])) ; + InetAddress localHost = InetAddress.getLocalHost() ; + System.out.println("Mon adress: "+ localHost.toString()); ListPort.add(1234); ListPort.add(3000); ListPort.add(4000); @@ -151,6 +159,22 @@ public class ChatApp { public ListUtilisateurs getActifUsers() { return actifUsers; } + + public Map getMapHistorique() { + return mapHistorique; + } + + public Historique getHist(String pseudo) { + Historique h = this.mapHistorique.get(pseudo); + if( h != null) { + return h ; + } + else { + h = new Historique(this.me, this.getActifUsers().getPseudoList(pseudo)); + return h ; + } + } + } class Runner implements Runnable { diff --git a/Implementation/src/Historique.class b/Implementation/src/Historique.class new file mode 100644 index 0000000..24db2fd Binary files /dev/null and b/Implementation/src/Historique.class differ diff --git a/Implementation/src/Historique.java b/Implementation/src/Historique.java index 1cbfffb..f416045 100644 --- a/Implementation/src/Historique.java +++ b/Implementation/src/Historique.java @@ -1,17 +1,47 @@ import java.util.ArrayList; +/** +*

+* Classe permettant de sauvegarder les échanges entre deux utilisateurs +*

+*/ public class Historique { private Utilisateur User1; private Utilisateur User2; + // Liste conservant les differents échanges private ArrayList HistoriqueHorodate ; + /** + *

+ * Constructeur : un historique sauvegarde les echanges entre + * User1 et User2 + * @param User1 - un utilisateur + * @param User2 - un second utilisateur + *

+ */ public Historique(Utilisateur User1, Utilisateur User2) { this.User1 = User1; this.User2 = User2; this.HistoriqueHorodate = new ArrayList(); } + /** + *

+ * On ajoute un message échangé dans la liste 'HistoriqueHorodate' + * + * @param mh - le message horodate échangé + *

+ */ public void addMessage(MessageHorodate mh) { this.HistoriqueHorodate.add(mh); } + + /** + *

+ * getter pour recuperer le second utilisateur + *

+ */ + public Utilisateur getUser2() { + return User2; + } } diff --git a/Implementation/src/MessageHorodate.class b/Implementation/src/MessageHorodate.class new file mode 100644 index 0000000..68a892f Binary files /dev/null and b/Implementation/src/MessageHorodate.class differ diff --git a/Implementation/src/MessageHorodate.java b/Implementation/src/MessageHorodate.java index cef9f52..e98a299 100644 --- a/Implementation/src/MessageHorodate.java +++ b/Implementation/src/MessageHorodate.java @@ -56,9 +56,16 @@ public class MessageHorodate { return format.format(this.dateHorodatage); } - public static MessageHorodate stringToMessageHorodate(String s) { + + /** + *

+ * Permet de re creer un message horodate a partir d'un string + * @return un messageHorodate + *

+ */ + /* public static MessageHorodate stringToMessageHorodate(String s) { MessageHorodate mh ; return mh ; - } + }*/ } diff --git a/Implementation/src/Runner.class b/Implementation/src/Runner.class index 8d6625f..d5bb713 100644 Binary files a/Implementation/src/Runner.class and b/Implementation/src/Runner.class differ diff --git a/Implementation/src/TCPEchange.java b/Implementation/src/TCPEchange.java index 8667584..978c739 100644 --- a/Implementation/src/TCPEchange.java +++ b/Implementation/src/TCPEchange.java @@ -4,10 +4,21 @@ import java.io.PrintStream; import java.net.ServerSocket; import java.net.Socket; +/** +*

+* Classe representant les échanges TCP entre utilisateurs. +*

+*/ public class TCPEchange { - public static void envoiTCP(Utilisateur User1,Utilisateur User2, String Msg ) { - MessageHorodate mh = new MessageHorodate(User1, User2, Msg); + public static void envoiTCP(ChatApp app,Utilisateur User2, String Msg ) { + // On cree un messagehorodate + MessageHorodate mh = new MessageHorodate(app.getMe(), User2, Msg); + // on ajoute le msg à son historique + Historique h = app.getHist(User2.getPseudo()); + // on update la liste des historiques de app + app.majHistorique(User2.getPseudo(), h); + try { Socket s = new Socket(User2.getIp(), User2.getPort()); PrintStream output = new PrintStream(s.getOutputStream()); @@ -19,13 +30,13 @@ public class TCPEchange { } } - public static void ecouteTCP() { + public static void ecouteTCP(ChatApp app) { try { ServerSocket ss = new ServerSocket(1234); while(true) { System.out.println("Attente Session de clavardage"); Socket link = ss.accept(); - new Thread(new RunnerTCP(link)).start(); + new Thread(new RunnerTCP(link,app)).start(); } } catch (Exception e) { @@ -36,9 +47,11 @@ public class TCPEchange { class RunnerTCP implements Runnable { final Socket link; + private ChatApp app ; - public RunnerTCP(Socket link) { + public RunnerTCP(Socket link,ChatApp app ) { this.link = link; + this.app = app; } @Override @@ -50,6 +63,13 @@ class RunnerTCP implements Runnable { while ((rcv = is.read()) != -1) { System.out.println("Received: "+ rcv); } + // On recree un messagehorodate à partir du message reçu + + // on ajoute le msg à son historique + + // on update la liste des historiques de app + + System.out.println("Finishing thread"); is.close(); link.close();