package com.example.datacollect.view; import com.example.datacollect.model.Article; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.List; import java.util.Scanner; public class ConsoleView { private static final Logger logger = LoggerFactory.getLogger(ConsoleView.class); private static final String ANSI_RESET = "\u001B[0m"; private static final String ANSI_GREEN = "\u001B[32m"; private static final String ANSI_RED = "\u001B[31m"; private static final String ANSI_BLUE = "\u001B[34m"; private final Scanner scanner = new Scanner(System.in); public String readLine() { System.out.print("> "); String input = scanner.nextLine(); logger.debug("User input: {}", input); return input; } public void printSuccess(String msg) { logger.info(msg); System.out.println(ANSI_GREEN + msg + ANSI_RESET); } public void printError(String msg) { logger.error(msg); System.out.println(ANSI_RED + msg + ANSI_RESET); } public void printInfo(String msg) { logger.info(msg); System.out.println(ANSI_BLUE + msg + ANSI_RESET); } public void display(List
articles) { logger.debug("Displaying {} articles", articles.size()); if (articles.isEmpty()) { String emptyMsg = "暂无文章,请先执行 crawl。"; logger.info(emptyMsg); printInfo(emptyMsg); return; } for (int i = 0; i < articles.size(); i++) { Article a = articles.get(i); String articleStr = (i + 1) + ". " + a.getTitle() + " | " + a.getUrl(); System.out.println(articleStr); logger.debug(articleStr); } } }