AJout de commentaires et Correction de Warnings dans les Classes du package Model
This commit is contained in:
父節點
114e9fd8bf
當前提交
d9bf37800e
共有 5 個文件被更改,包括 143 次插入 和 68 次删除
|
@ -1,7 +1,13 @@
|
|||
package chatapp;
|
||||
|
||||
import com.sun.tools.javac.Main;
|
||||
|
||||
public class Launcher {
|
||||
public static void main(String[] args) {
|
||||
try {
|
||||
Main.main(args);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,11 +2,17 @@ package chatapp.Model;
|
|||
|
||||
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 {
|
||||
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 String login = "tp_servlet_006";
|
||||
private String pswd = "baePh9ei";
|
||||
private final String login = "tp_servlet_006";
|
||||
private final String pswd = "baePh9ei";
|
||||
|
||||
|
||||
/*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
|
||||
*/
|
||||
|
||||
private static DataBase instance = null; // Singleton
|
||||
private static final DataBase instance = null; // Singleton
|
||||
|
||||
/**
|
||||
* Constructeur de la database
|
||||
|
@ -63,11 +69,7 @@ public class DataBase {
|
|||
*/
|
||||
public static DataBase getInstance() {
|
||||
synchronized (DataBase.class) {
|
||||
DataBase DB = instance;
|
||||
if (DB == null) {
|
||||
DB = new DataBase();
|
||||
}
|
||||
return DB;
|
||||
return new DataBase();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -103,6 +105,7 @@ public class DataBase {
|
|||
}
|
||||
//Execute la donnée SQL statement passe en parametre
|
||||
try {
|
||||
assert Ps != null;
|
||||
Ps.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -130,6 +133,7 @@ public class DataBase {
|
|||
}
|
||||
//Execute la donnée SQL statement passe en parametre
|
||||
try {
|
||||
assert Ps != null;
|
||||
Ps.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
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
|
||||
* @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
|
||||
*/
|
||||
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
|
||||
try {
|
||||
assert Ps != null;
|
||||
Ps.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -190,7 +195,7 @@ public class DataBase {
|
|||
public void ajoutUtilisateurs(String ID , String Pseudo ) {
|
||||
// Verification que l'utilisateur n'existe pas
|
||||
String existe= "SELECT * FROM `Utilisateurs` WHERE `ID` LIKE '" + ID +"'";
|
||||
Statement stmt = null;
|
||||
Statement stmt;
|
||||
ResultSet rs = null ;
|
||||
try {
|
||||
stmt = this.connection.createStatement();
|
||||
|
@ -200,6 +205,7 @@ public class DataBase {
|
|||
}
|
||||
String P = "" ;
|
||||
try {
|
||||
assert rs != null;
|
||||
if(rs.next()){
|
||||
P = rs.getString("Pseudo");
|
||||
// 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
|
||||
try {
|
||||
assert Ps != null;
|
||||
Ps.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -248,7 +255,7 @@ public class DataBase {
|
|||
public void majUtilisateursActifs(Boolean Connecte, String Id) {
|
||||
String requete= "UPDATE `Utilisateurs` SET `Actif`=? WHERE id=?";
|
||||
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
|
||||
try {
|
||||
Ps = connection.prepareStatement(requete);
|
||||
|
@ -261,6 +268,7 @@ public class DataBase {
|
|||
}
|
||||
//Execute la donnée SQL statement passe en parametre
|
||||
try {
|
||||
assert Ps != null;
|
||||
Ps.executeUpdate();
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
|
@ -276,7 +284,7 @@ public class DataBase {
|
|||
* @return Les N derniers Messages
|
||||
*/
|
||||
public String recupNMsg(String ID, String IDdestinataire, int N) {
|
||||
String Msg = "" ;
|
||||
StringBuilder Msg = new StringBuilder();
|
||||
String petit;
|
||||
String grand;
|
||||
int comparaison = ID.compareTo(IDdestinataire);
|
||||
|
@ -298,6 +306,7 @@ public class DataBase {
|
|||
throwables.printStackTrace();
|
||||
}
|
||||
try {
|
||||
assert stmt != null;
|
||||
rs = stmt.executeQuery(requete);
|
||||
} catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
|
@ -308,18 +317,17 @@ public class DataBase {
|
|||
}
|
||||
for(int i = 0 ; i < N; i++){
|
||||
try {
|
||||
assert rs != null;
|
||||
if( rs.next()){
|
||||
String IDSource = rs.getString("Source");
|
||||
String Envoi = rs.getTimestamp("Envoi").toString();
|
||||
String Message = rs.getString("Message");
|
||||
if (IDSource.equals(ID)){
|
||||
Msg += ( "Moi (" + Envoi + ") : " + Message ) ;
|
||||
}
|
||||
if (IDSource.equals(ID)) Msg.append("Moi (").append(Envoi).append(") : ").append(Message);
|
||||
else {
|
||||
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 :
|
||||
// Source (Date) : Texte
|
||||
|
@ -327,7 +335,7 @@ public class DataBase {
|
|||
throwables.printStackTrace();
|
||||
}
|
||||
}
|
||||
return Msg ;
|
||||
return Msg.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -346,11 +354,13 @@ public class DataBase {
|
|||
throwables.printStackTrace();
|
||||
}
|
||||
try {
|
||||
assert stmt != null;
|
||||
rs = stmt.executeQuery(requete);
|
||||
} catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
}
|
||||
try {
|
||||
assert rs != null;
|
||||
if (rs.next()){
|
||||
Pseudo = rs.getString("Pseudo") ;
|
||||
}
|
||||
|
@ -369,7 +379,7 @@ public class DataBase {
|
|||
* @return Les messages d'une plage de donnée [deb,fin]
|
||||
*/
|
||||
public String recupMsg(String ID, String IDdestinataire, int deb , int fin) {
|
||||
String Msg = "" ;
|
||||
StringBuilder Msg = new StringBuilder();
|
||||
String petit;
|
||||
String grand;
|
||||
int comparaison = ID.compareTo(IDdestinataire);
|
||||
|
@ -391,6 +401,7 @@ public class DataBase {
|
|||
throwables.printStackTrace();
|
||||
}
|
||||
try {
|
||||
assert stmt != null;
|
||||
rs = stmt.executeQuery(requete);
|
||||
} catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
|
@ -401,18 +412,19 @@ public class DataBase {
|
|||
}
|
||||
for(int i = 0 ; i < fin; i++){
|
||||
try {
|
||||
assert rs != null;
|
||||
if( rs.next()){
|
||||
String IDSource = rs.getString("Source");
|
||||
String Envoi = rs.getTimestamp("Envoi").toString();
|
||||
String Message = rs.getString("Message");
|
||||
if (i >= deb) {
|
||||
if (IDSource.equals(ID)) {
|
||||
Msg += ( "Moi (" + Envoi + ") : " + Message ) ;
|
||||
Msg.append("Moi (").append(Envoi).append(") : ").append(Message);
|
||||
} else {
|
||||
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) {
|
||||
|
@ -420,7 +432,7 @@ public class DataBase {
|
|||
}
|
||||
}
|
||||
|
||||
return Msg ;
|
||||
return Msg.toString();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -439,12 +451,14 @@ public class DataBase {
|
|||
throwables.printStackTrace();
|
||||
}
|
||||
try {
|
||||
assert stmt != null;
|
||||
rs = stmt.executeQuery(requete);
|
||||
} catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
}
|
||||
while(true){
|
||||
try {
|
||||
assert rs != null;
|
||||
if (!rs.next()) break;
|
||||
} catch (SQLException throwables) {
|
||||
throwables.printStackTrace();
|
||||
|
|
|
@ -1,32 +1,37 @@
|
|||
package chatapp.Model;
|
||||
|
||||
|
||||
import java.net.InetAddress;
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* <p>
|
||||
* Classe representant La liste des utilisateurs actifs, stockée localement
|
||||
* </p>
|
||||
*/
|
||||
public class ListUtilisateurs {
|
||||
|
||||
// On conserve dans cette liste tout les utilisateurs actuellement actifs
|
||||
private ArrayList<Utilisateur> actifUsers ;
|
||||
|
||||
/**
|
||||
* Constructeur : initialise la liste 'actifUsers'
|
||||
*/
|
||||
public ListUtilisateurs() {
|
||||
this.actifUsers = new ArrayList<Utilisateur>() ;
|
||||
this.actifUsers = new ArrayList<>() ;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ajouter des utilisateurs actifs dans l'attribut liste 'actifUsers'
|
||||
*
|
||||
* @param u on va rajouter cet utilisateur dans la liste
|
||||
*/
|
||||
public void addList(Utilisateur u) {
|
||||
if((verifierUnicite(u.getPseudo()))) {
|
||||
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
|
||||
*/
|
||||
public Utilisateur getPseudoList(String pseudo) {
|
||||
|
@ -39,6 +44,10 @@ public class ListUtilisateurs {
|
|||
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 {
|
||||
for(Utilisateur elem: this.actifUsers)
|
||||
{
|
||||
|
@ -51,11 +60,10 @@ public class ListUtilisateurs {
|
|||
|
||||
/**
|
||||
* Supprimer de la liste des utilisateurs actifs 'actifUsers' un certain utilisateur
|
||||
*
|
||||
* @param u on va supprimer cet utilisateur dans la liste
|
||||
*/
|
||||
public void supprimerList(Utilisateur u) {
|
||||
Boolean Sup = false ;
|
||||
boolean Sup = false ;
|
||||
for(Utilisateur elem: this.actifUsers)
|
||||
{
|
||||
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 nouveau correspond au nouveau pseudo
|
||||
*/
|
||||
|
@ -80,24 +87,27 @@ public class ListUtilisateurs {
|
|||
{
|
||||
if (ancien.equals( elem.getPseudo() ) ) {
|
||||
this.actifUsers.remove(elem);
|
||||
elem.setPseudo(nouveau);;
|
||||
elem.setPseudo(nouveau);
|
||||
this.addList(elem);
|
||||
|
||||
}
|
||||
}
|
||||
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) {
|
||||
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
|
||||
* @return True si aucun utilisateur de la liste possede ce pseudo, false sinon
|
||||
*/
|
||||
public Boolean verifierUnicite(String pseudo) {
|
||||
for(Utilisateur elem: this.actifUsers)
|
||||
|
@ -110,20 +120,22 @@ public class ListUtilisateurs {
|
|||
}
|
||||
|
||||
/**
|
||||
* Mé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 : ");
|
||||
String Utilisateur = "" ;
|
||||
StringBuilder Utilisateur = new StringBuilder();
|
||||
for(Utilisateur elem: this.actifUsers)
|
||||
{
|
||||
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(){
|
||||
return this.actifUsers;
|
||||
}
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
package chatapp.Model;
|
||||
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.text.DateFormat;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* <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>
|
||||
*/
|
||||
public class MessageHorodate implements Serializable {
|
||||
|
@ -34,13 +34,17 @@ public class MessageHorodate implements Serializable {
|
|||
this.type = type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter: Date d'horodatage
|
||||
* On modifie le date d'horodatage
|
||||
*/
|
||||
public void setDate(Date d) {
|
||||
this.setDateHorodatage(d);
|
||||
}
|
||||
|
||||
/**
|
||||
* <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
|
||||
* </p>
|
||||
*/
|
||||
|
@ -57,7 +61,7 @@ public class MessageHorodate implements Serializable {
|
|||
|
||||
/**
|
||||
* <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
|
||||
* </p>
|
||||
*/
|
||||
|
@ -74,18 +78,10 @@ public class MessageHorodate implements Serializable {
|
|||
* </p>
|
||||
*/
|
||||
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 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::")) {
|
||||
|
@ -93,49 +89,84 @@ public class MessageHorodate implements Serializable {
|
|||
}
|
||||
payload += mots[i]+"\n";
|
||||
}
|
||||
|
||||
MessageHorodate mh = new MessageHorodate(destinataire, source, payload, type);
|
||||
//mh.setDate(date);
|
||||
|
||||
return mh ;
|
||||
return new MessageHorodate(destinataire, source, payload, type);
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter: Utilisateur Source
|
||||
* @return Utilisateur a l'origine du message
|
||||
*/
|
||||
public Utilisateur getSource() {
|
||||
return source;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter: Utilisateur Source
|
||||
* On modifie l'utilisateur source
|
||||
*/
|
||||
public void setSource(Utilisateur source) {
|
||||
this.source = source;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter: Utilisateur Destinataire
|
||||
* @return Utilisateur recevant le message
|
||||
*/
|
||||
public Utilisateur getDestinataire() {
|
||||
return destinataire;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter: Utilisateur Destinataire
|
||||
* On modifie l'utilisateur Destinataire
|
||||
*/
|
||||
public void setDestinataire(Utilisateur destinataire) {
|
||||
this.destinataire = destinataire;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter: Message envoye
|
||||
* @return Le message envoye
|
||||
*/
|
||||
public String getMessage() {
|
||||
return Message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter: Message envoye
|
||||
* On modifie le message envoye
|
||||
*/
|
||||
public void setMessage(String message) {
|
||||
Message = message;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter: 'Type' du message
|
||||
* @return On recupere le Type du message
|
||||
*/
|
||||
public int getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter: 'Type' du message horodate
|
||||
* On modifie l'integer 'Type'
|
||||
*/
|
||||
public void setType(int Type) {
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Getter: Date d'horodatage
|
||||
* @return On recupere le date
|
||||
*/
|
||||
public Date getDateHorodatage() {
|
||||
return dateHorodatage;
|
||||
}
|
||||
|
||||
/**
|
||||
* Setter: Date d'horodatage
|
||||
* On modifie le date.
|
||||
*/
|
||||
public void setDateHorodatage(Date dateHorodatage) {
|
||||
this.dateHorodatage = dateHorodatage;
|
||||
}
|
||||
|
|
|
@ -4,6 +4,12 @@ package chatapp.Model;
|
|||
import java.net.InetAddress;
|
||||
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 {
|
||||
|
||||
private String pseudo ;
|
||||
|
@ -11,6 +17,12 @@ public class Utilisateur {
|
|||
private final InetAddress ip ;
|
||||
private final String id ;
|
||||
|
||||
/**
|
||||
* Constructeur : Utilisateur
|
||||
* @param pseudo Le pseudo associe
|
||||
* @param port
|
||||
* @param ip
|
||||
*/
|
||||
public Utilisateur(String pseudo,Integer port, InetAddress ip ){
|
||||
this.setPseudo(pseudo) ;
|
||||
this.setPort(port);
|
||||
|
|
載入中…
Reference in a new issue