From 2263483462e4f0efb324055b48aca1e58885852a Mon Sep 17 00:00:00 2001 From: Seraina Date: Sun, 27 Mar 2022 13:14:42 +0200 Subject: [PATCH 1/2] Added a Class and Method that can reformat the terminal commands into commands that the parser can read --- .../multiplayer/server/MessageFormatter.java | 42 +++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/MessageFormatter.java diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/MessageFormatter.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/MessageFormatter.java new file mode 100644 index 0000000..18c2494 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/MessageFormatter.java @@ -0,0 +1,42 @@ +package ch.unibas.dmi.dbis.cs108.multiplayer.server; + +import java.io.StringBufferInputStream; + +public class MessageFormatter { + + /** + * Takes a given Message and reformats it to where the JServerProtocolParser.parse() method can + * handle it. May need to be redesigned one the games uses a GUI + * + * @param msg the Messaged to be reformatted + * @return the reformatted message + */ + + public static String formatMsg(String msg) { + String header = ""; //header is first two characters + StringBuilder stringBuilder = new StringBuilder(); + String s; // just a friendly helper to save message in + try { + header = msg.substring(0, 2); + } catch (IndexOutOfBoundsException e) { + e.printStackTrace(); + } + switch (header) { + case "/c": + stringBuilder.append("CHATA"); + s = msg.substring(2); + break; + case "/q": + stringBuilder.append("QUITS"); + s = msg.substring(2); + break; + default: + s = msg; + } + stringBuilder.append(s); + return stringBuilder.toString(); + + } + + +} From d6e938e87c8526194202e62d0f37a6adfb50cf87 Mon Sep 17 00:00:00 2001 From: Seraina Date: Sun, 27 Mar 2022 13:19:32 +0200 Subject: [PATCH 2/2] Inserted formatting into parser --- .../dbis/cs108/multiplayer/server/JServerProtocolParser.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/JServerProtocolParser.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/JServerProtocolParser.java index 5abcbe1..2c11e64 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/JServerProtocolParser.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/server/JServerProtocolParser.java @@ -11,15 +11,16 @@ public class JServerProtocolParser { */ public static void parse(String msg, ClientHandler h) { String header = ""; //"header" is the first 5 characters, i.e. the protocol part + String formattedMSG = MessageFormatter.formatMsg(msg); try { - header = msg.substring(0, 5); + header = formattedMSG.substring(0, 5); } catch (IndexOutOfBoundsException e) { e.printStackTrace(); } //System.out.println(header); helpful for debugging switch (header) { case "CHATA": - h.broadcastMessage(msg.substring(6)); + h.broadcastMessage(formattedMSG.substring(6)); break; case "CPING": h.sendMsgToClient("PINGB");