AJout de commentaires et Correction de Warnings dans les Classes du package Model

This commit is contained in:
Auriane Lartigue 2020-12-28 11:24:28 +04:00
父節點 114e9fd8bf
當前提交 d9bf37800e
共有 5 個文件被更改,包括 143 次插入68 次删除

查看文件

@ -1,7 +1,13 @@
package chatapp; package chatapp;
import com.sun.tools.javac.Main;
public class Launcher { public class Launcher {
public static void main(String[] args) { public static void main(String[] args) {
Main.main(args); try {
Main.main(args);
} catch (Exception e) {
e.printStackTrace();
}
} }
} }

查看文件

@ -2,11 +2,17 @@ package chatapp.Model;
import java.sql.*; import java.sql.*;
/**
* <p>
* Classe representant la Base de données.
* Celle-ci stocke la liste des utilisateurs ainsi que les échanges entre eux
* </p>
*/
public class DataBase { public class DataBase {
private String DBurl = "jdbc:mysql://srv-bdens.insa-toulouse.fr:3306" ; private final String DBurl = "jdbc:mysql://srv-bdens.insa-toulouse.fr:3306" ;
private Connection connection = null; private Connection connection = null;
private String login = "tp_servlet_006"; private final String login = "tp_servlet_006";
private String pswd = "baePh9ei"; private final String pswd = "baePh9ei";
/*Format de la table Utilisateurs /*Format de la table Utilisateurs
@ -28,7 +34,7 @@ public class DataBase {
Date d'envoie -> Date a laquelle Source a envoye le message a destinataire Date d'envoie -> Date a laquelle Source a envoye le message a destinataire
*/ */
private static DataBase instance = null; // Singleton private static final DataBase instance = null; // Singleton
/** /**
* Constructeur de la database * Constructeur de la database
@ -63,11 +69,7 @@ public class DataBase {
*/ */
public static DataBase getInstance() { public static DataBase getInstance() {
synchronized (DataBase.class) { synchronized (DataBase.class) {
DataBase DB = instance; return new DataBase();
if (DB == null) {
DB = new DataBase();
}
return DB;
} }
} }
@ -103,6 +105,7 @@ public class DataBase {
} }
//Execute la donnée SQL statement passe en parametre //Execute la donnée SQL statement passe en parametre
try { try {
assert Ps != null;
Ps.executeUpdate(); Ps.executeUpdate();
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
@ -130,6 +133,7 @@ public class DataBase {
} }
//Execute la donnée SQL statement passe en parametre //Execute la donnée SQL statement passe en parametre
try { try {
assert Ps != null;
Ps.executeUpdate(); Ps.executeUpdate();
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
@ -142,7 +146,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 * 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 l'utilisateur Destinataire du message
* @param IDdest Id de celui qui envoi le message * @param IDsrc Id de celui qui envoi le message
* @param Msg Message envoye entre les deux utilisateurs * @param Msg Message envoye entre les deux utilisateurs
*/ */
public void ajoutHistorique(String IDdest , String IDsrc, String Msg) { public void ajoutHistorique(String IDdest , String IDsrc, String Msg) {
@ -174,6 +178,7 @@ public class DataBase {
} }
//Execute la donnée SQL statement passe en parametre //Execute la donnée SQL statement passe en parametre
try { try {
assert Ps != null;
Ps.executeUpdate(); Ps.executeUpdate();
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
@ -190,7 +195,7 @@ public class DataBase {
public void ajoutUtilisateurs(String ID , String Pseudo ) { public void ajoutUtilisateurs(String ID , String Pseudo ) {
// Verification que l'utilisateur n'existe pas // Verification que l'utilisateur n'existe pas
String existe= "SELECT * FROM `Utilisateurs` WHERE `ID` LIKE '" + ID +"'"; String existe= "SELECT * FROM `Utilisateurs` WHERE `ID` LIKE '" + ID +"'";
Statement stmt = null; Statement stmt;
ResultSet rs = null ; ResultSet rs = null ;
try { try {
stmt = this.connection.createStatement(); stmt = this.connection.createStatement();
@ -200,6 +205,7 @@ public class DataBase {
} }
String P = "" ; String P = "" ;
try { try {
assert rs != null;
if(rs.next()){ if(rs.next()){
P = rs.getString("Pseudo"); P = rs.getString("Pseudo");
// On recupere le pseudo de l'utilisateur dont l'ID est le parametre d'entree ID // On recupere le pseudo de l'utilisateur dont l'ID est le parametre d'entree ID
@ -232,6 +238,7 @@ public class DataBase {
} }
//Execute la donnée SQL statement passe en parametre //Execute la donnée SQL statement passe en parametre
try { try {
assert Ps != null;
Ps.executeUpdate(); Ps.executeUpdate();
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
@ -248,7 +255,7 @@ public class DataBase {
public void majUtilisateursActifs(Boolean Connecte, String Id) { public void majUtilisateursActifs(Boolean Connecte, String Id) {
String requete= "UPDATE `Utilisateurs` SET `Actif`=? WHERE id=?"; String requete= "UPDATE `Utilisateurs` SET `Actif`=? WHERE id=?";
PreparedStatement Ps = null ; PreparedStatement Ps = null ;
Integer Actif = Connecte ? 1 : 0; // True -> 1 , False -> 0 int Actif = Connecte ? 1 : 0; // True -> 1 , False -> 0
//Statement est utilisé pour envoyer une requete SQL à la base de donnee //Statement est utilisé pour envoyer une requete SQL à la base de donnee
try { try {
Ps = connection.prepareStatement(requete); Ps = connection.prepareStatement(requete);
@ -261,6 +268,7 @@ public class DataBase {
} }
//Execute la donnée SQL statement passe en parametre //Execute la donnée SQL statement passe en parametre
try { try {
assert Ps != null;
Ps.executeUpdate(); Ps.executeUpdate();
} catch (SQLException e) { } catch (SQLException e) {
e.printStackTrace(); e.printStackTrace();
@ -276,7 +284,7 @@ public class DataBase {
* @return Les N derniers Messages * @return Les N derniers Messages
*/ */
public String recupNMsg(String ID, String IDdestinataire, int N) { public String recupNMsg(String ID, String IDdestinataire, int N) {
String Msg = "" ; StringBuilder Msg = new StringBuilder();
String petit; String petit;
String grand; String grand;
int comparaison = ID.compareTo(IDdestinataire); int comparaison = ID.compareTo(IDdestinataire);
@ -298,6 +306,7 @@ public class DataBase {
throwables.printStackTrace(); throwables.printStackTrace();
} }
try { try {
assert stmt != null;
rs = stmt.executeQuery(requete); rs = stmt.executeQuery(requete);
} catch (SQLException throwables) { } catch (SQLException throwables) {
throwables.printStackTrace(); throwables.printStackTrace();
@ -308,18 +317,17 @@ public class DataBase {
} }
for(int i = 0 ; i < N; i++){ for(int i = 0 ; i < N; i++){
try { try {
assert rs != null;
if( rs.next()){ if( rs.next()){
String IDSource = rs.getString("Source"); String IDSource = rs.getString("Source");
String Envoi = rs.getTimestamp("Envoi").toString(); String Envoi = rs.getTimestamp("Envoi").toString();
String Message = rs.getString("Message"); String Message = rs.getString("Message");
if (IDSource.equals(ID)){ if (IDSource.equals(ID)) Msg.append("Moi (").append(Envoi).append(") : ").append(Message);
Msg += ( "Moi (" + Envoi + ") : " + Message ) ;
}
else { else {
String PseudoSource = getPseudo(IDSource) ; String PseudoSource = getPseudo(IDSource) ;
Msg += ( PseudoSource + " (" + Envoi + ") : " + Message ); Msg.append(PseudoSource).append(" (").append(Envoi).append(") : ").append(Message);
} }
Msg += '\n'; Msg.append('\n');
} }
// MSG de la forme : // MSG de la forme :
// Source (Date) : Texte // Source (Date) : Texte
@ -327,7 +335,7 @@ public class DataBase {
throwables.printStackTrace(); throwables.printStackTrace();
} }
} }
return Msg ; return Msg.toString();
} }
/** /**
@ -346,11 +354,13 @@ public class DataBase {
throwables.printStackTrace(); throwables.printStackTrace();
} }
try { try {
assert stmt != null;
rs = stmt.executeQuery(requete); rs = stmt.executeQuery(requete);
} catch (SQLException throwables) { } catch (SQLException throwables) {
throwables.printStackTrace(); throwables.printStackTrace();
} }
try { try {
assert rs != null;
if (rs.next()){ if (rs.next()){
Pseudo = rs.getString("Pseudo") ; Pseudo = rs.getString("Pseudo") ;
} }
@ -369,7 +379,7 @@ public class DataBase {
* @return Les messages d'une plage de donnée [deb,fin] * @return Les messages d'une plage de donnée [deb,fin]
*/ */
public String recupMsg(String ID, String IDdestinataire, int deb , int fin) { public String recupMsg(String ID, String IDdestinataire, int deb , int fin) {
String Msg = "" ; StringBuilder Msg = new StringBuilder();
String petit; String petit;
String grand; String grand;
int comparaison = ID.compareTo(IDdestinataire); int comparaison = ID.compareTo(IDdestinataire);
@ -391,6 +401,7 @@ public class DataBase {
throwables.printStackTrace(); throwables.printStackTrace();
} }
try { try {
assert stmt != null;
rs = stmt.executeQuery(requete); rs = stmt.executeQuery(requete);
} catch (SQLException throwables) { } catch (SQLException throwables) {
throwables.printStackTrace(); throwables.printStackTrace();
@ -401,18 +412,19 @@ public class DataBase {
} }
for(int i = 0 ; i < fin; i++){ for(int i = 0 ; i < fin; i++){
try { try {
assert rs != null;
if( rs.next()){ if( rs.next()){
String IDSource = rs.getString("Source"); String IDSource = rs.getString("Source");
String Envoi = rs.getTimestamp("Envoi").toString(); String Envoi = rs.getTimestamp("Envoi").toString();
String Message = rs.getString("Message"); String Message = rs.getString("Message");
if (i >= deb) { if (i >= deb) {
if (IDSource.equals(ID)) { if (IDSource.equals(ID)) {
Msg += ( "Moi (" + Envoi + ") : " + Message ) ; Msg.append("Moi (").append(Envoi).append(") : ").append(Message);
} else { } else {
String PseudoSource = getPseudo(IDSource); String PseudoSource = getPseudo(IDSource);
Msg += (PseudoSource + " (" + Envoi + ") : " + Message); Msg.append(PseudoSource).append(" (").append(Envoi).append(") : ").append(Message);
} }
Msg += '\n'; Msg.append('\n');
} }
} }
} catch (SQLException throwables) { } catch (SQLException throwables) {
@ -420,7 +432,7 @@ public class DataBase {
} }
} }
return Msg ; return Msg.toString();
} }
/** /**
@ -439,12 +451,14 @@ public class DataBase {
throwables.printStackTrace(); throwables.printStackTrace();
} }
try { try {
assert stmt != null;
rs = stmt.executeQuery(requete); rs = stmt.executeQuery(requete);
} catch (SQLException throwables) { } catch (SQLException throwables) {
throwables.printStackTrace(); throwables.printStackTrace();
} }
while(true){ while(true){
try { try {
assert rs != null;
if (!rs.next()) break; if (!rs.next()) break;
} catch (SQLException throwables) { } catch (SQLException throwables) {
throwables.printStackTrace(); throwables.printStackTrace();

查看文件

@ -1,32 +1,37 @@
package chatapp.Model; package chatapp.Model;
import java.net.InetAddress; import java.net.InetAddress;
import java.util.ArrayList; import java.util.ArrayList;
/**
* <p>
* Classe representant La liste des utilisateurs actifs, stockée localement
* </p>
*/
public class ListUtilisateurs { public class ListUtilisateurs {
// On conserve dans cette liste tout les utilisateurs actuellement actifs
private ArrayList<Utilisateur> actifUsers ; private ArrayList<Utilisateur> actifUsers ;
/**
* Constructeur : initialise la liste 'actifUsers'
*/
public ListUtilisateurs() { public ListUtilisateurs() {
this.actifUsers = new ArrayList<Utilisateur>() ; this.actifUsers = new ArrayList<>() ;
} }
/** /**
* Ajouter des utilisateurs actifs dans l'attribut liste 'actifUsers' * Ajouter des utilisateurs actifs dans l'attribut liste 'actifUsers'
*
* @param u on va rajouter cet utilisateur dans la liste * @param u on va rajouter cet utilisateur dans la liste
*/ */
public void addList(Utilisateur u) { public void addList(Utilisateur u) {
if((verifierUnicite(u.getPseudo()))) { if((verifierUnicite(u.getPseudo()))) {
this.actifUsers.add(u); this.actifUsers.add(u);
} }
} }
/** /**
* Recuperer un utilisateur à partir de son pseudo * Recuperer un utilisateur a partir de son pseudo
*
* @param pseudo Pseudo de l'utilisateur que l'on souhaite retrouver * @param pseudo Pseudo de l'utilisateur que l'on souhaite retrouver
*/ */
public Utilisateur getPseudoList(String pseudo) { public Utilisateur getPseudoList(String pseudo) {
@ -39,6 +44,10 @@ public class ListUtilisateurs {
return null ; return null ;
} }
/**
* Recuperer un utilisateur a partir de son addresse IP
* @param ip @IP de l'utilisateur que l'on souhaite retrouver
*/
public Utilisateur getIPList(InetAddress ip) throws Exception { public Utilisateur getIPList(InetAddress ip) throws Exception {
for(Utilisateur elem: this.actifUsers) for(Utilisateur elem: this.actifUsers)
{ {
@ -51,11 +60,10 @@ public class ListUtilisateurs {
/** /**
* Supprimer de la liste des utilisateurs actifs 'actifUsers' un certain utilisateur * Supprimer de la liste des utilisateurs actifs 'actifUsers' un certain utilisateur
*
* @param u on va supprimer cet utilisateur dans la liste * @param u on va supprimer cet utilisateur dans la liste
*/ */
public void supprimerList(Utilisateur u) { public void supprimerList(Utilisateur u) {
Boolean Sup = false ; boolean Sup = false ;
for(Utilisateur elem: this.actifUsers) for(Utilisateur elem: this.actifUsers)
{ {
if (elem.equals(u) ) { if (elem.equals(u) ) {
@ -70,8 +78,7 @@ public class ListUtilisateurs {
} }
/** /**
* Modifie le nom d'un utilisateur dans la liste des utilisateurs actifs 'actifUsers' * Modifier le pseudo d'un utilisateur dans la liste des utilisateurs actifs 'actifUsers'
*
* @param ancien correspond au pseudo remplacer * @param ancien correspond au pseudo remplacer
* @param nouveau correspond au nouveau pseudo * @param nouveau correspond au nouveau pseudo
*/ */
@ -80,24 +87,27 @@ public class ListUtilisateurs {
{ {
if (ancien.equals( elem.getPseudo() ) ) { if (ancien.equals( elem.getPseudo() ) ) {
this.actifUsers.remove(elem); this.actifUsers.remove(elem);
elem.setPseudo(nouveau);; elem.setPseudo(nouveau);
this.addList(elem); this.addList(elem);
} }
} }
this.afficherListeUtilisateurs(); this.afficherListeUtilisateurs();
} }
/**
* Methode permettant de savoir si un utilisateur est contenu dans la liste 'actifUsers'
* @param u on souhait savoir si cette utilisateur appartient a la liste
* @return True si il appartient, false sinon
*/
public Boolean appartient(Utilisateur u) { public Boolean appartient(Utilisateur u) {
return this.actifUsers.contains(u); return this.actifUsers.contains(u);
} }
/** /**
* Verifie qu'aucun autre utilisateur ne possède le même pseudo * Verifie qu'aucun autre utilisateur ne possede le meme pseudo
*
* @param pseudo on va supprimer cet utilisateur dans la liste * @param pseudo on va supprimer cet utilisateur dans la liste
* @return True si aucun utilisateur de la liste possede ce pseudo, false sinon
*/ */
public Boolean verifierUnicite(String pseudo) { public Boolean verifierUnicite(String pseudo) {
for(Utilisateur elem: this.actifUsers) for(Utilisateur elem: this.actifUsers)
@ -110,20 +120,22 @@ public class ListUtilisateurs {
} }
/** /**
* ©thode affichant la liste des utilisateurs actifs * Methode affichant la liste des utilisateurs actifs
*
*/ */
public String afficherListeUtilisateurs() { public void afficherListeUtilisateurs() {
System.out.println ("Liste des utilisateurs actifs : "); System.out.println ("Liste des utilisateurs actifs : ");
String Utilisateur = "" ; StringBuilder Utilisateur = new StringBuilder();
for(Utilisateur elem: this.actifUsers) for(Utilisateur elem: this.actifUsers)
{ {
System.out.println (elem.toString()); System.out.println (elem.toString());
Utilisateur += (elem + "\n"); Utilisateur.append(elem).append("\n");
} }
return Utilisateur;
} }
/**
* Getter
* @return La liste des utilisateurs actifs
*/
public ArrayList<Utilisateur> getActifUsers(){ public ArrayList<Utilisateur> getActifUsers(){
return this.actifUsers; return this.actifUsers;
} }

查看文件

@ -1,14 +1,14 @@
package chatapp.Model; package chatapp.Model;
import java.io.Serializable;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
import java.io.Serializable;
/** /**
* <p> * <p>
* Classe representant les messages envoyés en TCP lors d'une session de clavardage * Classe representant les messages envoyes en TCP lors d'une session de clavardage.
* Un message Horodate est compose d'un destintaire, d'une source , d'un message et d'une date d'envoie.
* </p> * </p>
*/ */
public class MessageHorodate implements Serializable { public class MessageHorodate implements Serializable {
@ -34,13 +34,17 @@ public class MessageHorodate implements Serializable {
this.type = type; this.type = type;
} }
/**
* Setter: Date d'horodatage
* On modifie le date d'horodatage
*/
public void setDate(Date d) { public void setDate(Date d) {
this.setDateHorodatage(d); this.setDateHorodatage(d);
} }
/** /**
* <p> * <p>
* permet de creer une representation string du message * Permet de creer une representation string du message
* @return Les differents attributs de la classe sous forme de string * @return Les differents attributs de la classe sous forme de string
* </p> * </p>
*/ */
@ -57,7 +61,7 @@ public class MessageHorodate implements Serializable {
/** /**
* <p> * <p>
* permet de creer une representation string de la date d'horodatage * 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 * @return La date d'horodatage du message en format yyyy/MM/dd HH:mm:ss
* </p> * </p>
*/ */
@ -74,18 +78,10 @@ public class MessageHorodate implements Serializable {
* </p> * </p>
*/ */
public static MessageHorodate stringToMessageHorodate(String s) { public static MessageHorodate stringToMessageHorodate(String s) {
String[] mots = s.split("\n");
String mots[] = s.split("\n");
Utilisateur destinataire = Utilisateur.stringToUtilisateur(mots[0].split("::")[1]); Utilisateur destinataire = Utilisateur.stringToUtilisateur(mots[0].split("::")[1]);
Utilisateur source = Utilisateur.stringToUtilisateur(mots[1].split("::")[1]); Utilisateur source = Utilisateur.stringToUtilisateur(mots[1].split("::")[1]);
int type = Integer.parseInt(mots[2].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 = ""; String payload = "";
for(int i=4; i< mots.length; i++) { for(int i=4; i< mots.length; i++) {
if(mots[i].startsWith("Message::")) { if(mots[i].startsWith("Message::")) {
@ -93,49 +89,84 @@ public class MessageHorodate implements Serializable {
} }
payload += mots[i]+"\n"; payload += mots[i]+"\n";
} }
return new MessageHorodate(destinataire, source, payload, type);
MessageHorodate mh = new MessageHorodate(destinataire, source, payload, type);
//mh.setDate(date);
return mh ;
} }
/**
* Getter: Utilisateur Source
* @return Utilisateur a l'origine du message
*/
public Utilisateur getSource() { public Utilisateur getSource() {
return source; return source;
} }
/**
* Setter: Utilisateur Source
* On modifie l'utilisateur source
*/
public void setSource(Utilisateur source) { public void setSource(Utilisateur source) {
this.source = source; this.source = source;
} }
/**
* Getter: Utilisateur Destinataire
* @return Utilisateur recevant le message
*/
public Utilisateur getDestinataire() { public Utilisateur getDestinataire() {
return destinataire; return destinataire;
} }
/**
* Setter: Utilisateur Destinataire
* On modifie l'utilisateur Destinataire
*/
public void setDestinataire(Utilisateur destinataire) { public void setDestinataire(Utilisateur destinataire) {
this.destinataire = destinataire; this.destinataire = destinataire;
} }
/**
* Getter: Message envoye
* @return Le message envoye
*/
public String getMessage() { public String getMessage() {
return Message; return Message;
} }
/**
* Setter: Message envoye
* On modifie le message envoye
*/
public void setMessage(String message) { public void setMessage(String message) {
Message = message; Message = message;
} }
/**
* Getter: 'Type' du message
* @return On recupere le Type du message
*/
public int getType() { public int getType() {
return type; return type;
} }
/**
* Setter: 'Type' du message horodate
* On modifie l'integer 'Type'
*/
public void setType(int Type) { public void setType(int Type) {
this.type = type; this.type = type;
} }
/**
* Getter: Date d'horodatage
* @return On recupere le date
*/
public Date getDateHorodatage() { public Date getDateHorodatage() {
return dateHorodatage; return dateHorodatage;
} }
/**
* Setter: Date d'horodatage
* On modifie le date.
*/
public void setDateHorodatage(Date dateHorodatage) { public void setDateHorodatage(Date dateHorodatage) {
this.dateHorodatage = dateHorodatage; this.dateHorodatage = dateHorodatage;
} }

查看文件

@ -4,6 +4,12 @@ package chatapp.Model;
import java.net.InetAddress; import java.net.InetAddress;
import java.net.UnknownHostException; import java.net.UnknownHostException;
/**
* <p>
* Classe representant un Utilisateur
* Un Utilisateur est associe avec un pseudo, un numero de port, une addresse IP ainsi qu'un ID.
* </p>
*/
public class Utilisateur { public class Utilisateur {
private String pseudo ; private String pseudo ;
@ -11,6 +17,12 @@ public class Utilisateur {
private final InetAddress ip ; private final InetAddress ip ;
private final String id ; private final String id ;
/**
* Constructeur : Utilisateur
* @param pseudo Le pseudo associe
* @param port
* @param ip
*/
public Utilisateur(String pseudo,Integer port, InetAddress ip ){ public Utilisateur(String pseudo,Integer port, InetAddress ip ){
this.setPseudo(pseudo) ; this.setPseudo(pseudo) ;
this.setPort(port); this.setPort(port);