From 58aae4c4d9ffd6029d3bee6802d4e9a90cee0a7d Mon Sep 17 00:00:00 2001 From: wzh <971160392@qq.com> Date: Fri, 18 Nov 2022 22:10:18 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90update=E3=80=91=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E5=AE=9E=E4=BE=8B=E8=8E=B7=E5=8F=96=E6=96=B9?= =?UTF-8?q?=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/constant/ReaderPluginEnum.java | 42 +++++++++++++++++++ .../com/constant/WriterPluginEnum.java | 40 ++++++++++++++++++ core/src/main/java/HongHuStart.java | 40 ++++++++++++------ 3 files changed, 110 insertions(+), 12 deletions(-) create mode 100644 common/src/main/java/www/larkmidtable/com/constant/ReaderPluginEnum.java create mode 100644 common/src/main/java/www/larkmidtable/com/constant/WriterPluginEnum.java diff --git a/common/src/main/java/www/larkmidtable/com/constant/ReaderPluginEnum.java b/common/src/main/java/www/larkmidtable/com/constant/ReaderPluginEnum.java new file mode 100644 index 0000000..beafef1 --- /dev/null +++ b/common/src/main/java/www/larkmidtable/com/constant/ReaderPluginEnum.java @@ -0,0 +1,42 @@ +package www.larkmidtable.com.constant; + +import java.util.stream.Stream; + +/** + * 所有插件名称与类路径 + * @author + */ +public enum ReaderPluginEnum { + MYSQLREADER("mysqlreader","www.larkmidtable.com.MySQLReader"), + ORACLEREADER("oraclelreader","www.larkmidtable.com.reader.oraclereader.OracleReader"); + private String name; + private String classPath; + + ReaderPluginEnum(String name, String classPath) { + this.name = name; + this.classPath = classPath; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getClassPath() { + return classPath; + } + + public void setClassPath(String classPath) { + this.classPath = classPath; + } + + public static ReaderPluginEnum getByName(String name){ + return Stream.of(ReaderPluginEnum.values()) + .filter(pluginEnum -> pluginEnum.name.equals(name)) + .findAny() + .orElse(null); + } +} diff --git a/common/src/main/java/www/larkmidtable/com/constant/WriterPluginEnum.java b/common/src/main/java/www/larkmidtable/com/constant/WriterPluginEnum.java new file mode 100644 index 0000000..36f3835 --- /dev/null +++ b/common/src/main/java/www/larkmidtable/com/constant/WriterPluginEnum.java @@ -0,0 +1,40 @@ +package www.larkmidtable.com.constant; + +import java.util.stream.Stream; + +public enum WriterPluginEnum { + + MYSQLWRITER("mysqlwriter","www.larkmidtable.com.MySQLWriter"), + ORACLEWRITER("oraclewriter","ww.larkmidtable.com.writer.oraclewriter.OracleWriter"); + private String name; + private String classPath; + + WriterPluginEnum(String name, String classPath) { + this.name = name; + this.classPath = classPath; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public String getClassPath() { + return classPath; + } + + public void setClassPath(String classPath) { + this.classPath = classPath; + } + + public static WriterPluginEnum getByName(String name){ + return Stream.of(WriterPluginEnum.values()) + .filter(pluginEnum -> pluginEnum.name.equals(name)) + .findAny() + .orElse(null); + } + +} diff --git a/core/src/main/java/HongHuStart.java b/core/src/main/java/HongHuStart.java index 119361a..28ebf5e 100644 --- a/core/src/main/java/HongHuStart.java +++ b/core/src/main/java/HongHuStart.java @@ -9,6 +9,8 @@ import www.larkmidtable.com.MySQLReader; import www.larkmidtable.com.MySQLWriter; import www.larkmidtable.com.channel.Channel; +import www.larkmidtable.com.constant.ReaderPluginEnum; +import www.larkmidtable.com.constant.WriterPluginEnum; import www.larkmidtable.com.reader.Reader; import www.larkmidtable.com.reader.oraclereader.OracleReader; import www.larkmidtable.com.writer.Writer; @@ -60,18 +62,24 @@ public class HongHuStart { } String readerPlugin = readerConfig.get("plugin"); String writerPlugin = writerConfig.get("plugin"); - // 2.创建Reader - if("mysqlreader".equals(readerPlugin)) { - reader = new MySQLReader(); - } else if("oraclereader".equals(readerPlugin)) { - reader = new OracleReader(); - } - - // 3.创建Writer - if("mysqlwriter".equals(writerPlugin)) { - writer = new MySQLWriter(); - } else if("mysqlwriter".equals(writerPlugin)) { - writer = new OracleWriter(); +// // 2.创建Reader +// if("mysqlreader".equals(readerPlugin)) { +// reader = new MySQLReader(); +// } else if("oraclereader".equals(readerPlugin)) { +// reader = new OracleReader(); +// } +// +// // 3.创建Writer +// if("mysqlwriter".equals(writerPlugin)) { +// writer = new MySQLWriter(); +// } else if("mysqlwriter".equals(writerPlugin)) { +// writer = new OracleWriter(); +// } + try { + reader = getReaderPlugin(readerPlugin); + writer = getWriterPlugin(writerPlugin); + } catch (Exception e) { + logger.error("获取插件失败:",e); } // 4.Channel @@ -79,4 +87,12 @@ public class HongHuStart { channel.channel(reader,writer); logger.info("结束迁移任务...."); } + + private static Writer getWriterPlugin(String name) throws ClassNotFoundException, InstantiationException, IllegalAccessException { + return (Writer) Class.forName(WriterPluginEnum.valueOf(name).getClassPath()).newInstance(); + } + + private static Reader getReaderPlugin(String name) throws ClassNotFoundException, InstantiationException, IllegalAccessException { + return (Reader) Class.forName(ReaderPluginEnum.getByName(name).getClassPath()).newInstance(); + } } -- Gitee