CronScheduleLogService.java
8.15 KB
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
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
package com.sitech.ibnms.config.sync.service;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.apache.log4j.Logger;
import com.sitech.ibnms.config.sync.db.dao.CronScheduleLogDao;
import com.sitech.ibnms.util.RandomGUID;
import com.sitech.ismp.messageObject.ScheduleLog;
public class CronScheduleLogService {
private static Logger logger = Logger.getLogger("LOGGER");
private CronScheduleLogDao logDao = new CronScheduleLogDao();
public void insertCronScheduleLogs(ScheduleLog schLog) {
String logInfo = schLog.getLogInfo();
String[] logArr = null;
Map<String, String> params = null;
int seq = Integer.valueOf(schLog.getSeq());
String scrStatus = schLog.getScrStatus();
String outType = schLog.getType();
try {
if (0 == seq) {
params = makeLogScheduleParam(schLog, seq, 0);
logDao.insertTbLogSchedule(params);
logDao.insertTbLogScheduleDetail(params);
} else {
if(null != logInfo && !"".equals(logInfo.trim())){
logArr = logInfo.split("\t");
for (int i = 0; i < logArr.length; i++) {
int lineno = 1;
if ("err_out".equals(outType)) {
lineno = i + 10001;
} else {
lineno = i + 1;
}
ScheduleLog logObj = schLog;
String info = logArr[i];
logObj.setLogInfo(info);
params = makeLogScheduleParam(logObj, seq, lineno);
logDao.insertTbLogScheduleDetail(params);
if (null != info && !"".equals(info.trim()) && info.trim().startsWith("ATTACH_UPLOAD_FILE_STATUS")) {
String[] arr = info.trim().split("=");
String fileStatus = arr[1].trim();
params.put("IS_SEND", fileStatus);
logDao.updateCronAttachHostStatus(params);
}
}
}
//判断当前处理的日志是否为结束日志--endtime不为空
String endTime = schLog.getEndTime();
if (null != endTime && !"".equals(endTime.trim())) {
params = makeLogScheduleParam(schLog,1,1);
//更新调度的结束时间和脚本的执行状态
logDao.updateTbLogScheduleEndTimeAndScrStatus(params);
//只有同步调度才会更新调度状态
String syncType = schLog.getSyncType();
if ("2".equals(schLog.getOperateType()) && null != syncType && !"".equals(syncType.trim())) {
Map<String, Object> extInfo = schLog.getExtInfo();
String scheduleStatus = (String) extInfo.get("SCHEDULE_STATUS");
String scheduleOprType = (String) extInfo.get("SCHEDULE_OPERATE");
// 增加/修改调度
if ("1".equals(schLog.getSyncType().trim()) || "2".equals(schLog.getSyncType().trim())) {
String nextFireTime = schLog.getNextFireTime();
logger.info("Start Add/Update CronSchedule:Sch_ID["+schLog.getSchId()
+"],Agent_ID["+schLog.getAgentId()+"],SyncType["+schLog.getSyncType()+"],Next_Fire_time["+nextFireTime+"]");
params.put("SCHEDULE_STATUS",scheduleStatus);
params.put("NEXT_FIRE_TIME",nextFireTime);
//更新调度任务的状态
logDao.updateTbCCCrontabTaskHostStatus(params);
//增加或者修改调度任务需要更新调度任务的下次运行时间
logDao.updateTbLogScheduleNextFireTime(params);
//删除或者停止调度
} else if ("3".equals(syncType.trim())) {
switch (Integer.valueOf(scheduleOprType)){
case 1://删除调度 更新TB_CC_CRONTAB_TASK_HOST delflag
logger.info("Start delete CronSchedule:Sch_ID["+schLog.getSchId()+"],SyncType["
+schLog.getSyncType()+"],Agent_ID["+schLog.getAgentId()+"]");
String delFlag = "0";
if("0".equals(scheduleStatus)){
delFlag = "1";
}
params.put("DEL_FLAG",delFlag);
logDao.updateTbCCCrontabTaskHostDelFlag(params);
break;
case 2://停止调度 更新TB_CC_CRONTAB_TASK_HOST status
logger.info("Start stop CronSchedule:Sch_ID["+schLog.getSchId()+"],Agent_ID["+schLog.getAgentId()+"]");
// String status = "";
// if("1".equals(scheduleStatus)){
// status = "0";
// } else {
// status = "1";
// }
params.put("SCHEDULE_STATUS",scheduleStatus);
logDao.updateTbCCCrontabTaskHostStatus(params);
break;
default:
logger.info("SCHEDULE_OPERATE is not Exist");
}
}
}
//脚本同步更新调度任务的脚本同步状态
if("3".equals(schLog.getOperateType())){
String scriptSyncStatus = (String)schLog.getExtInfo().get("SCRIPT_SYNC_STATUS");
logger.info("Start update ScriptSyncStatus:Sch_ID["+schLog.getSchId()+"],Agent_ID["+schLog.getAgentId()+"],Sync["+scriptSyncStatus+"]");
params = new HashMap<String, String>();
params.put("SCRIPT_SYNC_STATUS",scriptSyncStatus);
params.put("SCH_ID",schLog.getSchId());
params.put("AGENT_ID",schLog.getAgentId());
logDao.updateTbCCCrontabTaskHostScriptSyncStatus(params);
}
}
}
} catch (Exception e) {
logger.error("[Cron Schedule] Exception while insertCronScheduleLogs", e);
}
}
private Map<String, String> makeLogScheduleParam(ScheduleLog log, int seq, int linenum) {
Map<String, String> map = new HashMap<String, String>();
Map<String,Object> extInfo = log.getExtInfo()==null? new HashMap<String, Object>():log.getExtInfo();
String scheduleFlag = (String) extInfo.get("SCHEDULE_FLAG");
String shExecTime = extInfo.get("SH_EXEC_TIME")==null?"":(String)extInfo.get("SH_EXEC_TIME");
String beginTime = log.getBeginTime();
if("Y".equals(scheduleFlag)){
beginTime = "";
}
map.put("SCH_ID", log.getSchId());
map.put("REQ_ID", log.getRequestId() == null ? RandomGUID.getRandomGUID() : log.getRequestId());
map.put("SEQ", "" + (seq + 1));
map.put("LINE_NUM", "" + linenum);
map.put("AGENT_ID", log.getAgentId());
map.put("NEXT_FIRE_TIME", log.getNextFireTime());
map.put("LOG_INFO", log.getLogInfo());
map.put("AGENT_ID", log.getAgentId());
map.put("OPR_TYPE", log.getOperateType());
map.put("TRIGGER_TYPE", log.getTrigerType());
map.put("TYPE", log.getType());
map.put("BEGIN_TIME", beginTime);
map.put("END_TIME", log.getEndTime());
map.put("SCR_STATUS", log.getScrStatus() == null ? "0" : log.getScrStatus());
map.put("LOG_TYPE",log.getLogType());
map.put("SH_EXEC_TIME",shExecTime);
return map;
}
}