1 changed files with 43 additions and 0 deletions
@ -0,0 +1,43 @@ |
|||
package com.example.moviecli.controller; |
|||
|
|||
import com.example.moviecli.command.*; |
|||
import com.example.moviecli.repository.MovieRepository; |
|||
import com.example.moviecli.strategy.MovieStrategyFactory; |
|||
import com.example.moviecli.view.ConsoleView; |
|||
import java.util.HashMap; |
|||
import java.util.Map; |
|||
|
|||
public class MovieController { |
|||
private final Map<String, Command> commands = new HashMap<>(); |
|||
private final ConsoleView view; |
|||
private final MovieRepository repository; |
|||
|
|||
public MovieController(ConsoleView view, MovieRepository repository, MovieStrategyFactory factory) { |
|||
this.view = view; |
|||
this.repository = repository; |
|||
register(new CrawlCommand(view, factory)); |
|||
register(new AutoCommand(view, factory)); |
|||
register(new ListCommand(view)); |
|||
register(new SearchCommand(view)); |
|||
register(new StatCommand(view)); |
|||
register(new ExportCommand(view)); |
|||
register(new HelpCommand(view)); |
|||
register(new ExitCommand(view)); |
|||
} |
|||
|
|||
private void register(Command cmd) { |
|||
commands.put(cmd.getName(), cmd); |
|||
} |
|||
|
|||
public void handle(String input) { |
|||
if (input == null || input.trim().isEmpty()) return; |
|||
String[] parts = input.trim().split("\\s+"); |
|||
String cmdName = parts[0].toLowerCase(); |
|||
Command cmd = commands.get(cmdName); |
|||
if (cmd == null) { |
|||
view.printError("未知命令:" + cmdName + ",输入 help 查看帮助。"); |
|||
return; |
|||
} |
|||
cmd.execute(parts, repository); |
|||
} |
|||
} |
|||
Loading…
Reference in new issue