package com.juick.command; import com.juick.Message; 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.apache.commons.lang3.math.NumberUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.util.List; import java.util.regex.Pattern; import java.util.stream.Collectors; /** * @author ma1uta */ @Component @Getter public class ShowMessage extends MultiArgsCommand { private static final Pattern PATTERN = Pattern.compile("^#(\\d+)(\\+?)$", Pattern.CASE_INSENSITIVE); private final MessagesService messagesService; @Autowired public ShowMessage(MessagesService messagesService) { this.messagesService = messagesService; } @Override public Pattern pattern() { return PATTERN; } @Override public String help() { return "#1234 - Show message (#1234+ - message with replies)"; } @Override protected String execute(User sender, ProtocolListener protocolListener, String... arguments) { boolean showReplies = arguments[1].length() > 0; int mid = NumberUtils.toInt(arguments[0], 0); if (mid == 0) { return "Error"; } Message msg = getMessagesService().getMessage(mid); if (msg != null) { if (showReplies) { List replies = getMessagesService().getReplies(mid); replies.add(0, msg); return String.join("\n", replies.stream().map(PlainTextFormatter::formatPost).collect(Collectors.toList())); } return PlainTextFormatter.formatPost(msg); } return "Message not found"; } }