package command; import model.Paper; import repository.PaperRepository; import view.ConsoleView; import java.util.List; import java.util.Map; import java.util.Map.Entry; public class ListCommand implements Command { private ConsoleView view; public ListCommand(ConsoleView view) { this.view = view; } @Override public void execute(String[] args, PaperRepository repository) { try { Map> papersByPlatform = repository.loadAllPapersGroupedByPlatform(); if (papersByPlatform.isEmpty()) { view.showInfo("暂无论文,请先执行 crawl 命令爬取论文"); } else { int totalCount = 0; for (Entry> entry : papersByPlatform.entrySet()) { totalCount += entry.getValue().size(); } view.showInfo("当前已获取 " + totalCount + " 篇论文,分布在 " + papersByPlatform.size() + " 个平台:"); System.out.println(); int globalIndex = 1; for (Entry> entry : papersByPlatform.entrySet()) { String platformName = entry.getKey(); List papers = entry.getValue(); System.out.println("【" + platformName + "】 (" + papers.size() + " 篇)"); System.out.println("-".repeat(50)); for (int i = 0; i < papers.size(); i++) { Paper paper = papers.get(i); view.showPaperInfo(globalIndex, paper); globalIndex++; } System.out.println(); } } } catch (Exception e) { view.showError("查询失败: " + e.getMessage()); } } @Override public String getDescription() { return "查询已获取的论文列表"; } @Override public String getName() { return "list"; } }