diff options
author | Dor Bivas <dor1_b@walla.com> | 2014-02-08 17:56:37 +0200 |
---|---|---|
committer | Dor Bivas <dor1_b@walla.com> | 2014-02-08 17:56:37 +0200 |
commit | 18ff19f66ecfecc376d504da5a21de5f1aed8400 (patch) | |
tree | 8426c4f07dba7bb1dca4add4b1a0c20a9f1692dc | |
parent | ddbc13d4c7c04c91c231d40069ced1fc030db327 (diff) |
Client: Parsed line new class for the hole cases of parsing.
-rw-r--r-- | src/Client/ParsedLine.java | 81 |
1 files changed, 81 insertions, 0 deletions
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 <String, String> dict; + + ParsedLine(String line) + { + this.line = line; + this.dict = new Hashtable <String, String>(); + + 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()); + } +} + |