]> git.somenet.org - irc/pjirc-ng.git/blob - src/main/java/irc/IRCInterpretor.java
Pjirc 2.2.1 as available on the net, reformatted and made it compile.
[irc/pjirc-ng.git] / src / main / java / irc / IRCInterpretor.java
1 /*****************************************************/
2 /*          This java file is a part of the          */
3 /*                                                   */
4 /*           -  Plouf's Java IRC Client  -           */
5 /*                                                   */
6 /*   Copyright (C)  2002 - 2004 Philippe Detournay   */
7 /*                                                   */
8 /*         All contacts : theplouf@yahoo.com         */
9 /*                                                   */
10 /*  PJIRC is free software; you can redistribute     */
11 /*  it and/or modify it under the terms of the GNU   */
12 /*  General Public License as published by the       */
13 /*  Free Software Foundation; version 2 or later of  */
14 /*  the License.                                     */
15 /*                                                   */
16 /*  PJIRC is distributed in the hope that it will    */
17 /*  be useful, but WITHOUT ANY WARRANTY; without     */
18 /*  even the implied warranty of MERCHANTABILITY or  */
19 /*  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   */
20 /*  General Public License for more details.         */
21 /*                                                   */
22 /*  You should have received a copy of the GNU       */
23 /*  General Public License along with PJIRC; if      */
24 /*  not, write to the Free Software Foundation,      */
25 /*  Inc., 59 Temple Place, Suite 330, Boston,        */
26 /*  MA  02111-1307  USA                              */
27 /*                                                   */
28 /*****************************************************/
29
30 package irc;
31
32 import java.util.Enumeration;
33
34 /**
35  * IRC interpretor.
36  */
37 public class IRCInterpretor extends BasicInterpretor {
38         /**
39          * Create a new IRCInterpretor.
40          * 
41          * @param config
42          *          global configuration.
43          */
44         public IRCInterpretor(IRCConfiguration config) {
45                 super(config);
46         }
47
48         @Override
49         protected void handleCommand(Source source, String cmd, String[] parts, String[] cumul) {
50                 try {
51
52                         IRCServer server = (IRCServer) source.getServer();
53                         if (cmd.equals("amsg")) {
54                                 test(cmd, parts, 1);
55                                 Enumeration e = server.getChannels();
56                                 while (e.hasMoreElements()) {
57                                         ((Channel) e.nextElement()).sendString(cumul[1]);
58                                 }
59                         } else if (cmd.equals("ame")) {
60                                 test(cmd, parts, 1);
61                                 Enumeration e = server.getChannels();
62                                 while (e.hasMoreElements()) {
63                                         ((Channel) e.nextElement()).sendString("/me " + cumul[1]);
64                                 }
65                         } else if (cmd.equals("list")) {
66                                 if (parts.length <= 1)
67                                         server.execute("LIST");
68                                 else
69                                         server.execute("LIST " + parts[1]);
70                         } else if (cmd.equals("topic")) {
71                                 test(cmd, parts, 2);
72                                 server.execute("TOPIC " + parts[1] + " :" + cumul[2]);
73                         } else if (cmd.equals("away")) {
74                                 if (parts.length <= 1)
75                                         server.execute("AWAY");
76                                 else
77                                         server.execute("AWAY :" + cumul[1]);
78                         } else if (cmd.equals("quit")) {
79                                 if (parts.length > 1)
80                                         server.execute("QUIT :" + cumul[1]);
81                                 else
82                                         server.execute("QUIT");
83                         } else if (cmd.equals("part")) {
84                                 test(cmd, parts, 1);
85                                 if (parts.length == 2) {
86                                         server.execute("PART " + parts[1]);
87                                 } else {
88                                         server.execute("PART " + parts[1] + " :" + cumul[2]);
89                                 }
90                         } else if (cmd.equals("kick")) {
91                                 test(cmd, parts, 2);
92                                 if (parts.length == 3) {
93                                         server.execute("KICK " + parts[1] + " " + parts[2]);
94                                 } else {
95                                         server.execute("KICK " + parts[1] + " " + parts[2] + " :" + cumul[3]);
96                                 }
97                         } else if (cmd.equals("notice")) {
98                                 test(cmd, parts, 2);
99                                 server.execute("NOTICE " + parts[1] + " :" + cumul[2]);
100                                 source.report("-> -" + parts[1] + "- " + cumul[2]);
101                         } else if (cmd.equals("onotice")) {
102                                 test(cmd, parts, 2);
103                                 sendString(source, "/notice @" + parts[1] + " " + cumul[2]);
104                         } else if (cmd.equals("join")) {
105                                 test(cmd, parts, 1);
106                                 String chan = parts[1];
107                                 if (!chan.startsWith("#") && !chan.startsWith("!") && !chan.startsWith("&") && !chan.startsWith("+"))
108                                         chan = '#' + chan;
109                                 if (parts.length <= 2)
110                                         server.execute("JOIN " + chan);
111                                 else
112                                         server.execute("JOIN " + chan + " " + parts[2]);
113                         } else if (cmd.equals("j")) {
114                                 sendString(source, "/join " + cumul[1]);
115                         } else if (cmd.equals("query")) {
116                                 test(cmd, parts, 1);
117                                 server.getQuery(parts[1], true);
118                         } else if (cmd.equals("ignore")) {
119                                 test(cmd, parts, 1);
120                                 if (!server.ignore(parts[1])) {
121                                         server.addIgnore(parts[1]);
122                                         source.report(getText(IRCTextProvider.INTERPRETOR_IGNORE_ON, parts[1]));
123                                 }
124                         } else if (cmd.equals("unignore")) {
125                                 test(cmd, parts, 1);
126                                 if (server.ignore(parts[1])) {
127                                         server.removeIgnore(parts[1]);
128                                         source.report(getText(IRCTextProvider.INTERPRETOR_IGNORE_OFF, parts[1]));
129                                 }
130                         } else if (cmd.equals("server")) {
131                                 test(cmd, parts, 1);
132                                 int port = 6667;
133                                 String pass = "";
134                                 if (parts.length > 2)
135                                         port = (new Integer(parts[2])).intValue();
136                                 if (parts.length > 3)
137                                         pass = parts[3];
138                                 String host = parts[1];
139                                 if (server.isConnected())
140                                         server.disconnect();
141                                 server.setServers(new String[] { host }, new int[] { port }, new String[] { pass });
142                                 server.connect();
143                         } else if (cmd.equals("connect")) {
144                                 server.connect();
145                         } else if (cmd.equals("disconnect")) {
146                                 server.disconnect();
147                         } else {
148                                 super.handleCommand(source, cmd, parts, cumul);
149                         }
150                 } catch (NotEnoughParametersException ex) {
151                         source.report(getText(IRCTextProvider.INTERPRETOR_INSUFFICIENT_PARAMETERS, ex.getMessage()));
152                 }
153         }
154 }