Browse Source

支持插件获取上下文

AE86 2 years ago
parent
commit
54e61cdc6e

+ 21 - 0
dbsyncer-common/src/main/java/org/dbsyncer/common/model/ConvertContext.java

@@ -0,0 +1,21 @@
+package org.dbsyncer.common.model;
+
+import org.dbsyncer.common.spi.ProxyApplicationContext;
+
+/**
+ * @author AE86
+ * @version 1.0.0
+ * @date 2022/6/30 16:00
+ */
+public class ConvertContext {
+
+    /**
+     * Spring上下文
+     */
+    protected ProxyApplicationContext context;
+
+    public ProxyApplicationContext getContext() {
+        return context;
+    }
+
+}

+ 38 - 0
dbsyncer-common/src/main/java/org/dbsyncer/common/model/FullConvertContext.java

@@ -0,0 +1,38 @@
+package org.dbsyncer.common.model;
+
+import org.dbsyncer.common.spi.ProxyApplicationContext;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author AE86
+ * @version 1.0.0
+ * @date 2022/6/30 16:04
+ */
+public class FullConvertContext extends ConvertContext {
+
+    /**
+     * 全量同步,数据源数据集合
+     */
+    private List<Map> sourceList;
+
+    /**
+     * 全量同步,目标源源数据集合
+     */
+    private List<Map> targetList;
+
+    public FullConvertContext(ProxyApplicationContext context, List<Map> sourceList, List<Map> targetList) {
+        this.context = context;
+        this.sourceList = sourceList;
+        this.targetList = targetList;
+    }
+
+    public List<Map> getSourceList() {
+        return sourceList;
+    }
+
+    public List<Map> getTargetList() {
+        return targetList;
+    }
+}

+ 47 - 0
dbsyncer-common/src/main/java/org/dbsyncer/common/model/IncrementConvertContext.java

@@ -0,0 +1,47 @@
+package org.dbsyncer.common.model;
+
+import org.dbsyncer.common.spi.ProxyApplicationContext;
+
+import java.util.Map;
+
+/**
+ * @author AE86
+ * @version 1.0.0
+ * @date 2022/6/30 16:06
+ */
+public class IncrementConvertContext extends ConvertContext {
+
+    /**
+     * 增量同步,事件(INSERT/UPDATE/DELETE)
+     */
+    private String event;
+
+    /**
+     * 增量同步,数据源数据
+     */
+    private Map source;
+
+    /**
+     * 增量同步,目标源数据
+     */
+    private Map target;
+
+    public IncrementConvertContext(ProxyApplicationContext context, String event, Map source, Map target) {
+        this.context = context;
+        this.event = event;
+        this.source = source;
+        this.target = target;
+    }
+
+    public String getEvent() {
+        return event;
+    }
+
+    public Map getSource() {
+        return source;
+    }
+
+    public Map getTarget() {
+        return target;
+    }
+}

+ 6 - 11
dbsyncer-common/src/main/java/org/dbsyncer/common/spi/ConvertService.java

@@ -1,7 +1,7 @@
 package org.dbsyncer.common.spi;
 
-import java.util.List;
-import java.util.Map;
+import org.dbsyncer.common.model.FullConvertContext;
+import org.dbsyncer.common.model.IncrementConvertContext;
 
 /**
  * 插件扩展服务接口
@@ -16,21 +16,16 @@ public interface ConvertService {
     /**
      * 全量同步
      *
-     * @param context Spring上下文
-     * @param source  数据源
-     * @param target  目标源
+     * @param context 上下文
      */
-    void convert(ProxyApplicationContext context, List<Map> source, List<Map> target);
+    void convert(FullConvertContext context);
 
     /**
      * 增量同步
      *
-     * @param context Spring上下文
-     * @param event   事件(INSERT/UPDATE/DELETE)
-     * @param source  数据源
-     * @param target  目标源
+     * @param context 上下文
      */
-    void convert(ProxyApplicationContext context, String event, Map source, Map target);
+    void convert(IncrementConvertContext context);
 
     /**
      * 版本号

+ 5 - 3
dbsyncer-plugin/src/main/java/org/dbsyncer/plugin/PluginFactory.java

@@ -1,8 +1,10 @@
 package org.dbsyncer.plugin;
 
 import org.apache.commons.io.FileUtils;
-import org.dbsyncer.common.spi.ProxyApplicationContext;
+import org.dbsyncer.common.model.FullConvertContext;
+import org.dbsyncer.common.model.IncrementConvertContext;
 import org.dbsyncer.common.spi.ConvertService;
+import org.dbsyncer.common.spi.ProxyApplicationContext;
 import org.dbsyncer.common.util.CollectionUtils;
 import org.dbsyncer.plugin.config.Plugin;
 import org.slf4j.Logger;
@@ -96,13 +98,13 @@ public class PluginFactory {
 
     public void convert(Plugin plugin, List<Map> source, List<Map> target) {
         if (null != plugin && service.containsKey(plugin.getClassName())) {
-            service.get(plugin.getClassName()).convert(applicationContextProxy, source, target);
+            service.get(plugin.getClassName()).convert(new FullConvertContext(applicationContextProxy, source, target));
         }
     }
 
     public void convert(Plugin plugin, String event, Map<String, Object> source, Map<String, Object> target) {
         if (null != plugin && service.containsKey(plugin.getClassName())) {
-            service.get(plugin.getClassName()).convert(applicationContextProxy, event, source, target);
+            service.get(plugin.getClassName()).convert(new IncrementConvertContext(applicationContextProxy, event, source, target));
         }
     }
 

+ 5 - 3
dbsyncer-plugin/src/main/java/org/dbsyncer/plugin/service/DemoConvertServiceImpl.java

@@ -1,6 +1,8 @@
 package org.dbsyncer.plugin.service;
 
 import org.dbsyncer.common.config.AppConfig;
+import org.dbsyncer.common.model.FullConvertContext;
+import org.dbsyncer.common.model.IncrementConvertContext;
 import org.dbsyncer.common.spi.ConvertService;
 import org.dbsyncer.common.spi.ProxyApplicationContext;
 import org.slf4j.Logger;
@@ -20,12 +22,12 @@ public class DemoConvertServiceImpl implements ConvertService {
     private AppConfig appConfig;
 
     @Override
-    public void convert(ProxyApplicationContext context, List<Map> source, List<Map> target) {
+    public void convert(FullConvertContext context) {
     }
 
     @Override
-    public void convert(ProxyApplicationContext context, String event, Map source, Map target) {
-        logger.info("插件正在处理同步数据,事件:{},数据:{}", event, source);
+    public void convert(IncrementConvertContext context) {
+        logger.info("插件正在处理同步数据,事件:{},数据:{}", context.getEvent(), context.getSource());
     }
 
     @Override