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