diff options
Diffstat (limited to 'juick-commands/src/main/java/com/juick/command/Processor.java')
-rw-r--r-- | juick-commands/src/main/java/com/juick/command/Processor.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/juick-commands/src/main/java/com/juick/command/Processor.java b/juick-commands/src/main/java/com/juick/command/Processor.java new file mode 100644 index 00000000..bf38a1b3 --- /dev/null +++ b/juick-commands/src/main/java/com/juick/command/Processor.java @@ -0,0 +1,48 @@ +package com.juick.command; + +import com.juick.User; +import com.juick.server.protocol.ProtocolListener; +import lombok.Getter; +import lombok.Setter; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.Set; + +/** + * @author ma1uta + */ +@Component +@Getter +public class Processor { + + private static final Logger LOGGER = LoggerFactory.getLogger(Processor.class); + + private final Set<Command> commands; + @Setter + private ProtocolListener protocolListener; + + @Autowired + public Processor(Set<Command> commands) { + this.commands = commands; + } + + public String execute(User sender, String command) { + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("Execute command: {}", command); + } + for (Command commandItem : getCommands()) { + if (commandItem.pattern().matcher(command).matches()) { + if (LOGGER.isDebugEnabled()) { + LOGGER.debug("Found command processor: {}", commandItem.getClass().getName()); + } + return commandItem.execute(sender, command); + } + } + + LOGGER.debug("Command processor not found, return help"); + return ""; + } +} |