diff --git a/project/HelpCommand.java b/project/HelpCommand.java new file mode 100644 index 0000000..15d42fd --- /dev/null +++ b/project/HelpCommand.java @@ -0,0 +1,21 @@ +package command; + +import controller.CrawlerController; + +public class HelpCommand implements Command { + private CrawlerController controller; + + public HelpCommand(CrawlerController controller) { + this.controller = controller; + } + + @Override + public void execute() { + controller.getView().showHelp(); + } + + @Override + public String getDescription() { + return "显示帮助信息"; + } +} diff --git a/project/ListCommand.class b/project/ListCommand.class new file mode 100644 index 0000000..af20f52 Binary files /dev/null and b/project/ListCommand.class differ diff --git a/project/ListCommand.java b/project/ListCommand.java new file mode 100644 index 0000000..44d8667 --- /dev/null +++ b/project/ListCommand.java @@ -0,0 +1,35 @@ +package command; + +import controller.CrawlerController; +import java.util.List; +import model.Article; + +public class ListCommand implements Command { + private CrawlerController controller; + + public ListCommand(CrawlerController controller) { + this.controller = controller; + } + + @Override + public void execute() { + List
articles = controller.getArticles(); + if (articles.isEmpty()) { + controller.getView().showMessage("暂无数据"); + return; + } + + controller.getView().showMessage("\n已爬取的数据列表:"); + for (int i = 0; i < articles.size(); i++) { + Article article = articles.get(i); + controller.getView().showMessage( + String.format("[%d] %s - %s", i + 1, article.getSource(), article.getTitle()) + ); + } + } + + @Override + public String getDescription() { + return "显示已爬取的数据列表"; + } +} diff --git a/project/SaveCommand.class b/project/SaveCommand.class new file mode 100644 index 0000000..e5f90fb Binary files /dev/null and b/project/SaveCommand.class differ diff --git a/project/SaveCommand.java b/project/SaveCommand.java new file mode 100644 index 0000000..1e09173 --- /dev/null +++ b/project/SaveCommand.java @@ -0,0 +1,40 @@ +package command; + +import model.Article; +import controller.CrawlerController; +import util.FileUtil; +import java.util.List; + +public class SaveCommand implements Command { + private CrawlerController controller; + + public SaveCommand(CrawlerController controller) { + this.controller = controller; + } + + @Override + public void execute() { + try { + List
articles = controller.getArticles(); + if (articles.isEmpty()) { + controller.getView().showMessage("没有数据可保存"); + return; + } + + for (Article article : articles) { + FileUtil.saveArticle(article); + } + + FileUtil.saveArticles(articles, "summary.txt"); + + controller.getView().showMessage("已保存 " + articles.size() + " 条数据到 data/ 目录"); + } catch (Exception e) { + controller.getView().showError("保存失败: " + e.getMessage()); + } + } + + @Override + public String getDescription() { + return "保存数据到文件"; + } +}