diff --git a/chatGit/bin/controller/Agent.class b/chatGit/bin/controller/Agent.class index ccd221c..6e44182 100644 Binary files a/chatGit/bin/controller/Agent.class and b/chatGit/bin/controller/Agent.class differ diff --git a/chatGit/bin/controller/DataBase.class b/chatGit/bin/controller/DataBase.class index badaa28..1520d67 100644 Binary files a/chatGit/bin/controller/DataBase.class and b/chatGit/bin/controller/DataBase.class differ diff --git a/chatGit/bin/gui/FenetreConnexion$1.class b/chatGit/bin/gui/FenetreConnexion$1.class index 6858f58..4107dc1 100644 Binary files a/chatGit/bin/gui/FenetreConnexion$1.class and b/chatGit/bin/gui/FenetreConnexion$1.class differ diff --git a/chatGit/bin/gui/FenetreConnexion.class b/chatGit/bin/gui/FenetreConnexion.class index 3a07b16..b7fa2af 100644 Binary files a/chatGit/bin/gui/FenetreConnexion.class and b/chatGit/bin/gui/FenetreConnexion.class differ diff --git a/chatGit/bin/gui/FenetreMenu$3$1.class b/chatGit/bin/gui/FenetreMenu$3$1.class deleted file mode 100644 index 076cda8..0000000 Binary files a/chatGit/bin/gui/FenetreMenu$3$1.class and /dev/null differ diff --git a/chatGit/bin/gui/FenetreMenu$3$2.class b/chatGit/bin/gui/FenetreMenu$3$2.class deleted file mode 100644 index 8f41e93..0000000 Binary files a/chatGit/bin/gui/FenetreMenu$3$2.class and /dev/null differ diff --git a/chatGit/bin/gui/FenetreMenu$4$1.class b/chatGit/bin/gui/FenetreMenu$4$1.class deleted file mode 100644 index b0dc91f..0000000 Binary files a/chatGit/bin/gui/FenetreMenu$4$1.class and /dev/null differ diff --git a/chatGit/bin/gui/FenetreMenu$4$2.class b/chatGit/bin/gui/FenetreMenu$4$2.class deleted file mode 100644 index c735226..0000000 Binary files a/chatGit/bin/gui/FenetreMenu$4$2.class and /dev/null differ diff --git a/chatGit/bin/gui/FenetreModifPseudo.class b/chatGit/bin/gui/FenetreModifPseudo.class index 00f3f47..44c377f 100644 Binary files a/chatGit/bin/gui/FenetreModifPseudo.class and b/chatGit/bin/gui/FenetreModifPseudo.class differ diff --git a/chatGit/bin/gui/panda.png b/chatGit/bin/gui/panda.png deleted file mode 100644 index 8525465..0000000 Binary files a/chatGit/bin/gui/panda.png and /dev/null differ diff --git a/chatGit/bin/model/MessageAffichage.class b/chatGit/bin/model/MessageAffichage.class index ca1a317..6afb11a 100644 Binary files a/chatGit/bin/model/MessageAffichage.class and b/chatGit/bin/model/MessageAffichage.class differ diff --git a/chatGit/bin/model/MessageDeconnexion.class b/chatGit/bin/model/MessageDeconnexion.class deleted file mode 100644 index c3dbe65..0000000 Binary files a/chatGit/bin/model/MessageDeconnexion.class and /dev/null differ diff --git a/chatGit/bin/model/MessagePseudo.class b/chatGit/bin/model/MessagePseudo.class index 4e3dd75..30cc222 100644 Binary files a/chatGit/bin/model/MessagePseudo.class and b/chatGit/bin/model/MessagePseudo.class differ diff --git a/chatGit/bin/network/TCPServer.class b/chatGit/bin/network/TCPServer.class index b2dd377..0505bf3 100644 Binary files a/chatGit/bin/network/TCPServer.class and b/chatGit/bin/network/TCPServer.class differ diff --git a/chatGit/bin/network/UDPOutput.class b/chatGit/bin/network/UDPOutput.class index 2f434df..0da22b5 100644 Binary files a/chatGit/bin/network/UDPOutput.class and b/chatGit/bin/network/UDPOutput.class differ diff --git a/chatGit/bin/server/Server.class b/chatGit/bin/server/Server.class deleted file mode 100644 index 15076ff..0000000 Binary files a/chatGit/bin/server/Server.class and /dev/null differ diff --git a/chatGit/src/controller/Agent.java b/chatGit/src/controller/Agent.java index 709b8c3..71fcb05 100644 --- a/chatGit/src/controller/Agent.java +++ b/chatGit/src/controller/Agent.java @@ -134,7 +134,7 @@ public class Agent implements PropertyChangeListener{ switch(msg.getTypeMessage()) { case 0 : //System.out.println("Envoi message présentation"); - MessagePseudo msgPresentation = new MessagePseudo(this.localAddress, msg.getAddressSrc(), this.user.getPort(), msg.getPortSrc(), 1, this.user.getPseudo(), this.user.getId()); + MessagePseudo msgPresentation = new MessagePseudo(this.localAddress, msg.getAddressSrc(), this.user.getPort(), msg.getPortSrc(), 1, this.user.getPseudo(), this.user.getId(), ""); BOut.send(msgPresentation, msg.getAddressSrc(), msg.getPortSrc()); break; case 1 : @@ -149,11 +149,12 @@ public class Agent implements PropertyChangeListener{ } } break; + case 2 : MessagePseudo messageDeconnexion = (MessagePseudo) msg; boolean pseudoExiste = Request.sendPseudo(messageDeconnexion.getPseudo(), "pseudoOK"); - if(!pseudoExiste){ - Request.sendDeconnexion(Integer.toString(messageDeconnexion.getId()),messageDeconnexion.getPseudo(), "deconnexion"); + if(pseudoExiste){ + //Request.sendDeconnexion(Integer.toString(messageDeconnexion.getId()),messageDeconnexion.getPseudo(), "deconnexion"); FenetreMenu.getCb().removeItem(messageDeconnexion.getPseudo()); } @@ -164,25 +165,26 @@ public class Agent implements PropertyChangeListener{ if(FenetreChat.isOuvert()&&FenetreChat.getDest().getPseudo().equals(messageDeconnexion.getPseudo())) { FenetreChat.fermer(); } + break; case 3 : MessagePseudo messageNewPseudo = (MessagePseudo) msg; //Contact contact = list.findContact(messageNewPseudo.getPseudo()); //int id = this.db.getIdFromPseudo(contact.getPseudo()); for(int i = 0 ; i msg_recus = BIn.getListMessage(); @@ -197,7 +199,7 @@ public class Agent implements PropertyChangeListener{ Request.sendUser(pseudo, this.localAddress.toString(), Integer.toString(App.portSrc), "addUser"); int id = db.addUser(pseudo, login); this.user.setId(id); - MessagePseudo msgPresentation = new MessagePseudo(this.localAddress, this.broadcast, this.user.getPort(), App.portDest, 1, this.user.getPseudo(), this.user.getId()); + MessagePseudo msgPresentation = new MessagePseudo(this.localAddress, this.broadcast, this.user.getPort(), App.portDest, 1, this.user.getPseudo(), this.user.getId(), ""); BOut.send(msgPresentation, this.broadcast, App.portDest); this.user.setStatut("En ligne"); //System.out.println("Connexion réussie avec le pseudo : "+pseudo); @@ -208,7 +210,7 @@ public class Agent implements PropertyChangeListener{ } public boolean connectConnexion(String pseudo, String login) throws IOException, InterruptedException { - MessagePseudo msg_connexion = new MessagePseudo(this.localAddress, this.broadcast, this.user.getPort(), App.portDest, 0, "", this.user.getId()); + MessagePseudo msg_connexion = new MessagePseudo(this.localAddress, this.broadcast, this.user.getPort(), App.portDest, 0, "", this.user.getId(), ""); BOut.send(msg_connexion, this.broadcast, App.portDest); Thread.sleep(2000); ArrayList msg_recus = BIn.getListMessage(); @@ -221,7 +223,7 @@ public class Agent implements PropertyChangeListener{ Request.sendUser(pseudo, this.localAddress.toString(), Integer.toString(App.portSrc), "addUser"); int id = db.getIdFromLogin(login); this.user.setId(id); - MessagePseudo msgPresentation = new MessagePseudo(this.localAddress, this.broadcast, this.user.getPort(), App.portDest, 1, this.user.getPseudo(), this.user.getId()); + MessagePseudo msgPresentation = new MessagePseudo(this.localAddress, this.broadcast, this.user.getPort(), App.portDest, 1, this.user.getPseudo(), this.user.getId(), ""); BOut.send(msgPresentation, this.broadcast, App.portDest); db.updateStatus(id, "En ligne"); this.user.setStatut("En ligne"); @@ -247,8 +249,12 @@ public class Agent implements PropertyChangeListener{ public void deconnexion() throws IOException { Request.sendDeconnexion(Integer.toString(this.user.getId()),this.user.getPseudo(), "deconnexion"); - MessagePseudo msgDeconnexion = new MessagePseudo(this.localAddress, this.broadcast, App.portSrc, App.portDest, 2, this.user.getPseudo(), this.user.getId()); + MessagePseudo msgDeconnexion = new MessagePseudo(this.localAddress, this.broadcast, App.portSrc, App.portDest, 2, this.user.getPseudo(), this.user.getId(), ""); BOut.send(msgDeconnexion, this.broadcast, App.portSrc); + this.BIn.interrupt(); + this.BOut.getSocket().close(); + //this.server.getSocket().close(); + this.server.interrupt(); //list.deleteContact(user); System.exit(1); } @@ -261,7 +267,7 @@ public class Agent implements PropertyChangeListener{ db.updatePseudo(this.user.getId(), pseudo); //list.modifierListe(ancienPseudo, pseudo); Request.sendPseudoChange(ancienPseudo, pseudo, "pseudoChanged"); - MessagePseudo msgNewPseudo = new MessagePseudo(this.localAddress, this.broadcast, App.portSrc, App.portDest, 3, pseudo, this.user.getId()); + MessagePseudo msgNewPseudo = new MessagePseudo(this.localAddress, this.broadcast, App.portSrc, App.portDest, 3, pseudo, this.user.getId(), ancienPseudo); BOut.send(msgNewPseudo, this.broadcast, App.portSrc); return true; }else { diff --git a/chatGit/src/controller/DataBase.java b/chatGit/src/controller/DataBase.java index 6a1dd4d..0e1f293 100644 --- a/chatGit/src/controller/DataBase.java +++ b/chatGit/src/controller/DataBase.java @@ -4,8 +4,6 @@ import java.sql.*; import java.util.ArrayList; import model.MessageAffichage; -//import model.MessageAffichage; -import model.MessageChat; public class DataBase { @@ -201,7 +199,7 @@ public class DataBase { "idSrc INT NOT NULL,\n" + "idDest INT NOT NULL,\n" + "message MEDIUMTEXT NOT NULL,\n" + - "date_heure DATETIME NOT NULL\n" + + "date_heure TIMESTAMP NOT NULL\n" + ");"; PreparedStatement pStat = null; try { @@ -285,8 +283,8 @@ public class DataBase { return result; } - public Date getDateFromMessage(int id1, int id2, String message) { - Date date = null; + public Timestamp getDateFromMessage(int id1, int id2, String message) { + Timestamp date = null; int idSrc = id1; int idDest = id2; if(id1>id2) { @@ -301,7 +299,7 @@ public class DataBase { pStat.setString(1, message); ResultSet resPseudo = pStat.executeQuery(); if(resPseudo.first()) { - date = resPseudo.getDate("date_heure"); + date = resPseudo.getTimestamp("date_heure"); } }catch(SQLException e) { e.printStackTrace(); diff --git a/chatGit/src/gui/FenetreConnexion.java b/chatGit/src/gui/FenetreConnexion.java index 04120bb..211bc5d 100644 --- a/chatGit/src/gui/FenetreConnexion.java +++ b/chatGit/src/gui/FenetreConnexion.java @@ -15,8 +15,6 @@ import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.JOptionPane; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; import java.io.IOException; import controller.*; @@ -31,7 +29,7 @@ public class FenetreConnexion implements ActionListener { JLabel Text; JButton Connexion; JButton Cancel; - + /* * Constructeur d'une fenetre d'affichage pour la connexion d'un utilisateur. * Cette fenetre sera munie d'un bouton de connexion et d'une zone de saisie de pseudo. @@ -70,6 +68,7 @@ public class FenetreConnexion implements ActionListener { this.Cancel.addActionListener(this); //On associe au bouton Connexion des actions a realiser this.Connexion.addActionListener(this); + this.Connexion.setSelected(false); // On ajouter les differents elements au panel panel.add(pseudofield); panel.add(Text); @@ -86,22 +85,41 @@ public class FenetreConnexion implements ActionListener { String login = pseudofield.getText(); boolean loginExiste = false; - try { + boolean loginEstActif = false; + try { loginExiste = Request.sendLogin(login, "loginExiste"); } catch (IOException e1) { System.out.println("Pb envoi requete au serveur"); e1.printStackTrace(); } - + try { + loginEstActif = Request.sendLogin(login, "estActif"); + } catch (IOException e1) { + // TODO Auto-generated catch block + e1.printStackTrace(); + } if(!loginExiste) { - JOptionPane.showMessageDialog(frame, "This login doesn't exist") ; + if(!Connexion.isSelected()) { + JOptionPane.showMessageDialog(frame, "This login doesn't exist", "Error", JOptionPane.WARNING_MESSAGE) ; + Connexion.setSelected(true); + frame.dispose(); + new FenetreConnexion(); + } + }else if(loginEstActif){ + if(!Connexion.isSelected()) { + JOptionPane.showMessageDialog(frame, "This login is used by an active user", "Error", JOptionPane.WARNING_MESSAGE) ; + Connexion.setSelected(true); + frame.dispose(); + new FenetreConnexion(); + } }else { // On crée un objet de type ChatApp Agent agent; boolean connexion; try { + agent = new Agent(Tools.getAdress()[0], App.portSrc, App.portDest, login); String pseudo = agent.getDb().getPseudoFromLogin(login); // on tente une connexion avec ce pseudo diff --git a/chatGit/src/gui/FenetreModifPseudo.java b/chatGit/src/gui/FenetreModifPseudo.java index 0e03dd7..59ba8fc 100644 --- a/chatGit/src/gui/FenetreModifPseudo.java +++ b/chatGit/src/gui/FenetreModifPseudo.java @@ -87,7 +87,7 @@ public class FenetreModifPseudo implements ActionListener { frame.dispose(); new FenetreMenu(agent); }else { - JOptionPane.showMessageDialog(frame, "Pseudo already, use choose another one"); + JOptionPane.showMessageDialog(frame, "Pseudo already use, choose another one"); } } catch (HeadlessException e1) { e1.printStackTrace(); diff --git a/chatGit/src/gui/panda.png b/chatGit/src/gui/panda.png deleted file mode 100644 index 8525465..0000000 Binary files a/chatGit/src/gui/panda.png and /dev/null differ diff --git a/chatGit/src/model/MessageDeconnexion.java b/chatGit/src/model/MessageDeconnexion.java deleted file mode 100644 index 8223361..0000000 --- a/chatGit/src/model/MessageDeconnexion.java +++ /dev/null @@ -1,26 +0,0 @@ -package model; - -import java.net.InetAddress; - -public class MessageDeconnexion extends Message{ - private String msg; - private String pseudo; - - public MessageDeconnexion(InetAddress addressSrc, InetAddress addressDest, int portSrc, int portDest, int typeMessage, String pseudo) { - super(addressSrc, addressDest, portSrc, portDest, typeMessage); - this.pseudo = pseudo; - this.msg = "Deconnexion"; - } - - public String getPseudo() { - return pseudo; - } - - public void setPseudo(String pseudo) { - this.pseudo = pseudo; - } - - public String getMsg() { - return msg; - } -} diff --git a/chatGit/src/model/MessagePseudo.java b/chatGit/src/model/MessagePseudo.java index 72029bb..bd32491 100644 --- a/chatGit/src/model/MessagePseudo.java +++ b/chatGit/src/model/MessagePseudo.java @@ -6,11 +6,13 @@ public class MessagePseudo extends Message{ private String pseudo; private int id; + private String ancienPseudo; - public MessagePseudo(InetAddress addressSrc, InetAddress addressDest, int portSrc, int portDest, int typeMessage,String pseudo, int id) { + public MessagePseudo(InetAddress addressSrc, InetAddress addressDest, int portSrc, int portDest, int typeMessage,String pseudo, int id, String ancienPseudo) { super(addressSrc, addressDest, portSrc, portDest, typeMessage); this.pseudo = pseudo; this.id = id; + this.ancienPseudo=ancienPseudo; } public String getPseudo() { @@ -28,6 +30,14 @@ public class MessagePseudo extends Message{ public void setId(int id) { this.id=id; } + + public String getAncienPseudo() { + return ancienPseudo; + } + + public void setAncienPseudo(String ancienPseudo) { + this.ancienPseudo = ancienPseudo; + } } diff --git a/chatGit/src/network/TCPServer.java b/chatGit/src/network/TCPServer.java index 73da550..3fe7a10 100644 --- a/chatGit/src/network/TCPServer.java +++ b/chatGit/src/network/TCPServer.java @@ -58,4 +58,8 @@ public class TCPServer extends Thread{ public TCPChat getConnexionTCPChat() { return this.listeConnexions.remove(0); } + + public ServerSocket getSocket() { + return this.socket; + } } diff --git a/chatGit/src/network/UDPOutput.java b/chatGit/src/network/UDPOutput.java index 8bf39c7..80d8ad5 100644 --- a/chatGit/src/network/UDPOutput.java +++ b/chatGit/src/network/UDPOutput.java @@ -34,7 +34,11 @@ public class UDPOutput { System.out.println("Message envoyé, pseudo = "+msg.getPseudo()+" et num port destination = "+portSrc+"\n"); } - public void send(MessageDeconnexion msg, InetAddress addressDest, int portSrc) throws IOException { + public DatagramSocket getSocket() { + return this.socket; + } + + /*public void send(MessageChangePseudo msg, InetAddress addressDest, int portSrc) throws IOException { byte[] buffer = "".getBytes(); ByteArrayOutputStream byteOutStream = new ByteArrayOutputStream(); ObjectOutputStream objectOutStream = new ObjectOutputStream(byteOutStream); @@ -43,8 +47,8 @@ public class UDPOutput { buffer = byteOutStream.toByteArray(); DatagramPacket packet = new DatagramPacket(buffer,buffer.length,msg.getAddressDest(),msg.getPortDest()); this.socket.send(packet); - System.out.println("Message envoyé, pseudo = "+msg.getMsg()+" et num port destination = "+portSrc+"\n"); - } + System.out.println("Message envoyé, pseudo = "+msg.getPseudo()+" et num port destination = "+portSrc+"\n"); + }*/ } diff --git a/chatGit/src/server/Server.java b/chatGit/src/server/Server.java deleted file mode 100644 index 676cbe8..0000000 --- a/chatGit/src/server/Server.java +++ /dev/null @@ -1,18 +0,0 @@ -package server; - -import network.TCPChat; - -public class Server { - private final String path; - private final int port; - private TCPChat serverConnection; - - public Server(String path, int port) { - this.path=path; - this.port=port; - } - - public void suscribe() { - - } -} \ No newline at end of file