Blame view

src/com/fh/controller/fhdb/timingbackup/DbBackupQuartzJob.java 3.07 KB
ad5081d3   孙向锦   初始化项目
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
  package com.fh.controller.fhdb.timingbackup;
  
  import java.util.Date;
  import java.util.Map;
  
  import org.quartz.Job;
  import org.quartz.JobDataMap;
  import org.quartz.JobExecutionContext;
  import org.quartz.JobExecutionException;
  import org.springframework.web.context.ContextLoader;
  import org.springframework.web.context.WebApplicationContext;
  
  import com.fh.controller.base.BaseController;
  import com.fh.service.fhdb.brdb.impl.BRdbService;
  import com.fh.service.fhdb.timingbackup.impl.TimingBackUpService;
  import com.fh.util.DbFH;
  import com.fh.util.FileUtil;
  import com.fh.util.PageData;
  import com.fh.util.Tools;
  
  /** quartz 定时任务调度 数据库自动备份工作域
   * @author FH 3 13 59679 0 Q
   * @date 2016-4-10
   */
  public class DbBackupQuartzJob extends BaseController implements Job{
  
  	@Override
  	@SuppressWarnings("unchecked")
  	public void execute(JobExecutionContext context) throws JobExecutionException {
  		// TODO Auto-generated method stub
  		JobDataMap dataMap = context.getJobDetail().getJobDataMap();
  		Map<String,Object> parameter = (Map<String,Object>)dataMap.get("parameterList");	//获取参数
  		String TABLENAME = parameter.get("TABLENAME").toString();
  		TABLENAME = TABLENAME.equals("all")?"":TABLENAME;
  		
  		//普通类从spring容器中拿出service
  		WebApplicationContext webctx=ContextLoader.getCurrentWebApplicationContext();
  		BRdbService brdbService = (BRdbService)webctx.getBean("brdbService");
  		PageData pd = new PageData();
  		try {
  			String kackupPath = DbFH.getDbFH().backup(TABLENAME).toString();//调用数据库备份
  			if(Tools.notEmpty(kackupPath) && !"errer".equals(kackupPath)){
  				pd.put("FHDB_ID", this.get32UUID());						//主键
  				pd.put("USERNAME", "系统");									//操作用户
  				pd.put("BACKUP_TIME", Tools.date2Str(new Date()));			//备份时间
  				pd.put("TABLENAME", TABLENAME.equals("")?"整库":TABLENAME);	//表名or整库
  				pd.put("SQLPATH", kackupPath);								//存储位置
  				pd.put("DBSIZE", FileUtil.getFilesize(kackupPath));			//文件大小
  				pd.put("TYPE", TABLENAME.equals("")?1:2);					//1: 备份整库,2:备份某表
  				pd.put("BZ", "定时备份操作");								//备注
  				brdbService.save(pd);										//存入备份记录
  			}else{
  				shutdownJob(context,pd,parameter,webctx);
  			}
  		} catch (Exception e) {
  			logger.error(e.toString(), e);
  			try {
  				shutdownJob(context,pd,parameter,webctx);
  			} catch (Exception e1) {
  				e1.printStackTrace();
  			}
  		}
  	}
  	
  	/**把定时备份任务状态改为关闭
  	 * @param pd
  	 * @param parameter
  	 * @param webctx
  	 */
  	public void shutdownJob(JobExecutionContext context, PageData pd, Map<String,Object> parameter, WebApplicationContext webctx){
  		try {
  			context.getScheduler().shutdown();	//备份异常时关闭任务
  			TimingBackUpService timingbackupService = (TimingBackUpService)webctx.getBean("timingbackupService");
  			pd.put("STATUS", 2);				//改变定时运行状态为2,关闭
  			pd.put("TIMINGBACKUP_ID", parameter.get("TIMINGBACKUP_ID").toString()); //定时备份ID
  			timingbackupService.changeStatus(pd);
  		} catch (Exception e) {
  			e.printStackTrace();
  		}
  	}
  
  }