1 changed files with 0 additions and 82 deletions
@ -1,82 +0,0 @@ |
|||||
package com.example.datacollect.controller; |
|
||||
|
|
||||
import java.util.ArrayList; |
|
||||
import java.util.HashMap; |
|
||||
import java.util.List; |
|
||||
import java.util.Map; |
|
||||
|
|
||||
import org.slf4j.Logger; |
|
||||
import org.slf4j.LoggerFactory; |
|
||||
|
|
||||
import com.example.datacollect.command.Command; |
|
||||
import com.example.datacollect.command.CrawlCommand; |
|
||||
import com.example.datacollect.command.ExitCommand; |
|
||||
import com.example.datacollect.command.HelpCommand; |
|
||||
import com.example.datacollect.command.HistoryCommand; |
|
||||
import com.example.datacollect.command.ListCommand; |
|
||||
import com.example.datacollect.command.LoadCommand; |
|
||||
import com.example.datacollect.command.SaveCommand; |
|
||||
import com.example.datacollect.repository.ArticleRepository; |
|
||||
import com.example.datacollect.strategy.StrategyFactory; |
|
||||
import com.example.datacollect.view.ConsoleView; |
|
||||
|
|
||||
public class CrawlerController { |
|
||||
private static final Logger logger = LoggerFactory.getLogger(CrawlerController.class); |
|
||||
|
|
||||
private final Map<String, Command> commands = new HashMap<>(); |
|
||||
private final Map<String, String> aliases = new HashMap<>(); |
|
||||
private final ConsoleView view; |
|
||||
private final ArticleRepository repository; |
|
||||
private final List<String> history = new ArrayList<>(); |
|
||||
|
|
||||
public CrawlerController(ConsoleView view, ArticleRepository repository, StrategyFactory strategyFactory) { |
|
||||
this.view = view; |
|
||||
this.repository = repository; |
|
||||
register(new HelpCommand(view)); |
|
||||
register(new ListCommand(view)); |
|
||||
register(new CrawlCommand(view, strategyFactory)); |
|
||||
register(new SaveCommand(view)); |
|
||||
register(new LoadCommand(view)); |
|
||||
register(new ExitCommand(view)); |
|
||||
register(new HistoryCommand(view, history)); |
|
||||
registerAlias("c", "crawl"); |
|
||||
logger.info("CrawlerController initialized with {} commands", commands.size()); |
|
||||
} |
|
||||
|
|
||||
private void register(Command command) { |
|
||||
commands.put(command.getName(), command); |
|
||||
logger.debug("Registered command: {}", command.getName()); |
|
||||
} |
|
||||
|
|
||||
private void registerAlias(String alias, String commandName) { |
|
||||
aliases.put(alias, commandName); |
|
||||
logger.debug("Registered alias: {} -> {}", alias, commandName); |
|
||||
} |
|
||||
|
|
||||
public void handle(String input) { |
|
||||
String text = input == null ? "" : input.trim(); |
|
||||
if (text.isEmpty()) { |
|
||||
return; |
|
||||
} |
|
||||
|
|
||||
history.add(text); |
|
||||
logger.info("Received command: {}", text); |
|
||||
|
|
||||
String[] args = text.split("\\s+"); |
|
||||
String cmdName = args[0].toLowerCase(); |
|
||||
|
|
||||
if (aliases.containsKey(cmdName)) { |
|
||||
String originalCmd = cmdName; |
|
||||
cmdName = aliases.get(cmdName); |
|
||||
logger.debug("Resolved alias {} to command {}", originalCmd, cmdName); |
|
||||
} |
|
||||
|
|
||||
Command command = commands.get(cmdName); |
|
||||
if (command == null) { |
|
||||
view.printError("Unknown command: " + cmdName); |
|
||||
logger.warn("Unknown command received: {}", cmdName); |
|
||||
return; |
|
||||
} |
|
||||
command.execute(args, repository); |
|
||||
} |
|
||||
} |
|
||||
Loading…
Reference in new issue