From 18ff19f66ecfecc376d504da5a21de5f1aed8400 Mon Sep 17 00:00:00 2001 From: Dor Bivas Date: Sat, 8 Feb 2014 17:56:37 +0200 Subject: Client: Parsed line new class for the hole cases of parsing. --- src/Client/ParsedLine.java | 81 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 src/Client/ParsedLine.java diff --git a/src/Client/ParsedLine.java b/src/Client/ParsedLine.java new file mode 100644 index 0000000..d5ada95 --- /dev/null +++ b/src/Client/ParsedLine.java @@ -0,0 +1,81 @@ +package Client; +import java.lang.NumberFormatException; +import java.util.Hashtable; + +public class ParsedLine +{ + private String line; + private Hashtable dict; + + ParsedLine(String line) + { + this.line = line; + this.dict = new Hashtable (); + + String[] parsed = this.line.split("[ \t]", 3); + + int messageCode = -1; + try { + messageCode = Integer.getInteger(parsed[1], 10); + } catch (NumberFormatException e) {}; + + if (parsed[1].compareTo("PRIVMSG") == 0) + { + dict.put("user", RemoveFirst(parsed[0])); + String[] parsedUser = dict.get("user").split("!", 2); + dict.put("nick", parsedUser[0]); + + dict.put("command", parsed[1]); + + String[] parsedArgs = parsed[2].split("[ \t]", 2); + dict.put("channel", parsedArgs[0]); + dict.put("message", parsedArgs[1]); + } + else if (parsed[1].compareTo("NICK") == 0) + { + dict.put("user", RemoveFirst(parsed[0])); + String[] parsedUser = dict.get("user").split("!", 2); + dict.put("nick", parsedUser[0]); + + dict.put("command", parsed[1]); + + dict.put("newnick", RemoveFirst(parsed[2])); + } + + else if (parsed[1].compareTo("JOIN") == 0) + { + dict.put("user", RemoveFirst(parsed[0])); + String[] parsedUser = dict.get("user").split("!", 2); + dict.put("nick", parsedUser[0]); + + dict.put("command", parsed[1]); + + dict.put("channel", parsed[2]); + } + + else if (parsed[1].compareTo("PING") == 0) + { + dict.put("server", RemoveFirst(parsed[0])); + dict.put("command", parsed[1]); + } + else if (messageCode >= 0) { + dict.put("server", RemoveFirst(parsed[0])); + dict.put("command", parsed[1]); + String[] parsedArgs = parsed[2].split("[ \t]", 2); + dict.put("nick", parsedArgs[0]); + dict.put("message", parsedArgs[1]); // FIXME: remove ":". starts at various places for various codes + } + } + + public String get(String property) + { + return dict.get(property); + } + + /** Remove the first char from the input (this char is irelevant). TODO: move to Common.*/ + public static String RemoveFirst(String st) + { + return st.substring(1 , st.length()); + } +} + -- cgit v1.2.3