You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
56 lines
1.7 KiB
56 lines
1.7 KiB
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<Article> 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);
|
|
}
|
|
}
|
|
}
|
|
|