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 commands; @Setter private ProtocolListener protocolListener; @Autowired public Processor(Set 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 ""; } }