From 846d0a8187f8e693f8977e4b38c81efaaea46e61 Mon Sep 17 00:00:00 2001 From: Sebastian Lenzlinger Date: Fri, 25 Mar 2022 12:50:57 +0100 Subject: [PATCH] Noticed enums can be treated as clases to an extent so added a HashSet that accociates strings with Enum fields of the Protocol. ProtocolValidator might become redundant! --- .../Multiplayer/Protocol/NTtBCommands.java | 16 +++++++++++++++- .../Protocol/ProtocolValidator.java | 19 +++++++++++++++++++ .../Multiplayer/Server/ClientMsgDecoder.java | 5 +++-- 3 files changed, 37 insertions(+), 3 deletions(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Protocol/NTtBCommands.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Protocol/NTtBCommands.java index eed6d8b..a9f2fb4 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Protocol/NTtBCommands.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Protocol/NTtBCommands.java @@ -1,6 +1,7 @@ package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol; +import java.util.HashMap; public enum NTtBCommands { /** @@ -26,5 +27,18 @@ public enum NTtBCommands { * MSGRS: "Message recieved": Paramaters: a string detailing to the client that and what the server recieved as command. */ //Server Responses - MSGRS, + MSGRS; + + //Allowes to associate strings with the enum objects. the enum fields are easier for switch statements. + private HashMap stringNTtBCommandsHashMap = new HashMap<>(); + + private NTtBCommands(){ + for(NTtBCommands cmd : NTtBCommands.values()){ + stringNTtBCommandsHashMap.put(cmd.name(), cmd); + } + } + + public boolean isLegal(String s){ + return false; + } } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Protocol/ProtocolValidator.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Protocol/ProtocolValidator.java index 82029ca..534ef55 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Protocol/ProtocolValidator.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Protocol/ProtocolValidator.java @@ -1,4 +1,23 @@ package ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol; +import java.util.EnumSet; +import java.util.HashSet; +//TODO Possibly redundant!! + public class ProtocolValidator { + + //TODO String or NTtBCommands HashSet? + public static HashSet legalCommands = initializeLegalCommands(); + + //Initialize the legalCommands set with the protocol values. + private static HashSet initializeLegalCommands(){ + EnumSet enumVals = EnumSet.allOf(NTtBCommands.class); + return new HashSet<>(enumVals); + } + + public boolean validateCommand(String s) { + //TODO implement if needed + return false; + } + } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Server/ClientMsgDecoder.java b/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Server/ClientMsgDecoder.java index 44fc239..ed0799c 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Server/ClientMsgDecoder.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/Multiplayer/Server/ClientMsgDecoder.java @@ -1,12 +1,13 @@ package ch.unibas.dmi.dbis.cs108.Multiplayer.Server; +import ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.NTtBCommands; import ch.unibas.dmi.dbis.cs108.Multiplayer.Protocol.ProtocolDecoder; import java.util.List; import java.util.Scanner; public class ClientMsgDecoder implements ProtocolDecoder { - + private NTtBCommands protocol; @Override public String decodeMsg(String msg) { @@ -46,6 +47,6 @@ public class ClientMsgDecoder implements ProtocolDecoder { * of server agency according to client msg */ private @interface serverActionBuilder { - //TODO implement what should happen server side + //TODO implement what should happen server side(vote/chat/quit etc) } }