feat(event): 2.6.5: Réception du post par le client (to debug)

This commit is contained in:
bouclyma 2025-01-07 11:51:33 +01:00
parent b145e80978
commit 2f47614779
3 changed files with 49 additions and 28 deletions

View file

@ -3,6 +3,7 @@ package rtgre.chat;
import javafx.application.Platform;
import javafx.beans.Observable;
import javafx.beans.binding.Bindings;
import javafx.beans.value.ObservableValue;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.embed.swing.SwingFXUtils;
@ -110,6 +111,10 @@ public class ChatController implements Initializable {
.decorates(loginTextField)
.immediate();
ObservableValue<Boolean> canSendCondition = connectionButton.selectedProperty().not()
.or(contactsListView.getSelectionModel().selectedItemProperty().isNull());
sendButton.disableProperty().bind(canSendCondition);
messageTextField.disableProperty().bind(canSendCondition);
/* /!\ Set-up d'environnement de test /!\ */
/* -------------------------------------- */
@ -122,7 +127,8 @@ public class ChatController implements Initializable {
String login = getSelectedContactLogin();
if (login != null) {
Message message = new Message(login, messageTextField.getText());
LOGGER.info(message.toString());
LOGGER.info("Sending " + message);
client.sendMessageEvent(message);
}
}
@ -269,7 +275,8 @@ public class ChatController implements Initializable {
if (contactSelected != null) {
LOGGER.info("Clic sur " + contactSelected);
}
Post postSys = new Post("system", contactSelected.getLogin(), "Bienvenue dans la discussion avec " + contactSelected.getLogin());
Post postSys = new Post("system", loginTextField.getText(), "Bienvenue dans la discussion avec " + contactSelected.getLogin());
postsObservableList.clear();
postsObservableList.add(postSys);
postListView.refresh();
}
@ -277,23 +284,26 @@ public class ChatController implements Initializable {
public void handleEvent(rtgre.modeles.Event event) {
LOGGER.info("Received new event! : " + event);
LOGGER.info(event.getType());
// switch (event.getType()) {
// case "CONT":
// handleContEvent(event.getContent());
// default:
// LOGGER.warning("Unhandled event type: " + event.getType());
// this.client.close();
// }
if (event.getType().equals("CONT")) {
handleContEvent(event.getContent());
} else if (event.getType().equals("POST")) {
handlePostEvent(event.getContent());
} else {
LOGGER.warning("Unhandled event type: " + event.getType());
this.client.close();
}
}
private void handlePostEvent(JSONObject content) {
if (content.getString("from").equals(contactsListView.getSelectionModel().getSelectedItem()) ||
content.getString("to").equals(loginTextField.getText())) {
postVector.add(Post.fromJson(content));
postsObservableList.add(Post.fromJson(content));
postListView.refresh();
}
}
private void handleContEvent(JSONObject content) {
Contact contact = contactMap.getContact(content.getString("login"));
if (contact != null) {

View file

@ -5,6 +5,7 @@ import org.json.JSONObject;
import rtgre.chat.ChatController;
import rtgre.modeles.Contact;
import rtgre.modeles.Event;
import rtgre.modeles.Message;
import java.io.BufferedReader;
import java.io.IOException;
@ -85,4 +86,8 @@ public class ChatClient extends ClientTCP {
public ChatController getListener() {
return listener;
}
public void sendMessageEvent(Message msg) {
sendEvent(new Event("MESG", msg.toJsonObject()));
}
}

View file

@ -3,9 +3,7 @@ package rtgre.server;
import org.json.JSONException;
import org.json.JSONObject;
import rtgre.chat.net.ChatClient;
import rtgre.modeles.Contact;
import rtgre.modeles.ContactMap;
import rtgre.modeles.Event;
import rtgre.modeles.*;
import java.io.*;
import java.net.ServerSocket;
@ -24,6 +22,7 @@ public class ChatServer {
private static final Logger LOGGER = Logger.getLogger(ChatServer.class.getCanonicalName());
private Vector<ChatClientHandler> clientList;
private PostVector postVector;
private ContactMap contactMap;
static {
@ -237,18 +236,6 @@ public class ChatServer {
private boolean handleEvent(String message) throws JSONException, IllegalStateException {
Event event = Event.fromJson(message);
// switch (event.getType()) {
// case Event.AUTH:
// doLogin(event.getContent());
// LOGGER.finest("Login successful");
// return true;
// case Event.LIST_CONTACTS:
// doListContact(event.getContent());
// LOGGER.finest("Sending contacts");
// default:
// LOGGER.warning("Unhandled event type: " + event.getType());
// return false;
// }
if (event.getType().equals(Event.AUTH)) {
doLogin(event.getContent());
LOGGER.finest("Login successful");
@ -256,12 +243,31 @@ public class ChatServer {
} else if (event.getType().equals(Event.LIST_CONTACTS)) {
doListContact(event.getContent());
LOGGER.finest("Sending contacts");
return true;
} else if (event.getType().equals(Event.MESG)) {
doMessage(event.getContent());
return true;
} else {
LOGGER.warning("Unhandled event type: " + event.getType());
return false;
}
return false;
}
private void doMessage(JSONObject content) throws JSONException, IllegalStateException {
if (content.getString("to").equals(user.getLogin()) || !contactMap.containsKey(content.getString("to"))) {
throw new IllegalStateException();
} else {
Post post = new Post(
user.getLogin(),
Message.fromJson(content)
);
Event postEvent = new Event("POST", post.toJsonObject());
sendEventToContact(contactMap.getContact(post.getFrom()), postEvent);
sendEventToContact(contactMap.getContact(post.getTo()), postEvent);
postVector.add(post);
}
}
private void doListContact(JSONObject content) throws JSONException, IllegalStateException {