Ver código fonte

Make more things use GroupChatUser.

  - Also by AutoValue Topic
  - Also make getUser in Topic Optional
pull/300/head
Greg Holmes 9 anos atrás
pai
commit
6bf34be332

+ 3
- 3
src/com/dmdirc/Channel.java Ver arquivo

481
             // Format topics
481
             // Format topics
482
             final Topic topic = (Topic) arg;
482
             final Topic topic = (Topic) arg;
483
             args.add("");
483
             args.add("");
484
-            args.add(topic.getClient().getNickname());
485
-            args.add(topic.getClient().getUsername().orElse(""));
486
-            args.add(topic.getClient().getHostname().orElse(""));
484
+            args.add(topic.getClient().map(GroupChatUser::getNickname).orElse("Unknown"));
485
+            args.add(topic.getClient().flatMap(GroupChatUser::getUsername).orElse(""));
486
+            args.add(topic.getClient().flatMap(GroupChatUser::getHostname).orElse(""));
487
             args.add(topic.getTopic());
487
             args.add(topic.getTopic());
488
             args.add(topic.getTime() * 1000);
488
             args.add(topic.getTime() * 1000);
489
 
489
 

+ 14
- 8
src/com/dmdirc/ChannelEventHandler.java Ver arquivo

161
             final ChannelInfo channel, final boolean isJoinTopic) {
161
             final ChannelInfo channel, final boolean isJoinTopic) {
162
         checkParser(parser);
162
         checkParser(parser);
163
 
163
 
164
-        final Topic topic = new Topic(channel.getTopic(),
164
+        final Topic topic = Topic.create(channel.getTopic(),
165
                 owner.getUser(getConnection().getUser(channel.getTopicSetter())).orElse(null),
165
                 owner.getUser(getConnection().getUser(channel.getTopicSetter())).orElse(null),
166
                 channel.getTopicTime());
166
                 channel.getTopicTime());
167
 
167
 
212
             final ChannelClientInfo client) {
212
             final ChannelClientInfo client) {
213
         checkParser(parser);
213
         checkParser(parser);
214
 
214
 
215
-        final ChannelJoinEvent event = new ChannelJoinEvent(owner, client);
215
+        final ChannelJoinEvent event = new ChannelJoinEvent(owner, owner.getUserFromClient(client));
216
         final String format = EventUtils.postDisplayable(eventBus, event, "channelJoin");
216
         final String format = EventUtils.postDisplayable(eventBus, event, "channelJoin");
217
         owner.doNotification(date, format, client);
217
         owner.doNotification(date, format, client);
218
         owner.addClient(owner.getUserFromClient(client));
218
         owner.addClient(owner.getUserFromClient(client));
223
             final ChannelClientInfo client, final String reason) {
223
             final ChannelClientInfo client, final String reason) {
224
         checkParser(parser);
224
         checkParser(parser);
225
 
225
 
226
-        final ChannelPartEvent event = new ChannelPartEvent(owner, client, reason);
226
+        final ChannelPartEvent event = new ChannelPartEvent(owner, owner.getUserFromClient(client),
227
+                reason);
227
         final String format = EventUtils.postDisplayable(eventBus, event,
228
         final String format = EventUtils.postDisplayable(eventBus, event,
228
                 "channel"
229
                 "channel"
229
                 + (isMyself(client) ? "Self" : "") + "Part"
230
                 + (isMyself(client) ? "Self" : "") + "Part"
238
             final String reason, final String host) {
239
             final String reason, final String host) {
239
         checkParser(parser);
240
         checkParser(parser);
240
 
241
 
241
-        final ChannelKickEvent event = new ChannelKickEvent(owner, client, kickedClient, reason);
242
+        final ChannelKickEvent event = new ChannelKickEvent(owner, owner.getUserFromClient
243
+                (client), owner.getUserFromClient(kickedClient), reason);
242
         final String format = EventUtils.postDisplayable(eventBus, event,
244
         final String format = EventUtils.postDisplayable(eventBus, event,
243
                 "channelKick" + (reason.isEmpty() ? "" : "Reason"));
245
                 "channelKick" + (reason.isEmpty() ? "" : "Reason"));
244
         owner.doNotification(date, format, client, kickedClient, reason);
246
         owner.doNotification(date, format, client, kickedClient, reason);
250
             final ChannelClientInfo client, final String reason) {
252
             final ChannelClientInfo client, final String reason) {
251
         checkParser(parser);
253
         checkParser(parser);
252
 
254
 
253
-        final ChannelQuitEvent event = new ChannelQuitEvent(owner, client, reason);
255
+        final ChannelQuitEvent event = new ChannelQuitEvent(owner, owner.getUserFromClient(client),
256
+                reason);
254
         final String format = EventUtils.postDisplayable(eventBus, event,
257
         final String format = EventUtils.postDisplayable(eventBus, event,
255
                 "channelQuit" + (reason.isEmpty() ? "" : "Reason"));
258
                 "channelQuit" + (reason.isEmpty() ? "" : "Reason"));
256
         owner.doNotification(date, format, client, reason);
259
         owner.doNotification(date, format, client, reason);
275
             final ChannelInfo channel, final ChannelClientInfo client, final String oldNick) {
278
             final ChannelInfo channel, final ChannelClientInfo client, final String oldNick) {
276
         checkParser(parser);
279
         checkParser(parser);
277
 
280
 
278
-        final ChannelNickchangeEvent event = new ChannelNickchangeEvent(owner, client, oldNick);
281
+        final ChannelNickchangeEvent event = new ChannelNickchangeEvent(owner,
282
+                owner.getUserFromClient(client), oldNick);
279
         final String format = EventUtils.postDisplayable(eventBus, event,
283
         final String format = EventUtils.postDisplayable(eventBus, event,
280
                 isMyself(client) ? "channelSelfNickChange" : "channelNickChange");
284
                 isMyself(client) ? "channelSelfNickChange" : "channelNickChange");
281
         owner.doNotification(date, format, client, oldNick);
285
         owner.doNotification(date, format, client, oldNick);
297
                         modes.length() <= 1 ? "channelNoModes" : "channelModeDiscovered");
301
                         modes.length() <= 1 ? "channelNoModes" : "channelModeDiscovered");
298
                 owner.doNotification(date, format, modes.length() <= 1 ? "" : modes);
302
                 owner.doNotification(date, format, modes.length() <= 1 ? "" : modes);
299
             } else {
303
             } else {
300
-                final ChannelModechangeEvent event = new ChannelModechangeEvent(owner, client, modes);
304
+                final ChannelModechangeEvent event = new ChannelModechangeEvent(owner,
305
+                        owner.getUserFromClient(client), modes);
301
                 final String format = EventUtils.postDisplayable(eventBus, event,
306
                 final String format = EventUtils.postDisplayable(eventBus, event,
302
                         isMyself(client) ? "channelSelfModeChanged" : "channelModeChanged");
307
                         isMyself(client) ? "channelSelfModeChanged" : "channelModeChanged");
303
                 owner.doNotification(date, format, client, modes);
308
                 owner.doNotification(date, format, client, modes);
391
                         modes.length() <= 1 ? "channelNoModes" : "channelModeDiscovered");
396
                         modes.length() <= 1 ? "channelNoModes" : "channelModeDiscovered");
392
                 owner.doNotification(date, format, modes.length() <= 1 ? "" : modes);
397
                 owner.doNotification(date, format, modes.length() <= 1 ? "" : modes);
393
             } else {
398
             } else {
394
-                final ChannelModechangeEvent event = new ChannelModechangeEvent(owner, client, modes);
399
+                final ChannelModechangeEvent event = new ChannelModechangeEvent(owner,
400
+                        owner.getUserFromClient(client), modes);
395
                 final String format = EventUtils.postDisplayable(eventBus, event,
401
                 final String format = EventUtils.postDisplayable(eventBus, event,
396
                         isMyself(client) ? "channelSelfModeChanged" : "channelModeChanged");
402
                         isMyself(client) ? "channelSelfModeChanged" : "channelModeChanged");
397
                 owner.doNotification(date, format, client, modes);
403
                 owner.doNotification(date, format, client, modes);

+ 15
- 48
src/com/dmdirc/Topic.java Ver arquivo

24
 
24
 
25
 import com.dmdirc.interfaces.GroupChatUser;
25
 import com.dmdirc.interfaces.GroupChatUser;
26
 
26
 
27
+import com.google.auto.value.AutoValue;
28
+
29
+import java.util.Optional;
30
+
27
 /**
31
 /**
28
  * Stores information about a channel topic.
32
  * Stores information about a channel topic.
29
  */
33
  */
30
-public class Topic {
34
+@AutoValue
35
+public abstract class Topic {
36
+
37
+    Topic() {}
31
 
38
 
32
     /** Topic. */
39
     /** Topic. */
33
-    private final String topic;
40
+    public abstract String getTopic();
34
     /** Topic client. */
41
     /** Topic client. */
35
-    private final GroupChatUser client;
42
+    public abstract Optional<GroupChatUser> getClient();
36
     /** Topic time. */
43
     /** Topic time. */
37
-    private final long time;
38
-
39
-    /**
40
-     * Creates a new topic.
41
-     *
42
-     * @param topic  Topic
43
-     * @param client Topic client
44
-     * @param time   Topic time
45
-     */
46
-    public Topic(final String topic, final GroupChatUser client, final long time) {
47
-        this.topic = topic;
48
-        this.client = client;
49
-        this.time = time;
50
-    }
51
-
52
-    /**
53
-     * Returns the client who set the topic.
54
-     *
55
-     * @return client
56
-     */
57
-    public GroupChatUser getClient() {
58
-        return client;
59
-    }
60
-
61
-    /**
62
-     * Returns the time the topic was set.
63
-     *
64
-     * @return topic time
65
-     */
66
-    public long getTime() {
67
-        return time;
68
-    }
44
+    public abstract long getTime();
69
 
45
 
70
-    /**
71
-     * Returns the topic this object represents.
72
-     *
73
-     * @return topic
74
-     */
75
-    public String getTopic() {
76
-        return topic;
46
+    public static Topic create(final String topic,
47
+            final GroupChatUser groupChatUser,
48
+            final long time) {
49
+        return new AutoValue_Topic(topic, Optional.ofNullable(groupChatUser), time);
77
     }
50
     }
78
-
79
-    @Override
80
-    public String toString() {
81
-        return topic;
82
-    }
83
-
84
 }
51
 }

+ 1
- 1
src/com/dmdirc/commandparser/commands/channel/ShowTopic.java Ver arquivo

71
         if (args.getArguments().length == 0) {
71
         if (args.getArguments().length == 0) {
72
             final Optional<Topic> topic = channel.getCurrentTopic();
72
             final Optional<Topic> topic = channel.getCurrentTopic();
73
             if (topic.isPresent()) {
73
             if (topic.isPresent()) {
74
-                final Optional<GroupChatUser> user = topic.map(Topic::getClient);
74
+                final Optional<GroupChatUser> user = topic.map(Topic::getClient).get();
75
                 sendLine(origin, args.isSilent(), "channelTopicDiscovered", "",
75
                 sendLine(origin, args.isSilent(), "channelTopicDiscovered", "",
76
                         user.map(GroupChatUser::getNickname).orElse(""),
76
                         user.map(GroupChatUser::getNickname).orElse(""),
77
                         user.flatMap(GroupChatUser::getUsername).orElse(""),
77
                         user.flatMap(GroupChatUser::getUsername).orElse(""),

+ 5
- 5
src/com/dmdirc/events/ChannelJoinEvent.java Ver arquivo

23
 package com.dmdirc.events;
23
 package com.dmdirc.events;
24
 
24
 
25
 import com.dmdirc.Channel;
25
 import com.dmdirc.Channel;
26
-import com.dmdirc.parser.interfaces.ChannelClientInfo;
26
+import com.dmdirc.interfaces.GroupChatUser;
27
 
27
 
28
 /**
28
 /**
29
  * Fired when a user joins a channel.
29
  * Fired when a user joins a channel.
30
  */
30
  */
31
 public class ChannelJoinEvent extends ChannelDisplayableEvent {
31
 public class ChannelJoinEvent extends ChannelDisplayableEvent {
32
 
32
 
33
-    private final ChannelClientInfo client;
33
+    private final GroupChatUser client;
34
 
34
 
35
     public ChannelJoinEvent(final long timestamp, final Channel channel,
35
     public ChannelJoinEvent(final long timestamp, final Channel channel,
36
-            final ChannelClientInfo client) {
36
+            final GroupChatUser client) {
37
         super(timestamp, channel);
37
         super(timestamp, channel);
38
         this.client = client;
38
         this.client = client;
39
     }
39
     }
40
 
40
 
41
-    public ChannelJoinEvent(final Channel channel, final ChannelClientInfo client) {
41
+    public ChannelJoinEvent(final Channel channel, final GroupChatUser client) {
42
         super(channel);
42
         super(channel);
43
         this.client = client;
43
         this.client = client;
44
     }
44
     }
45
 
45
 
46
-    public ChannelClientInfo getClient() {
46
+    public GroupChatUser getClient() {
47
         return client;
47
         return client;
48
     }
48
     }
49
 
49
 

+ 7
- 7
src/com/dmdirc/events/ChannelKickEvent.java Ver arquivo

23
 package com.dmdirc.events;
23
 package com.dmdirc.events;
24
 
24
 
25
 import com.dmdirc.Channel;
25
 import com.dmdirc.Channel;
26
-import com.dmdirc.parser.interfaces.ChannelClientInfo;
26
+import com.dmdirc.interfaces.GroupChatUser;
27
 
27
 
28
 /**
28
 /**
29
  * Fired when a user is kicked from a channel.
29
  * Fired when a user is kicked from a channel.
30
  */
30
  */
31
 public class ChannelKickEvent extends ChannelDisplayableEvent {
31
 public class ChannelKickEvent extends ChannelDisplayableEvent {
32
 
32
 
33
-    private final ChannelClientInfo client;
34
-    private final ChannelClientInfo victim;
33
+    private final GroupChatUser client;
34
+    private final GroupChatUser victim;
35
     private final String reason;
35
     private final String reason;
36
 
36
 
37
     public ChannelKickEvent(final long timestamp, final Channel channel,
37
     public ChannelKickEvent(final long timestamp, final Channel channel,
38
-            final ChannelClientInfo client, final ChannelClientInfo victim, final String reason) {
38
+            final GroupChatUser client, final GroupChatUser victim, final String reason) {
39
         super(timestamp, channel);
39
         super(timestamp, channel);
40
         this.client = client;
40
         this.client = client;
41
         this.victim = victim;
41
         this.victim = victim;
43
     }
43
     }
44
 
44
 
45
     public ChannelKickEvent(final Channel channel,
45
     public ChannelKickEvent(final Channel channel,
46
-            final ChannelClientInfo client, final ChannelClientInfo victim, final String reason) {
46
+            final GroupChatUser client, final GroupChatUser victim, final String reason) {
47
         super(channel);
47
         super(channel);
48
         this.client = client;
48
         this.client = client;
49
         this.victim = victim;
49
         this.victim = victim;
50
         this.reason = reason;
50
         this.reason = reason;
51
     }
51
     }
52
 
52
 
53
-    public ChannelClientInfo getClient() {
53
+    public GroupChatUser getClient() {
54
         return client;
54
         return client;
55
     }
55
     }
56
 
56
 
57
-    public ChannelClientInfo getVictim() {
57
+    public GroupChatUser getVictim() {
58
         return victim;
58
         return victim;
59
     }
59
     }
60
 
60
 

+ 5
- 5
src/com/dmdirc/events/ChannelModechangeEvent.java Ver arquivo

23
 package com.dmdirc.events;
23
 package com.dmdirc.events;
24
 
24
 
25
 import com.dmdirc.Channel;
25
 import com.dmdirc.Channel;
26
-import com.dmdirc.parser.interfaces.ChannelClientInfo;
26
+import com.dmdirc.interfaces.GroupChatUser;
27
 
27
 
28
 /**
28
 /**
29
  * Fired when a channel mode is changed.
29
  * Fired when a channel mode is changed.
30
  */
30
  */
31
 public class ChannelModechangeEvent extends ChannelDisplayableEvent {
31
 public class ChannelModechangeEvent extends ChannelDisplayableEvent {
32
 
32
 
33
-    private final ChannelClientInfo client;
33
+    private final GroupChatUser client;
34
     private final String modes;
34
     private final String modes;
35
 
35
 
36
     public ChannelModechangeEvent(final long timestamp, final Channel channel,
36
     public ChannelModechangeEvent(final long timestamp, final Channel channel,
37
-            final ChannelClientInfo client, final String modes) {
37
+            final GroupChatUser client, final String modes) {
38
         super(timestamp, channel);
38
         super(timestamp, channel);
39
         this.client = client;
39
         this.client = client;
40
         this.modes = modes;
40
         this.modes = modes;
41
     }
41
     }
42
 
42
 
43
     public ChannelModechangeEvent(final Channel channel,
43
     public ChannelModechangeEvent(final Channel channel,
44
-            final ChannelClientInfo client, final String modes) {
44
+            final GroupChatUser client, final String modes) {
45
         super(channel);
45
         super(channel);
46
         this.client = client;
46
         this.client = client;
47
         this.modes = modes;
47
         this.modes = modes;
48
     }
48
     }
49
 
49
 
50
-    public ChannelClientInfo getClient() {
50
+    public GroupChatUser getClient() {
51
         return client;
51
         return client;
52
     }
52
     }
53
 
53
 

+ 5
- 6
src/com/dmdirc/events/ChannelNickchangeEvent.java Ver arquivo

23
 package com.dmdirc.events;
23
 package com.dmdirc.events;
24
 
24
 
25
 import com.dmdirc.Channel;
25
 import com.dmdirc.Channel;
26
-import com.dmdirc.parser.interfaces.ChannelClientInfo;
26
+import com.dmdirc.interfaces.GroupChatUser;
27
 
27
 
28
 /**
28
 /**
29
  * Fired when a user changes nickname in a channel.
29
  * Fired when a user changes nickname in a channel.
30
  */
30
  */
31
 public class ChannelNickchangeEvent extends ChannelDisplayableEvent {
31
 public class ChannelNickchangeEvent extends ChannelDisplayableEvent {
32
 
32
 
33
-    private final ChannelClientInfo client;
33
+    private final GroupChatUser client;
34
     private final String oldNick;
34
     private final String oldNick;
35
 
35
 
36
     public ChannelNickchangeEvent(final long timestamp, final Channel channel,
36
     public ChannelNickchangeEvent(final long timestamp, final Channel channel,
37
-            final ChannelClientInfo client,
38
-            final String oldNick) {
37
+            final GroupChatUser client, final String oldNick) {
39
         super(timestamp, channel);
38
         super(timestamp, channel);
40
         this.client = client;
39
         this.client = client;
41
         this.oldNick = oldNick;
40
         this.oldNick = oldNick;
42
     }
41
     }
43
 
42
 
44
-    public ChannelNickchangeEvent(final Channel channel, final ChannelClientInfo client,
43
+    public ChannelNickchangeEvent(final Channel channel, final GroupChatUser client,
45
             final String oldNick) {
44
             final String oldNick) {
46
         super(channel);
45
         super(channel);
47
         this.client = client;
46
         this.client = client;
48
         this.oldNick = oldNick;
47
         this.oldNick = oldNick;
49
     }
48
     }
50
 
49
 
51
-    public ChannelClientInfo getClient() {
50
+    public GroupChatUser getClient() {
52
         return client;
51
         return client;
53
     }
52
     }
54
 
53
 

+ 5
- 5
src/com/dmdirc/events/ChannelPartEvent.java Ver arquivo

23
 package com.dmdirc.events;
23
 package com.dmdirc.events;
24
 
24
 
25
 import com.dmdirc.Channel;
25
 import com.dmdirc.Channel;
26
-import com.dmdirc.parser.interfaces.ChannelClientInfo;
26
+import com.dmdirc.interfaces.GroupChatUser;
27
 
27
 
28
 /**
28
 /**
29
  * Fired when a user parts a channel.
29
  * Fired when a user parts a channel.
30
  */
30
  */
31
 public class ChannelPartEvent extends ChannelDisplayableEvent {
31
 public class ChannelPartEvent extends ChannelDisplayableEvent {
32
 
32
 
33
-    private final ChannelClientInfo client;
33
+    private final GroupChatUser client;
34
     private final String message;
34
     private final String message;
35
 
35
 
36
     public ChannelPartEvent(final long timestamp, final Channel channel,
36
     public ChannelPartEvent(final long timestamp, final Channel channel,
37
-            final ChannelClientInfo client, final String message) {
37
+            final GroupChatUser client, final String message) {
38
         super(timestamp, channel);
38
         super(timestamp, channel);
39
         this.client = client;
39
         this.client = client;
40
         this.message = message;
40
         this.message = message;
41
     }
41
     }
42
 
42
 
43
-    public ChannelPartEvent(final Channel channel, final ChannelClientInfo client,
43
+    public ChannelPartEvent(final Channel channel, final GroupChatUser client,
44
             final String message) {
44
             final String message) {
45
         super(channel);
45
         super(channel);
46
         this.client = client;
46
         this.client = client;
47
         this.message = message;
47
         this.message = message;
48
     }
48
     }
49
 
49
 
50
-    public ChannelClientInfo getClient() {
50
+    public GroupChatUser getClient() {
51
         return client;
51
         return client;
52
     }
52
     }
53
 
53
 

+ 5
- 5
src/com/dmdirc/events/ChannelQuitEvent.java Ver arquivo

23
 package com.dmdirc.events;
23
 package com.dmdirc.events;
24
 
24
 
25
 import com.dmdirc.Channel;
25
 import com.dmdirc.Channel;
26
-import com.dmdirc.parser.interfaces.ChannelClientInfo;
26
+import com.dmdirc.interfaces.GroupChatUser;
27
 
27
 
28
 /**
28
 /**
29
  * Fired when a user quits in a channel.
29
  * Fired when a user quits in a channel.
30
  */
30
  */
31
 public class ChannelQuitEvent extends ChannelDisplayableEvent {
31
 public class ChannelQuitEvent extends ChannelDisplayableEvent {
32
 
32
 
33
-    private final ChannelClientInfo client;
33
+    private final GroupChatUser client;
34
     private final String message;
34
     private final String message;
35
 
35
 
36
     public ChannelQuitEvent(final long timestamp, final Channel channel,
36
     public ChannelQuitEvent(final long timestamp, final Channel channel,
37
-            final ChannelClientInfo client, final String message) {
37
+            final GroupChatUser client, final String message) {
38
         super(timestamp, channel);
38
         super(timestamp, channel);
39
         this.client = client;
39
         this.client = client;
40
         this.message = message;
40
         this.message = message;
41
     }
41
     }
42
 
42
 
43
-    public ChannelQuitEvent(final Channel channel, final ChannelClientInfo client,
43
+    public ChannelQuitEvent(final Channel channel, final GroupChatUser client,
44
             final String message) {
44
             final String message) {
45
         super(channel);
45
         super(channel);
46
         this.client = client;
46
         this.client = client;
47
         this.message = message;
47
         this.message = message;
48
     }
48
     }
49
 
49
 
50
-    public ChannelClientInfo getClient() {
50
+    public GroupChatUser getClient() {
51
         return client;
51
         return client;
52
     }
52
     }
53
 
53
 

+ 4
- 4
test/com/dmdirc/TopicTest.java Ver arquivo

39
 
39
 
40
     @Test
40
     @Test
41
     public void testGetClient() {
41
     public void testGetClient() {
42
-        final Topic test = new Topic("abc", user, 1);
42
+        final Topic test = Topic.create("abc", user, 1);
43
         assertEquals(user, test.getClient());
43
         assertEquals(user, test.getClient());
44
     }
44
     }
45
 
45
 
46
     @Test
46
     @Test
47
     public void testGetTime() {
47
     public void testGetTime() {
48
-        final Topic test = new Topic("abc", user, 1);
48
+        final Topic test = Topic.create("abc", user, 1);
49
         assertEquals(1L, test.getTime());
49
         assertEquals(1L, test.getTime());
50
     }
50
     }
51
 
51
 
52
     @Test
52
     @Test
53
     public void testGetTopic() {
53
     public void testGetTopic() {
54
-        final Topic test = new Topic("abc", user, 1);
54
+        final Topic test = Topic.create("abc", user, 1);
55
         assertEquals("abc", test.getTopic());
55
         assertEquals("abc", test.getTopic());
56
     }
56
     }
57
 
57
 
58
     @Test
58
     @Test
59
     public void testToString() {
59
     public void testToString() {
60
-        final Topic test = new Topic("abc", user, 1);
60
+        final Topic test = Topic.create("abc", user, 1);
61
         assertEquals("abc", test.toString());
61
         assertEquals("abc", test.toString());
62
     }
62
     }
63
 
63
 

Carregando…
Cancelar
Salvar