package com.ullink.slack.review; import java.util.ArrayList; import java.util.List; import com.ullink.slack.simpleslackapi.SlackSession; import com.ullink.slack.simpleslackapi.events.SlackMessagePosted; import com.ullink.slack.simpleslackapi.listeners.SlackMessagePostedListener; import commands.ListReviewCommandProcessor; import commands.PublishReviewCommandProcessor; import commands.ReviewCommandProcessor; import commands.SlackBotCommandProcessor; import commands.SubscribeProjectCommandProcessor; import commands.UnsubscribeProjectCommandProcessor; public class ReviewMessageListener implements SlackMessagePostedListener { private static final String ACK_EMOJI = "white_check_mark"; List<SlackBotCommandProcessor> commandProcessors = new ArrayList<SlackBotCommandProcessor>(); public ReviewMessageListener() { commandProcessors.add(Connector.injector.getInstance(ReviewCommandProcessor.class)); commandProcessors.add(Connector.injector.getInstance(PublishReviewCommandProcessor.class)); commandProcessors.add(Connector.injector.getInstance(SubscribeProjectCommandProcessor.class)); commandProcessors.add(Connector.injector.getInstance(UnsubscribeProjectCommandProcessor.class)); commandProcessors.add(Connector.injector.getInstance(ListReviewCommandProcessor.class)); } @Override public void onEvent(SlackMessagePosted event, SlackSession session) { if (event.getMessageContent() != null) { String messageContent = event.getMessageContent(); String lines[] = messageContent.split("\\r?\\n"); int count = 0; for (String line : lines) { for (SlackBotCommandProcessor processor : commandProcessors) { if (processor.process(line, event, session)) { count++; } } } if (count > 0) { session.addReactionToMessage(event.getChannel(), event.getTimeStamp(), ACK_EMOJI); } } } }