Use a simple command handler for simple commands.
[xudocci.git] / src / main / java / net / pterodactylus / irc / connection / SimpleCommandHandler.java
1 package net.pterodactylus.irc.connection;
2
3 import java.util.HashMap;
4 import java.util.List;
5 import java.util.Map;
6
7 import net.pterodactylus.irc.Reply;
8
9 /**
10  * Handler that can process any number of events.
11  *
12  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
13  */
14 public class SimpleCommandHandler implements Handler {
15
16         private final Map<String, EventProcessor> commandEventSenders =
17                         new HashMap<>();
18
19         public SimpleCommandHandler addCommand(String command,
20                         EventProcessor eventProcessor) {
21                 commandEventSenders.put(command, eventProcessor);
22                 return this;
23         }
24
25         @Override
26         public boolean willHandle(Reply reply) {
27                 return commandEventSenders.containsKey(reply.command());
28         }
29
30         @Override
31         public void handleReply(Reply reply) {
32                 EventProcessor eventProcessor =
33                                 commandEventSenders.get(reply.command());
34                 eventProcessor.processEvent(reply.parameters());
35         }
36
37         /**
38          * Interface for event processors.
39          *
40          * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
41          */
42         @FunctionalInterface
43         public static interface EventProcessor {
44
45                 void processEvent(List<String> parameters);
46
47         }
48
49 }