ChatApp-AL-NM/Implementation/src/MessageHorodate.java

97 lines
2.6 KiB
Java

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* <p>
* Classe representant les messages envoyés en TCP lors d'une session de clavardage
* </p>
*/
public class MessageHorodate {
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;
/**
* <p>
* Constructeur , le message va etre horodate
* @param destinataire - Destinataire du message
* @param source - Source du message
* @param Message - Message envoye
* </p>
*/
public MessageHorodate(Utilisateur destinataire, Utilisateur source, String Message, int type) {
this.destinataire = destinataire ;
this.source = source ;
this.Message = Message ;
this.dateHorodatage = new Date();
this.type = type;
}
public void setDate(Date d) {
this.dateHorodatage=d;
}
/**
* <p>
* permet de creer une representation string du message
* @return Les differents attributs de la classe sous forme de string
* </p>
*/
@Override
public String toString() {
String Msg = "";
Msg += ("Destinataire:" + this.destinataire + "\n") ;
Msg += ("Source:" + this.source+ "\n") ;
Msg += ("Type:"+ this.type+ "\n");
Msg += ("Date:" + this.dateToString() + "\n") ;
Msg += ("Message:" + this.Message + "\n" );
return Msg ;
}
/**
* <p>
* 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>
*/
public String dateToString() {
DateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
return format.format(this.dateHorodatage);
}
/**
* <p>
* Permet de re creer un message horodate a partir d'un string
* @return un messageHorodate
* </p>
*/
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 (ParseException e) {
e.printStackTrace();
}
String payload = "";
for(int i=4; i< mots.length; i++) {
payload += mots[i]+"\n";
}
MessageHorodate mh = new MessageHorodate(destinataire, source, payload, type);
mh.setDate(date);
return mh ;
}
}