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 0000000000000000000000000000000000000000..beafef19f841f69197535eafe74dcb3c5aa81e94 --- /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 0000000000000000000000000000000000000000..36f3835299eb401bf82344949f028b68bbf6696d --- /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 119361ae5204536911df4909b1455c08c8071bca..28ebf5eed406c6d41c3f03f460107c4e8d8f0097 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(); + } }