ソースを参照

Make more things use GroupChatUser.

  - Also by AutoValue Topic
  - Also make getUser in Topic Optional
pull/300/head
Greg Holmes 9年前
コミット
6bf34be332

+ 3
- 3
src/com/dmdirc/Channel.java ファイルの表示

@@ -481,9 +481,9 @@ public class Channel extends MessageTarget implements GroupChat {
481 481
             // Format topics
482 482
             final Topic topic = (Topic) arg;
483 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 487
             args.add(topic.getTopic());
488 488
             args.add(topic.getTime() * 1000);
489 489
 

+ 14
- 8
src/com/dmdirc/ChannelEventHandler.java ファイルの表示

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

+ 15
- 48
src/com/dmdirc/Topic.java ファイルの表示

@@ -24,61 +24,28 @@ package com.dmdirc;
24 24
 
25 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 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 39
     /** Topic. */
33
-    private final String topic;
40
+    public abstract String getTopic();
34 41
     /** Topic client. */
35
-    private final GroupChatUser client;
42
+    public abstract Optional<GroupChatUser> getClient();
36 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 ファイルの表示

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

+ 5
- 5
src/com/dmdirc/events/ChannelJoinEvent.java ファイルの表示

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

+ 7
- 7
src/com/dmdirc/events/ChannelKickEvent.java ファイルの表示

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

+ 5
- 5
src/com/dmdirc/events/ChannelModechangeEvent.java ファイルの表示

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

+ 5
- 6
src/com/dmdirc/events/ChannelNickchangeEvent.java ファイルの表示

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

+ 5
- 5
src/com/dmdirc/events/ChannelPartEvent.java ファイルの表示

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

+ 5
- 5
src/com/dmdirc/events/ChannelQuitEvent.java ファイルの表示

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

+ 4
- 4
test/com/dmdirc/TopicTest.java ファイルの表示

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

読み込み中…
キャンセル
保存