Browse Source

Make Query use Users better.

Also remove some more parseHostname calls.
pull/262/head
Chris Smith 9 years ago
parent
commit
6586b8ad11

+ 12
- 27
src/com/dmdirc/Query.java View File

@@ -73,31 +73,18 @@ public class Query extends MessageTarget implements PrivateActionListener,
73 73
     private final Server server;
74 74
     /** The user associated with this query. */
75 75
     private final User user;
76
-    /** The full host of the client associated with this query. */
77
-    private String host;
78
-    /** The nickname of the client associated with this query. */
79
-    private String nickname;
80 76
 
81
-    /**
82
-     * Creates a new instance of Query.
83
-     *
84
-     * @param newHost             host of the remove client
85
-     * @param newServer           The server object that this Query belongs to
86
-     * @param tabCompleterFactory The factory to use to create tab completers.
87
-     * @param commandController   The controller to load commands from.
88
-     * @param messageSinkManager  The sink manager to use to dispatch messages.
89
-     * @param urlBuilder          The URL builder to use when finding icons.
90
-     */
91 77
     public Query(
92 78
             final Server newServer,
93
-            final String newHost,
79
+            final User user,
94 80
             final TabCompleterFactory tabCompleterFactory,
95 81
             final CommandController commandController,
96 82
             final MessageSinkManager messageSinkManager,
97 83
             final URLBuilder urlBuilder,
98 84
             final BackBufferFactory backBufferFactory) {
99
-        super(newServer, "query", newServer.parseHostmask(newHost)[0],
100
-                newServer.parseHostmask(newHost)[0],
85
+        super(newServer, "query",
86
+                user.getNickname(),
87
+                user.getNickname(),
101 88
                 newServer.getConfigManager(),
102 89
                 backBufferFactory,
103 90
                 new QueryCommandParser(newServer, commandController, newServer.getEventBus()),
@@ -112,9 +99,7 @@ public class Query extends MessageTarget implements PrivateActionListener,
112 99
                         WindowComponent.INPUTFIELD.getIdentifier()));
113 100
 
114 101
         this.server = newServer;
115
-        this.host = newHost;
116
-        this.nickname = server.parseHostmask(host)[0];
117
-        user = server.getUser(host).get();
102
+        this.user = user;
118 103
         updateTitle();
119 104
     }
120 105
 
@@ -156,7 +141,7 @@ public class Query extends MessageTarget implements PrivateActionListener,
156 141
     @Override
157 142
     public int getMaxLineLength() {
158 143
         return server.getState() == ServerState.CONNECTED ? server.getParser().get()
159
-                .getMaxLength("PRIVMSG", host) : -1;
144
+                .getMaxLength("PRIVMSG", getHost()) : -1;
160 145
     }
161 146
 
162 147
     @Override
@@ -167,7 +152,7 @@ public class Query extends MessageTarget implements PrivateActionListener,
167 152
         }
168 153
 
169 154
         final ClientInfo client = server.getParser().get().getLocalClient();
170
-        final int maxLineLength = server.getParser().get().getMaxLength("PRIVMSG", host);
155
+        final int maxLineLength = server.getParser().get().getMaxLength("PRIVMSG", getHost());
171 156
 
172 157
         if (maxLineLength >= action.length() + 2) {
173 158
             server.getParser().get().sendAction(getNickname(), action);
@@ -257,8 +242,7 @@ public class Query extends MessageTarget implements PrivateActionListener,
257 242
 
258 243
             addLine(format, oldNick, client.getUsername(),
259 244
                     client.getHostname(), client.getNickname());
260
-            host = client.getNickname() + '!' + client.getUsername() + '@' + client.getHostname();
261
-            nickname = client.getNickname();
245
+            user.setNickname(client.getNickname());
262 246
             updateTitle();
263 247
 
264 248
             setName(client.getNickname());
@@ -308,17 +292,18 @@ public class Query extends MessageTarget implements PrivateActionListener,
308 292
 
309 293
     @Override
310 294
     public String getHost() {
311
-        return host;
295
+        // TODO: Icky, IRC specific. Kill with fire.
296
+        return user.getNickname() + '!' + user.getUsername() + '@' + user.getHostname();
312 297
     }
313 298
 
314 299
     @Override
315 300
     public String getNickname() {
316
-        return nickname;
301
+        return user.getNickname();
317 302
     }
318 303
 
319 304
     @Override
320 305
     public void setCompositionState(final CompositionState state) {
321
-        server.getParser().get().setCompositionState(host, state);
306
+        server.getParser().get().setCompositionState(getHost(), state);
322 307
     }
323 308
 
324 309
     @Override

+ 3
- 2
src/com/dmdirc/QueryFactory.java View File

@@ -23,6 +23,7 @@
23 23
 package com.dmdirc;
24 24
 
25 25
 import com.dmdirc.interfaces.CommandController;
26
+import com.dmdirc.interfaces.User;
26 27
 import com.dmdirc.ui.messages.BackBufferFactory;
27 28
 import com.dmdirc.ui.input.TabCompleterFactory;
28 29
 import com.dmdirc.ui.messages.sink.MessageSinkManager;
@@ -54,8 +55,8 @@ public class QueryFactory {
54 55
         this.backBufferFactory = backBufferFactory;
55 56
     }
56 57
 
57
-    public Query getQuery(final Server server, final String host) {
58
-        return new Query(server, host, tabCompleterFactory, commandController,
58
+    public Query getQuery(final Server server, final User user) {
59
+        return new Query(server, user, tabCompleterFactory, commandController,
59 60
                 messageSinkManager, urlBuilder, backBufferFactory);
60 61
     }
61 62
 

+ 2
- 2
src/com/dmdirc/Server.java View File

@@ -509,7 +509,7 @@ public class Server extends FrameContainer implements Connection {
509 509
         return queries.containsKey(converter.toLowerCase(parseHostmask(host)[0]));
510 510
     }
511 511
 
512
-    private User getUserFromClientInfo(final ClientInfo client) {
512
+    public User getUserFromClientInfo(final ClientInfo client) {
513 513
         return userFactory.getUser(client.getNickname(), this,
514 514
                 Optional.ofNullable(client.getUsername()),
515 515
                 Optional.ofNullable(client.getHostname()),
@@ -546,7 +546,7 @@ public class Server extends FrameContainer implements Connection {
546 546
         final String lnick = converter.toLowerCase(nick);
547 547
 
548 548
         if (!queries.containsKey(lnick)) {
549
-            final Query newQuery = queryFactory.getQuery(this, host);
549
+            final Query newQuery = queryFactory.getQuery(this, getUser(host).orElse(null));
550 550
             if (!getState().isDisconnected()) {
551 551
                 newQuery.reregister();
552 552
             }

+ 6
- 1
src/com/dmdirc/ServerEventHandler.java View File

@@ -52,6 +52,7 @@ import com.dmdirc.events.ServerWallusersEvent;
52 52
 import com.dmdirc.events.StatusBarMessageEvent;
53 53
 import com.dmdirc.events.UserErrorEvent;
54 54
 import com.dmdirc.interfaces.Connection;
55
+import com.dmdirc.interfaces.User;
55 56
 import com.dmdirc.logger.ErrorLevel;
56 57
 import com.dmdirc.parser.common.AwayState;
57 58
 import com.dmdirc.parser.common.CallbackManager;
@@ -219,7 +220,11 @@ public class ServerEventHandler extends EventHandler implements
219 220
         final String format = EventUtils.postDisplayable(eventBus, event, "privateCTCP");
220 221
         owner.doNotification(format, owner.getParser().get().getClient(host), type, message);
221 222
         if (!event.isHandled()) {
222
-            owner.sendCTCPReply(owner.parseHostmask(host)[0], type, message);
223
+            owner.sendCTCPReply(
224
+                    owner.getUser(host)
225
+                            .map(User::getNickname)
226
+                            .orElseThrow(() -> new IllegalStateException("Couldn't get nickname")),
227
+                    type, message);
223 228
         }
224 229
     }
225 230
 

+ 9
- 5
test/com/dmdirc/ServerEventHandlerTest.java View File

@@ -87,6 +87,10 @@ public class ServerEventHandlerTest {
87 87
         when(server.getLocalUser()).thenReturn(Optional.of(user));
88 88
         final ServerEventHandler handler = new ServerEventHandler(server, eventBus);
89 89
         handler.registerCallbacks();
90
+
91
+        when(user.getNickname()).thenReturn("ho");
92
+        when(user.getUsername()).thenReturn(Optional.of("st"));
93
+        when(user.getHostname()).thenReturn(Optional.of("name"));
90 94
     }
91 95
 
92 96
     @Test
@@ -209,10 +213,10 @@ public class ServerEventHandlerTest {
209 213
 
210 214
     @Test
211 215
     public void testOnPrivateCTCPRaisesEvent() {
212
-        when(server.parseHostmask("host!na@me")).thenReturn(new String[]{"host", "na", "me"});
216
+        when(server.getUser("ho!st@name")).thenReturn(Optional.of(user));
213 217
 
214 218
         final PrivateCtcpListener listener = getCallback(PrivateCtcpListener.class);
215
-        listener.onPrivateCTCP(parser, date, "type", "message", "host!na@me");
219
+        listener.onPrivateCTCP(parser, date, "type", "message", "ho!st@name");
216 220
 
217 221
         final ServerCtcpEvent event = getEvent(ServerCtcpEvent.class);
218 222
         assertEquals("type", event.getType());
@@ -222,12 +226,12 @@ public class ServerEventHandlerTest {
222 226
 
223 227
     @Test
224 228
     public void testOnPrivateCTCPSendsReplyIfEventUnhandled() {
225
-        when(server.parseHostmask("host!na@me")).thenReturn(new String[]{"host", "na", "me"});
229
+        when(server.getUser("ho!st@name")).thenReturn(Optional.of(user));
226 230
 
227 231
         final PrivateCtcpListener listener = getCallback(PrivateCtcpListener.class);
228
-        listener.onPrivateCTCP(parser, date, "type", "message", "host!na@me");
232
+        listener.onPrivateCTCP(parser, date, "type", "message", "ho!st@name");
229 233
 
230
-        verify(server).sendCTCPReply("host", "type", "message");
234
+        verify(server).sendCTCPReply("ho", "type", "message");
231 235
     }
232 236
 
233 237
     private <T extends CallbackInterface> T getCallback(final Class<T> type) {

Loading…
Cancel
Save