diff --git a/Implementation/.gitignore b/Implementation/.gitignore index ae3c172..7f6bfa0 100644 --- a/Implementation/.gitignore +++ b/Implementation/.gitignore @@ -1 +1,85 @@ +############################## +## Java +############################## +.mtj.tmp/ +*.class +*.jar +*.war +*.ear +*.nar +hs_err_pid* + +############################## +## Maven +############################## +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +pom.xml.next +pom.xml.bak +release.properties +dependency-reduced-pom.xml +buildNumber.properties +.mvn/timing.properties +.mvn/wrapper/maven-wrapper.jar + +############################## +## Gradle +############################## /bin/ +bin/ +build/ +.gradle +.gradletasknamecache +gradle-app.setting +!gradle-wrapper.jar + +############################## +## IntelliJ +############################## +out/ +.idea/ +.idea_modules/ +*.iml +*.ipr +*.iws + +############################## +## Eclipse +############################## +.settings/ +bin/ +tmp/ +.metadata +.classpath +.project +*.tmp +*.bak +*.swp +*~.nib +local.properties +.loadpath +.factorypath + +############################## +## NetBeans +############################## +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +nbactions.xml +nb-configuration.xml + +############################## +## Visual Studio Code +############################## +.vscode/ +.code-workspace + +############################## +## OS X +############################## +.DS_Store diff --git a/Implementation/src/Controller/ChatApp.class b/Implementation/src/Controller/ChatApp.class deleted file mode 100644 index 7f8dc3b..0000000 Binary files a/Implementation/src/Controller/ChatApp.class and /dev/null differ diff --git a/Implementation/src/Controller/ChatApp.java b/Implementation/src/Controller/ChatApp.java index 2aad060..80c92e6 100644 --- a/Implementation/src/Controller/ChatApp.java +++ b/Implementation/src/Controller/ChatApp.java @@ -16,6 +16,7 @@ import java.util.Objects; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import src.Protocoles.*; +import src.Model.*; /** *
@@ -23,7 +24,7 @@ import src.Protocoles.*; *
*/ -public class ChatApp { +public class ChatApp extends Thread{ /* Liste des utilisateurs actifs */ private ListUtilisateurs actifUsers ; @@ -196,7 +197,6 @@ public class ChatApp { return h ; } } - public static void main (String[] args) throws IOException { ChatApp app = new ChatApp(args[0],Integer.parseInt(args[1])) ; System.out.println("On lance le chatapp"); diff --git a/Implementation/src/Controller/Historique.class b/Implementation/src/Controller/Historique.class deleted file mode 100644 index ded444c..0000000 Binary files a/Implementation/src/Controller/Historique.class and /dev/null differ diff --git a/Implementation/src/Controller/Historique.java b/Implementation/src/Controller/Historique.java deleted file mode 100644 index 270502a..0000000 --- a/Implementation/src/Controller/Historique.java +++ /dev/null @@ -1,63 +0,0 @@ -package src.Controller; - -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- * 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; - } - - public void afficher10derniers() { - System.out.println("Demarrage de l'affichage partiel de l'historique"); - System.out.println("Il y a actuellement " + HistoriqueHorodate.size() +" elements dans l'historique"); - int n =10; - if(HistoriqueHorodate.size()<=10) { - n = HistoriqueHorodate.size(); - } - for(int i = 0; i-* Classe representant les messages envoyés en TCP lors d'une session de clavardage -*
-*/ -public class MessageHorodate implements Serializable { - private Utilisateur destinataire ; - private Utilisateur source ; - private Date dateHorodatage ; - private int type; // 0 = debut de la communication, 1= message de communication, 2 = fin de la communicataion - private String Message; - - /** - *- * Constructeur , le message va etre horodate - * @param destinataire - Destinataire du message - * @param source - Source du message - * @param Message - Message envoye - *
- */ - public MessageHorodate(Utilisateur destinataire, Utilisateur source, String Message, int type) { - this.setDestinataire(destinataire) ; - this.setSource(source) ; - this.setMessage(Message) ; - this.setDateHorodatage(new Date()); - this.type = type; - } - - public void setDate(Date d) { - this.setDateHorodatage(d); - } - - /** - *- * permet de creer une representation string du message - * @return Les differents attributs de la classe sous forme de string - *
- */ - @Override - public String toString() { - String Msg = ""; - Msg += ("Destinataire::" + this.getDestinataire() + "\n") ; - Msg += ("Source::" + this.getSource()+ "\n") ; - Msg += ("Type::"+ this.type+ "\n"); - Msg += ("Date::" + this.dateToString() + "\n") ; - Msg += ("Message::" + this.getMessage() + "\n" ); - return Msg ; - } - - /** - *- * permet de creer une representation string de la date d'horodatage - * @return La date d'horodatage du message en format yyyy/MM/dd HH:mm:ss - *
- */ - public String dateToString() { - DateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); - return format.format(this.getDateHorodatage()); - } - - - /** - *- * Permet de re creer un message horodate a partir d'un string - * @return un messageHorodate - *
- */ - public static MessageHorodate stringToMessageHorodate(String s) { - - String mots[] = s.split("\n"); - Utilisateur destinataire = Utilisateur.stringToUtilisateur(mots[0].split("::")[1]); - Utilisateur source = Utilisateur.stringToUtilisateur(mots[1].split("::")[1]); - int type = Integer.parseInt(mots[2].split("::")[1]); - DateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); - Date date = new Date(); - /*try { - date = format.parse(mots[3].split("::")[1]); - } catch (Exception e) { - e.printStackTrace(); - }*/ - String payload = ""; - for(int i=4; i< mots.length; i++) { - if(mots[i].startsWith("Message::")) { - mots[i]=mots[i].split("::")[1]; - } - payload += mots[i]+"\n"; - } - - MessageHorodate mh = new MessageHorodate(destinataire, source, payload, type); - //mh.setDate(date); - - return mh ; - } - - public Utilisateur getSource() { - return source; - } - - public void setSource(Utilisateur source) { - this.source = source; - } - - public Utilisateur getDestinataire() { - return destinataire; - } - - public void setDestinataire(Utilisateur destinataire) { - this.destinataire = destinataire; - } - - public String getMessage() { - return Message; - } - - public void setMessage(String message) { - Message = message; - } - - public int getType() { - return type; - } - - public void setType(int Type) { - this.type = type; - } - - public Date getDateHorodatage() { - return dateHorodatage; - } - - public void setDateHorodatage(Date dateHorodatage) { - this.dateHorodatage = dateHorodatage; - } - -} diff --git a/Implementation/src/Controller/Modification_Pseudo.java b/Implementation/src/Controller/Modification_Pseudo.java deleted file mode 100644 index e34b110..0000000 --- a/Implementation/src/Controller/Modification_Pseudo.java +++ /dev/null @@ -1,51 +0,0 @@ -package src.Controller; - -import java.awt.BorderLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.io.IOException; - -import javax.swing.ImageIcon; -import javax.swing.JButton; -import javax.swing.JFrame; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JTextField; -import javax.swing.SwingConstants; - -public class Modification_Pseudo extends JPanel{ - ChatApp app; - public Modification_Pseudo(String name, ChatApp app) { - this.app = app ; - JLabel Text = new JLabel("Entrez un nouveau nom d'utilisateur!", SwingConstants.CENTER); - JTextField pseudofield = new JTextField(2); // Zone d'insertion de texte - JButton home = new JButton(new ImageIcon("/Users/auriane/Desktop/ChatApp-AL-NM/Implementation/src/images/Home.png")); - //Ajout d'un bouton Valider - JButton Valider = new JButton("Valider"); - this.getRootPane().setDefaultButton(Valider); - //Listen to events from the Valider button. - Valider.addActionListener(new ActionListener(){ - public void actionPerformed(ActionEvent event) { - String nouveau = pseudofield.getText(); - try { - Boolean resultat = app.modifierPseudo(nouveau); - if(resultat) { - - } - else { - //JOptionPane.showMessageDialog(this, "Echec de modification de pseudo, " + nouveau +" deja pris", JOptionPane.WARNING_MESSAGE); - - } - } catch (IOException e) { - e.printStackTrace(); - } - } - }); - this.add(home); - this.add(Text); - this.add(BorderLayout.CENTER,pseudofield); - this.add(BorderLayout.SOUTH,Valider); - -} -} diff --git a/Implementation/src/Controller/Utilisateur.class b/Implementation/src/Controller/Utilisateur.class deleted file mode 100644 index c8573fc..0000000 Binary files a/Implementation/src/Controller/Utilisateur.class and /dev/null differ diff --git a/Implementation/src/Controller/Utilisateur.java b/Implementation/src/Controller/Utilisateur.java deleted file mode 100644 index 9a35547..0000000 --- a/Implementation/src/Controller/Utilisateur.java +++ /dev/null @@ -1,77 +0,0 @@ -package src.Controller; - -import java.net.InetAddress; -import java.net.UnknownHostException; - -public class Utilisateur extends Object { - - private String pseudo ; - private Integer port; - private InetAddress ip ; - private String id ; - - public Utilisateur(String pseudo,Integer port, InetAddress ip ){ - this.setPseudo(pseudo) ; - this.setPort(port); - this.ip = ip ; - this.id = ip.getHostName() ; - } - - public String getPseudo() { - return pseudo; - } - - public void setPseudo(String pseudo) { - this.pseudo = pseudo; - } - - public Integer getPort() { - return port; - } - - public void setPort(Integer port) { - this.port = port; - } - - public InetAddress getIp() { - return ip; - } - public String getId() { - return id; - } - - @Override - public String toString(){ - String s = ""; - s+="pseudo " + this.pseudo + " | "; - s+="port " + (this.port).toString() + " | "; - s+="ip " + (this.ip).toString() + " | "; - s+="id " + (this.id).toString() + " | "; - return s; - } - - public static Utilisateur stringToUtilisateur(String s) { - String name = ""; - Integer port = 0; - String ip = "" ; - String id = ""; - String mots[] = s.split(" "); - name=mots[1]; - port=Integer.parseInt(mots[4]); - ip=mots[7]; - id=mots[10]; - Utilisateur user = null; - try { - user = new Utilisateur(name,port,InetAddress.getByName(ip.split("/")[1])); - } catch (UnknownHostException e) { - e.printStackTrace(); - } - return user; - } - - - public Boolean equals(Utilisateur u) { - return this.getId().equals( u.getId() ) ; - } - -} diff --git a/Implementation/src/Protocoles/RunnerEcouteTCP.class b/Implementation/src/Protocoles/RunnerEcouteTCP.class deleted file mode 100644 index ffc55ae..0000000 Binary files a/Implementation/src/Protocoles/RunnerEcouteTCP.class and /dev/null differ diff --git a/Implementation/src/Protocoles/RunnerEcouteTCP.java b/Implementation/src/Protocoles/RunnerEcouteTCP.java index d09e6ea..e18732c 100644 --- a/Implementation/src/Protocoles/RunnerEcouteTCP.java +++ b/Implementation/src/Protocoles/RunnerEcouteTCP.java @@ -10,13 +10,14 @@ import java.util.ArrayList; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -public class RunnerEcouteTCP implements Runnable { +public class RunnerEcouteTCP extends Thread { public ChatApp app ; private PropertyChangeSupport pcs; private ArrayList* Classe representant les echanges UDP entre utilisateurs. diff --git a/Implementation/src/View/ViewSession.java b/Implementation/src/View/ViewSession.java index 1a7077b..1110cd0 100644 --- a/Implementation/src/View/ViewSession.java +++ b/Implementation/src/View/ViewSession.java @@ -21,6 +21,8 @@ import javax.swing.JTextArea; import javax.swing.SwingConstants; import src.Controller.*; +import src.Model.MessageHorodate; +import src.Model.Utilisateur; import src.Protocoles.SessionClavardage; import java.awt.GridBagLayout; diff --git a/Implementation/src/View/View_Accueil.java b/Implementation/src/View/View_Accueil.java index 92b24f1..f795819 100644 --- a/Implementation/src/View/View_Accueil.java +++ b/Implementation/src/View/View_Accueil.java @@ -94,9 +94,9 @@ public class View_Accueil implements ActionListener{ ExecutorService execUDP = Executors.newFixedThreadPool(1000); System.out.println("Lancement de UDP"); execUDP.submit(new RunnerEcouteUDP(app)); - ExecutorService execTCP = Executors.newFixedThreadPool(1000); + /*ExecutorService execTCP = Executors.newFixedThreadPool(1000); System.out.println("On lance l'écoute TCP de chatapp"); - execTCP.submit(new RunnerEcouteTCP(app)); + execTCP.submit(new RunnerEcouteTCP(app));*/ Boolean connexion = false ; try { // on tente une connexion avec ce pseudo diff --git a/Implementation/src/View/View_Clavardage.java b/Implementation/src/View/View_Clavardage.java index a5d73ca..4adfbf6 100644 --- a/Implementation/src/View/View_Clavardage.java +++ b/Implementation/src/View/View_Clavardage.java @@ -19,6 +19,7 @@ import javax.swing.JTextArea; import javax.swing.SwingConstants; import src.Controller.*; +import src.Model.Utilisateur; import java.awt.GridBagLayout; import java.awt.Font; diff --git a/Implementation/src/View/View_Menu.java b/Implementation/src/View/View_Menu.java index 800e858..6576c7f 100644 --- a/Implementation/src/View/View_Menu.java +++ b/Implementation/src/View/View_Menu.java @@ -37,6 +37,7 @@ import javax.swing.JTextField; import javax.swing.SwingConstants; import src.Controller.*; +import src.Model.Utilisateur; import src.Protocoles.RunnerEcouteTCP; import src.Protocoles.SessionClavardage; @@ -56,7 +57,7 @@ public class View_Menu implements PropertyChangeListener{ JLabel jlabel; JLabel Txt; WindowAdapter wa ; - + private RunnerEcouteTCP ecouteTCP; /* * Constructeur d'une fenetre de menu apres la connexion d'un utilisateur. * @param app Un objet de type ChatApp pour posseder toutes les informations de l'utilisateur @@ -96,10 +97,11 @@ public class View_Menu implements PropertyChangeListener{ // Afficher la fenetre frame.pack(); frame.setVisible(true); - RunnerEcouteTCP.addPropertyChangeListener(this); + ecouteTCP.start(); + this.ecouteTCP.addPropertyChangeListener(this); //TODO Problem } - + /** * Methode static creant un pop-up demandant a l'utilisateur si il souhaite vraiment quitter. @@ -264,7 +266,9 @@ public class View_Menu implements PropertyChangeListener{ public void propertyChange(PropertyChangeEvent pce) { switch(pce.getPropertyName()) { case "NouvelleSession": - + SessionClavardage session = this.ecouteTCP.getSessionClavardage(); + session.addPropertyChangeListener(this); + break; } }