summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDor Bivas <dor1_b@walla.com>2014-02-08 17:56:37 +0200
committerDor Bivas <dor1_b@walla.com>2014-02-08 17:56:37 +0200
commit18ff19f66ecfecc376d504da5a21de5f1aed8400 (patch)
tree8426c4f07dba7bb1dca4add4b1a0c20a9f1692dc
parentddbc13d4c7c04c91c231d40069ced1fc030db327 (diff)
Client: Parsed line new class for the hole cases of parsing.
-rw-r--r--src/Client/ParsedLine.java81
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());
+ }
+}
+