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 com.juick.service.UserService; import lombok.Getter; 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 ShowUserInfo extends MultiArgsCommand { private static final Pattern PATTERN = Pattern.compile("^@([^\\s\\n+]+)(\\+?)$", Pattern.CASE_INSENSITIVE); private final UserService userService; private final MessagesService messagesService; public ShowUserInfo(UserService userService, MessagesService messagesService) { this.userService = userService; this.messagesService = messagesService; } @Override public Pattern pattern() { return PATTERN; } @Override public String help() { return "@username+ - Show user's info and last 10 messages (@username++ - second page, ..)"; } @Override protected String execute(User sender, ProtocolListener protocolListener, String... arguments) { User blogUser = getUserService().getUserByName(arguments[0]); int page = arguments[1].length(); if (blogUser.getUid() > 0) { List mids = getMessagesService().getUserBlog(blogUser.getUid(), 0, page); List messages = getMessagesService().getMessages(mids); return String.format("Last messages from @%s:\n%s", arguments[0], String.join("\n", messages.stream() .map(PlainTextFormatter::formatPost).collect(Collectors.toList()))); } return "User not found"; } }