package com.juick.command; import com.juick.User; import lombok.Getter; import org.springframework.beans.BeansException; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.stereotype.Component; import java.util.regex.Pattern; import java.util.stream.Collectors; import javax.annotation.PostConstruct; /** * @author ma1uta */ @Component @Getter public class ShowHelp implements Command, ApplicationContextAware { private static final Pattern PATTERN = Pattern.compile("^help$", Pattern.CASE_INSENSITIVE); private ApplicationContext applicationContext; private String help; @PostConstruct public void init() { help = getApplicationContext().getBeansOfType(Command.class).values().stream().map(Command::help).sorted() .collect(Collectors.joining("\n")); } @Override public Pattern pattern() { return PATTERN; } @Override public String help() { return "HELP - returns this help message."; } @Override public String execute(User sender, MessageListener protocolListener, String command) { return getHelp(); } @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { this.applicationContext = applicationContext; } }