/** * Copyright 2018-2118 the original author or authors. *
* Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at *
* http://www.apache.org/licenses/LICENSE-2.0 *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.vci.dbsync;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import com.vci.corba.common.VCIError;
import com.vci.dbsync.entity.DBInfo;
import com.vci.dbsync.entity.JobInfo;
import com.vci.dbsync.entity.JobItem;
import com.vci.dbsync.entity.VMInfo;
import com.vci.dbsync.filesync.FileSync;
import com.vci.dbsync.log.SyncLog;
import com.vci.dbsync.DBSyncFactory;
import com.vci.dbsync.DBSync;
//import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;
/**
* @author liuyazhuang
* @date 2018/9/11 10:30
* @description 同步数据库任务的具体实现
* @version 1.0.0
*/
public class JobTask implements Job {
//private Logger logger = Logger.getLogger(JobTask.class);
/**
* 执行同步数据库任务
*
*/
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
JobDataMap data = context.getJobDetail().getJobDataMap();
JobInfo jobInfo = (JobInfo) data.get("jobInfo");
SyncLog.logger.info("开始任务【" + jobInfo.getName() + "】 调度: " + new Date());
Connection inConn = null;
Connection outConn = null;
DBInfo srcDb = (DBInfo) data.get("srcDb");
DBInfo destDb = (DBInfo) data.get("destDb");
VMInfo srcVM = (VMInfo) data.get("srcVM");
VMInfo destVM = (VMInfo) data.get("destVM");
String logTitle = (String) data.get("logTitle");
try {
inConn = createConnection(srcDb);
outConn = createConnection(destDb);
if (inConn == null) {
SyncLog.logger.info("请检查源数据连接!");
return;
} else if (outConn == null) {
SyncLog.logger.info("请检查目标数据连接!");
return;
}
DBSync dbHelper = DBSyncFactory.create(destDb.getDbtype());
if (dbHelper == null) {
SyncLog.logger.info("不支持的数据库类型!");
return;
}
JobItem[] items = jobInfo.Items();
//ArrayList