package com.juick.command; import com.juick.User; import com.juick.formatters.PlainTextFormatter; import com.juick.server.protocol.ProtocolListener; import com.juick.service.MessagesService; import lombok.Getter; import org.springframework.stereotype.Component; import java.util.Collections; import java.util.regex.Pattern; import java.util.stream.Collectors; /** * @author ma1uta */ @Component @Getter public class LastMessages implements Command { private static final Pattern PATTERN = Pattern.compile("^#\\+$", Pattern.CASE_INSENSITIVE); private final MessagesService messagesService; public LastMessages(MessagesService messagesService) { this.messagesService = messagesService; } @Override public Pattern pattern() { return PATTERN; } @Override public String help() { return "#+ - Show last Juick messages"; } @Override public String execute(User sender, ProtocolListener protocolListener, String command) { return "Last messages:\n" + getMessagesService().getMessages(getMessagesService().getAll(sender.getUid(), 0)).stream() .sorted(Collections.reverseOrder()) .map(PlainTextFormatter::formatPostSummary).collect(Collectors.joining("\n\n")); } }