package com.example.datacollect.controller; import com.example.datacollect.command.*; import com.example.datacollect.command.ExportCommand; import com.example.datacollect.command.ImportCommand; import com.example.datacollect.repository.ArticleRepository; import com.example.datacollect.strategy.StrategyFactory; import com.example.datacollect.view.ConsoleView; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.HashMap; import java.util.Map; public class CrawlerController { private static final Logger logger = LoggerFactory.getLogger(CrawlerController.class); private final Map commands = new HashMap<>(); private final ConsoleView view; private final ArticleRepository repository; public CrawlerController(ConsoleView view, ArticleRepository repository, StrategyFactory strategyFactory) { this.view = view; this.repository = repository; logger.info("注册系统命令"); // 原有命令 register(new HelpCommand(view)); register(new ListCommand(view)); register(new CrawlCommand(view, strategyFactory)); register(new AnalyzeCommand(view, strategyFactory)); register(new ExitCommand(view)); // 新增:注册导出/导入命令 register(new ExportCommand(view)); register(new ImportCommand(view)); logger.debug("已注册命令: {}", commands.keySet()); } private void register(Command command) { commands.put(command.getName(), command); logger.debug("注册命令: {}", command.getName()); } public void handle(String input) { String text = input == null ? "" : input.trim(); logger.debug("处理用户输入: {}", text); if (text.isEmpty()) return; String[] args = text.split("\\s+"); String cmdName = args[0].toLowerCase(); Command command = commands.get(cmdName); if (command == null) { view.printError("未知命令: " + cmdName + " | 输入 help 查看帮助"); return; } logger.info("执行命令: {}", cmdName); command.execute(args, repository); } }