]> git.somenet.org - irc/pjirc-ng.git/blob - src/main/java/irc/Query.java
Pjirc 2.2.1 as available on the net, reformatted and made it compile.
[irc/pjirc-ng.git] / src / main / java / irc / Query.java
1 /*****************************************************/\r
2 /*          This java file is a part of the          */\r
3 /*                                                   */\r
4 /*           -  Plouf's Java IRC Client  -           */\r
5 /*                                                   */\r
6 /*   Copyright (C)  2002 - 2004 Philippe Detournay   */\r
7 /*                                                   */\r
8 /*         All contacts : theplouf@yahoo.com         */\r
9 /*                                                   */\r
10 /*  PJIRC is free software; you can redistribute     */\r
11 /*  it and/or modify it under the terms of the GNU   */\r
12 /*  General Public License as published by the       */\r
13 /*  Free Software Foundation; version 2 or later of  */\r
14 /*  the License.                                     */\r
15 /*                                                   */\r
16 /*  PJIRC is distributed in the hope that it will    */\r
17 /*  be useful, but WITHOUT ANY WARRANTY; without     */\r
18 /*  even the implied warranty of MERCHANTABILITY or  */\r
19 /*  FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   */\r
20 /*  General Public License for more details.         */\r
21 /*                                                   */\r
22 /*  You should have received a copy of the GNU       */\r
23 /*  General Public License along with PJIRC; if      */\r
24 /*  not, write to the Free Software Foundation,      */\r
25 /*  Inc., 59 Temple Place, Suite 330, Boston,        */\r
26 /*  MA  02111-1307  USA                              */\r
27 /*                                                   */\r
28 /*****************************************************/\r
29 \r
30 package irc;\r
31 \r
32 /**\r
33  * A query.\r
34  */\r
35 public class Query extends IRCSource implements ReplyServerListener {\r
36         private String _nick;\r
37         private String _whois;\r
38 \r
39         private ListenerGroup _listeners;\r
40 \r
41         /**\r
42          * Create a new Query.\r
43          * \r
44          * @param config\r
45          *          global irc configuration.\r
46          * @param nick\r
47          *          the remote nick.\r
48          * @param s\r
49          *          the server.\r
50          */\r
51         public Query(IRCConfiguration config, String nick, IRCServer s) {\r
52                 super(config, s);\r
53                 s.addReplyServerListener(this);\r
54                 _listeners = new ListenerGroup();\r
55                 _nick = nick;\r
56                 _whois = "";\r
57                 if (_ircConfiguration.getASLMaster())\r
58                         getIRCServer().execute("WHOIS " + _nick);\r
59                 setInterpretor(new QueryInterpretor(config));\r
60         }\r
61 \r
62         @Override\r
63         public void release() {\r
64                 ((IRCServer) _server).removeReplyServerListener(this);\r
65                 super.release();\r
66         }\r
67 \r
68         /**\r
69          * Add a listener.\r
70          * \r
71          * @param lis\r
72          *          listener to add.\r
73          */\r
74         public void addQueryListener(QueryListener lis) {\r
75                 _listeners.addListener(lis);\r
76         }\r
77 \r
78         /**\r
79          * Remove a listener.\r
80          * \r
81          * @param lis\r
82          *          listener to remove.\r
83          */\r
84         public void removeQueryListeners(QueryListener lis) {\r
85                 _listeners.removeListener(lis);\r
86         }\r
87 \r
88         @Override\r
89         public String getType() {\r
90                 return "Query";\r
91         }\r
92 \r
93         @Override\r
94         public String getName() {\r
95                 return _nick;\r
96         }\r
97 \r
98         /**\r
99          * Get whois information for remote nick.\r
100          * \r
101          * @return peer whois information.\r
102          */\r
103         public String getWhois() {\r
104                 return _whois;\r
105         }\r
106 \r
107         @Override\r
108         public boolean talkable() {\r
109                 return true;\r
110         }\r
111 \r
112         @Override\r
113         public void leave() {\r
114                 getIRCServer().leaveQuery(getName());\r
115         }\r
116 \r
117         /**\r
118          * Notify this query the remote nick has changed.\r
119          * \r
120          * @param newNick\r
121          *          new remote nick.\r
122          */\r
123         public void changeNick(String newNick) {\r
124                 _nick = newNick;\r
125                 _listeners.sendEvent("nickChanged", newNick, this);\r
126         }\r
127 \r
128         @Override\r
129         public Boolean replyReceived(String prefix, String id, String params[], IRCServer server) {\r
130                 if (id.equals("311")) {\r
131                         if (params[1].toLowerCase(java.util.Locale.ENGLISH).equals(_nick.toLowerCase(java.util.Locale.ENGLISH))) {\r
132                                 String name = params[params.length - 1];\r
133                                 _whois = name;\r
134                                 _listeners.sendEvent("whoisChanged", _whois, this);\r
135                         }\r
136                 }\r
137                 return Boolean.FALSE;\r
138         }\r
139 \r
140 }\r