主菜单优化
This commit is contained in:
@@ -8,9 +8,7 @@ import com.example.workutils.menu.handler.ScanHandler;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Scanner;
|
||||
|
||||
@@ -23,21 +21,15 @@ import java.util.Scanner;
|
||||
public class MenuRunner {
|
||||
|
||||
/**
|
||||
* 主菜单选项
|
||||
*/
|
||||
private static final String[] MAIN_MENU_OPTIONS = {
|
||||
"1. 关键词扫描",
|
||||
"2. MyBatis导出",
|
||||
"3. 批量处理",
|
||||
"4. Git仓库健康检测",
|
||||
"0. 退出系统"
|
||||
};
|
||||
|
||||
/**
|
||||
* 菜单处理器映射
|
||||
* 菜单处理器映射 (序号 -> 处理器)
|
||||
*/
|
||||
private final Map<Integer, AbstractMenuHandler> handlerMap = new HashMap<>();
|
||||
|
||||
/**
|
||||
* 处理器实例映射 (类 -> 实例)
|
||||
*/
|
||||
private final Map<Class<? extends AbstractMenuHandler>, AbstractMenuHandler> handlerInstanceMap = new HashMap<>();
|
||||
|
||||
private final ScanHandler scanHandler;
|
||||
private final MyBatisHandler myBatisHandler;
|
||||
private final BatchHandler batchHandler;
|
||||
@@ -52,18 +44,34 @@ public class MenuRunner {
|
||||
this.batchHandler = batchHandler;
|
||||
this.gitHealthHandler = gitHealthHandler;
|
||||
|
||||
// 初始化处理器实例映射
|
||||
initHandlerInstanceMap();
|
||||
// 注册菜单处理器
|
||||
registerHandlers();
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化处理器实例映射
|
||||
*/
|
||||
private void initHandlerInstanceMap() {
|
||||
handlerInstanceMap.put(ScanHandler.class, scanHandler);
|
||||
handlerInstanceMap.put(MyBatisHandler.class, myBatisHandler);
|
||||
handlerInstanceMap.put(BatchHandler.class, batchHandler);
|
||||
handlerInstanceMap.put(GitHealthHandler.class, gitHealthHandler);
|
||||
}
|
||||
|
||||
/**
|
||||
* 注册菜单处理器
|
||||
*/
|
||||
private void registerHandlers() {
|
||||
handlerMap.put(1, scanHandler);
|
||||
handlerMap.put(2, myBatisHandler);
|
||||
handlerMap.put(3, batchHandler);
|
||||
handlerMap.put(4, gitHealthHandler);
|
||||
for (MenuItem item : MenuItem.values()) {
|
||||
if (item.hasHandler()) {
|
||||
AbstractMenuHandler handler = handlerInstanceMap.get(item.getHandlerClass());
|
||||
if (handler != null) {
|
||||
handlerMap.put(item.getCode(), handler);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
info("菜单处理器注册完成");
|
||||
}
|
||||
@@ -77,12 +85,12 @@ public class MenuRunner {
|
||||
info("启动主菜单");
|
||||
while (true) {
|
||||
printMenuTitle("主菜单");
|
||||
displayMenu(MAIN_MENU_OPTIONS);
|
||||
displayMenu();
|
||||
|
||||
int choice = readChoice(scanner);
|
||||
scanner.nextLine();
|
||||
|
||||
if (choice == 0) {
|
||||
if (choice == MenuItem.EXIT.getCode()) {
|
||||
info("用户退出系统");
|
||||
System.out.println("感谢使用,再见!");
|
||||
break;
|
||||
@@ -120,9 +128,11 @@ public class MenuRunner {
|
||||
/**
|
||||
* 显示菜单选项
|
||||
*/
|
||||
private void displayMenu(String[] options) {
|
||||
private void displayMenu() {
|
||||
System.out.println("请选择操作:");
|
||||
Arrays.stream(options).forEach(System.out::println);
|
||||
for (MenuItem item : MenuItem.values()) {
|
||||
System.out.println(item.getDisplayText());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user