From 447b83515ae498f46e9d959e7c07f733647fdf06 Mon Sep 17 00:00:00 2001
From: linwei <872216696@qq.com>
Date: Mon, 09 Feb 2026 10:00:24 +0800
Subject: [PATCH] init

---
 src/main/java/cn/net/communion/dbdatasync/App.java |  118 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 118 insertions(+), 0 deletions(-)

diff --git a/src/main/java/cn/net/communion/dbdatasync/App.java b/src/main/java/cn/net/communion/dbdatasync/App.java
new file mode 100644
index 0000000..c5d4a61
--- /dev/null
+++ b/src/main/java/cn/net/communion/dbdatasync/App.java
@@ -0,0 +1,118 @@
+package cn.net.communion.dbdatasync;
+
+import java.lang.reflect.Field;
+import java.sql.Connection;
+import java.sql.DriverManager;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.log4j.Level;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.Element;
+import org.dom4j.io.SAXReader;
+import org.quartz.CronTrigger;
+import org.quartz.JobDetail;
+import org.quartz.Scheduler;
+import org.quartz.SchedulerException;
+import org.quartz.SchedulerFactory;
+import org.quartz.impl.StdSchedulerFactory;
+
+import static org.quartz.CronScheduleBuilder.cronSchedule;
+import static org.quartz.TriggerBuilder.newTrigger;
+import static org.quartz.JobBuilder.newJob;
+import cn.net.communion.dbdatasync.dbhelper.Factory;
+import cn.net.communion.dbdatasync.entity.DbInfo;
+import cn.net.communion.dbdatasync.entity.JobInfo;
+/**
+ * 读取xml配置文件
+ * @author Administrator
+ *
+ */
+public class App 
+{
+	
+    private DbInfo srcDb;
+    private DbInfo destDb;
+    private List<JobInfo> jobList;
+    private String code;
+    private static Logger logger = Logger.getLogger(App.class);
+    
+    public void init(){
+    	
+        srcDb = new DbInfo();
+        destDb = new DbInfo();
+        jobList = new ArrayList<JobInfo>();
+        SAXReader reader = new SAXReader();
+        try {
+        	//读取xml的配置文件名,并获取其里面的节点
+            Element root = reader.read("jobs.xml").getRootElement();
+            Element src = root.element("source");
+            Element dest = root.element("dest");
+            Element jobs = root.element("jobs");
+            //遍历job即同步的表
+            for(Iterator it = jobs.elementIterator("job"); it.hasNext();){
+                jobList.add((JobInfo) elementInObject((Element)it.next(), new JobInfo()));
+            }
+            //
+            elementInObject(src, srcDb);
+            elementInObject(dest, destDb);
+            code = root.element("code").getTextTrim();
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+    
+    public Object elementInObject(Element e, Object o) throws IllegalArgumentException, IllegalAccessException{
+        Field[] fields = o.getClass().getDeclaredFields();
+        for(int index = 0; index < fields.length; index++){
+            fields[index].setAccessible(true);
+            fields[index].set(o, e.element(fields[index].getName()).getTextTrim());
+        }
+        return o;
+    }
+    
+    public void start(){
+        for(int index = 0; index < jobList.size(); index++){
+            JobInfo jobInfo = jobList.get(index);
+            String logTitle = "[" + code + "]" + jobInfo.getName() + " ";
+            try{
+                SchedulerFactory sf = new StdSchedulerFactory();
+                Scheduler sched = sf.getScheduler();
+                JobDetail job = newJob(DataTask.class).withIdentity("job-" + jobInfo.getName(), code).build();
+                job.getJobDataMap().put("srcDb", srcDb);
+                job.getJobDataMap().put("destDb", destDb);
+                job.getJobDataMap().put("jobInfo", jobInfo);
+                job.getJobDataMap().put("logTitle", logTitle);
+                logger.info(jobInfo.getCron());
+                CronTrigger trigger = newTrigger()
+                                .withIdentity("trigger-" +  jobInfo.getName(), code)
+                                .withSchedule(cronSchedule(jobInfo.getCron())).build();
+                sched.scheduleJob(job, trigger);
+                sched.start();
+            }catch(Exception e){
+                logger.info(logTitle + e.getMessage());
+                logger.info(logTitle + " run failed");
+                continue;
+            }
+        }
+    }
+    public static void main(String[] args )
+    {
+        // 设置默认编码为 UTF-8
+        System.setProperty("file.encoding", "UTF-8");
+        
+        App app = new App();
+        app.init();
+        app.start();
+        
+    }  
+   
+}

--
Gitblit v1.9.3