Преглед изворни кода

优化

Signed-off-by: AE86 <836391306@qq.com>
AE86 пре 2 година
родитељ
комит
825d505889

+ 4 - 1
dbsyncer-manager/src/main/java/org/dbsyncer/manager/Command.java

@@ -1,4 +1,7 @@
 package org.dbsyncer.manager;
 
-public interface Command {
+import org.dbsyncer.manager.command.Persistence;
+import org.dbsyncer.manager.command.Preload;
+
+public interface Command extends Persistence, Preload {
 }

+ 14 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/command/Persistence.java

@@ -0,0 +1,14 @@
+package org.dbsyncer.manager.command;
+
+import org.dbsyncer.manager.ManagerException;
+
+public interface Persistence {
+
+    default boolean addConfig() {
+        throw new ManagerException("Unsupported method addConfig");
+    }
+
+    default boolean editConfig() {
+        throw new ManagerException("Unsupported method editConfig");
+    }
+}

+ 2 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/command/PersistenceCommand.java

@@ -17,11 +17,13 @@ public class PersistenceCommand implements Command {
         this.params = params;
     }
 
+    @Override
     public boolean addConfig() {
         storageService.add(StorageEnum.CONFIG, params);
         return true;
     }
 
+    @Override
     public boolean editConfig() {
         storageService.edit(StorageEnum.CONFIG, params);
         return true;

+ 35 - 0
dbsyncer-manager/src/main/java/org/dbsyncer/manager/command/Preload.java

@@ -0,0 +1,35 @@
+package org.dbsyncer.manager.command;
+
+import org.dbsyncer.manager.ManagerException;
+import org.dbsyncer.parser.model.*;
+
+public interface Preload {
+
+    default SystemConfig parseSystemConfig(){
+        throw new ManagerException("Unsupported method parseSystemConfig");
+    }
+
+    default UserConfig parseUserConfig(){
+        throw new ManagerException("Unsupported method parseUserConfig");
+    }
+
+    default Connector parseConnector(){
+        throw new ManagerException("Unsupported method parseConnector");
+    }
+
+    default Mapping parseMapping(){
+        throw new ManagerException("Unsupported method parseMapping");
+    }
+
+    default TableGroup parseTableGroup(){
+        throw new ManagerException("Unsupported method parseTableGroup");
+    }
+
+    default Meta parseMeta(){
+        throw new ManagerException("Unsupported method parseMeta");
+    }
+
+    default ProjectGroup parseProjectGroup(){
+        throw new ManagerException("Unsupported method parseProjectGroup");
+    }
+}

+ 20 - 8
dbsyncer-manager/src/main/java/org/dbsyncer/manager/command/PreloadCommand.java

@@ -2,8 +2,13 @@ package org.dbsyncer.manager.command;
 
 import org.dbsyncer.manager.Command;
 import org.dbsyncer.parser.Parser;
-import org.dbsyncer.parser.model.*;
+import org.dbsyncer.parser.model.Connector;
+import org.dbsyncer.parser.model.Mapping;
+import org.dbsyncer.parser.model.Meta;
+import org.dbsyncer.parser.model.ProjectGroup;
 import org.dbsyncer.parser.model.SystemConfig;
+import org.dbsyncer.parser.model.TableGroup;
+import org.dbsyncer.parser.model.UserConfig;
 
 public class PreloadCommand implements Command {
 
@@ -16,31 +21,38 @@ public class PreloadCommand implements Command {
         this.json = json;
     }
 
-    public Object parseSystemConfig() {
+    @Override
+    public SystemConfig parseSystemConfig() {
         return parser.parseObject(json, SystemConfig.class);
     }
 
-    public Object parseUserConfig() {
+    @Override
+    public UserConfig parseUserConfig() {
         return parser.parseObject(json, UserConfig.class);
     }
 
-    public Object parseConnector() {
+    @Override
+    public Connector parseConnector() {
         return parser.parseConnector(json);
     }
 
-    public Object parseMapping() {
+    @Override
+    public Mapping parseMapping() {
         return parser.parseObject(json, Mapping.class);
     }
 
-    public Object parseTableGroup() {
+    @Override
+    public TableGroup parseTableGroup() {
         return parser.parseObject(json, TableGroup.class);
     }
 
-    public Object parseMeta() {
+    @Override
+    public Meta parseMeta() {
         return parser.parseObject(json, Meta.class);
     }
 
-    public Object parseProjectGroup() {
+    @Override
+    public ProjectGroup parseProjectGroup() {
         return parser.parseObject(json, ProjectGroup.class);
     }
 

+ 34 - 17
dbsyncer-manager/src/main/java/org/dbsyncer/manager/enums/CommandEnum.java

@@ -1,11 +1,13 @@
 package org.dbsyncer.manager.enums;
 
 import org.dbsyncer.manager.CommandExecutor;
-import org.dbsyncer.manager.command.PersistenceCommand;
-import org.dbsyncer.manager.command.PreloadCommand;
+import org.dbsyncer.manager.command.Persistence;
+import org.dbsyncer.manager.command.Preload;
 import org.dbsyncer.storage.constant.ConfigConstant;
 
 /**
+ * 枚举命令模式: 持久化和预加载
+ *
  * @author AE86
  * @version 1.0.0
  * @date 2020/04/24 14:19
@@ -15,66 +17,81 @@ public enum CommandEnum {
     /**
      * 添加
      */
-    OPR_ADD("add", (cmd) -> ((PersistenceCommand) cmd).addConfig()),
+    OPR_ADD("add", Persistence::addConfig),
 
     /**
      * 修改
      */
-    OPR_EDIT("edit", (cmd) -> ((PersistenceCommand) cmd).editConfig()),
+    OPR_EDIT("edit", Persistence::editConfig),
 
     /**
      * 预加载SystemConfig
      */
-    PRELOAD_SYSTEM(ConfigConstant.SYSTEM, true, (cmd) -> ((PreloadCommand) cmd).parseSystemConfig()),
+    PRELOAD_SYSTEM(ConfigConstant.SYSTEM, Preload::parseSystemConfig, true),
 
     /**
      * 预加载UserConfig
      */
-    PRELOAD_USER(ConfigConstant.USER, true, (cmd) -> ((PreloadCommand) cmd).parseUserConfig()),
+    PRELOAD_USER(ConfigConstant.USER, Preload::parseUserConfig, true),
 
     /**
      * 预加载Connector
      */
-    PRELOAD_CONNECTOR(ConfigConstant.CONNECTOR, true, (cmd) -> ((PreloadCommand) cmd).parseConnector()),
+    PRELOAD_CONNECTOR(ConfigConstant.CONNECTOR, Preload::parseConnector, true),
 
     /**
      * 预加载Mapping
      */
-    PRELOAD_MAPPING(ConfigConstant.MAPPING, true, (cmd) -> ((PreloadCommand) cmd).parseMapping()),
+    PRELOAD_MAPPING(ConfigConstant.MAPPING, Preload::parseMapping, true),
 
     /**
      * 预加载TableGroup
      */
-    PRELOAD_TABLE_GROUP(ConfigConstant.TABLE_GROUP, true, GroupStrategyEnum.TABLE, (cmd) -> ((PreloadCommand) cmd).parseTableGroup()),
+    PRELOAD_TABLE_GROUP(ConfigConstant.TABLE_GROUP, Preload::parseTableGroup, true, GroupStrategyEnum.TABLE),
 
     /**
      * 预加载Meta
      */
-    PRELOAD_META(ConfigConstant.META, true, (cmd) -> ((PreloadCommand) cmd).parseMeta()),
+    PRELOAD_META(ConfigConstant.META, Preload::parseMeta, true),
 
     /**
      * 预加载ProjectGroup
      */
-    PRELOAD_PROJECT_GROUP(ConfigConstant.PROJECT_GROUP, true, (cmd) -> ((PreloadCommand) cmd).parseProjectGroup());
+    PRELOAD_PROJECT_GROUP(ConfigConstant.PROJECT_GROUP, Preload::parseProjectGroup, true);
 
+    /**
+     * 命令类型
+     */
     private String modelType;
-    private boolean preload;
+
+    /**
+     * 执行器
+     */
     private CommandExecutor commandExecutor;
+
+    /**
+     * 是否预加载
+     */
+    private boolean preload;
+
+    /**
+     * 分组持久化策略
+     */
     private GroupStrategyEnum groupStrategyEnum;
 
     CommandEnum(String modelType, CommandExecutor commandExecutor) {
-        this(modelType, false, commandExecutor);
+        this(modelType, commandExecutor, false);
     }
 
-    CommandEnum(String modelType, boolean preload, CommandExecutor commandExecutor) {
-        this(modelType, preload, GroupStrategyEnum.DEFAULT, commandExecutor);
+    CommandEnum(String modelType, CommandExecutor commandExecutor, boolean preload) {
+        this(modelType, commandExecutor, preload, GroupStrategyEnum.DEFAULT);
     }
 
-    CommandEnum(String modelType, boolean preload, GroupStrategyEnum groupStrategyEnum, CommandExecutor commandExecutor) {
+    CommandEnum(String modelType, CommandExecutor commandExecutor, boolean preload, GroupStrategyEnum groupStrategyEnum) {
         this.modelType = modelType;
+        this.commandExecutor = commandExecutor;
         this.preload = preload;
         this.groupStrategyEnum = groupStrategyEnum;
-        this.commandExecutor = commandExecutor;
     }
 
     public String getModelType() {