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.
64 lines
2.1 KiB
64 lines
2.1 KiB
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<String, List<Paper>> papersByPlatform = repository.loadAllPapersGroupedByPlatform();
|
|
|
|
if (papersByPlatform.isEmpty()) {
|
|
view.showInfo("暂无论文,请先执行 crawl 命令爬取论文");
|
|
} else {
|
|
int totalCount = 0;
|
|
for (Entry<String, List<Paper>> entry : papersByPlatform.entrySet()) {
|
|
totalCount += entry.getValue().size();
|
|
}
|
|
|
|
view.showInfo("当前已获取 " + totalCount + " 篇论文,分布在 " + papersByPlatform.size() + " 个平台:");
|
|
System.out.println();
|
|
|
|
int globalIndex = 1;
|
|
for (Entry<String, List<Paper>> entry : papersByPlatform.entrySet()) {
|
|
String platformName = entry.getKey();
|
|
List<Paper> 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";
|
|
}
|
|
}
|