package com.adm.server.service.impl;
import javax.annotation.Resource;
import javax.jws.WebService;
import org.apache.log4j.Logger;
import com.adm.cognosexportengine.log.service.ILogManagerService;
import com.adm.cognosexportengine.pojo.TLog;
import com.adm.cognosexportengine.pojo.TTypeDefine;
import com.adm.cognosexportengine.typedefine.service.ITypeDefineManagerService;
import com.adm.server.service.IEngine;
import com.adm.utils.DateUtils;
@WebService(endpointInterface = "com.adm.server.service.IEngine")
public class EngineImpl implements IEngine {
private static final Logger log = Logger.getLogger(EngineImpl.class);
// 报表引擎
@Resource(name = "webServiceEngine")
private com.adm.cognosexportengine.engine.IEngine engine;
@Resource(name = "typeDefineManagerService")
private ITypeDefineManagerService typeDefineManagerService;
@Resource(name = "logManagerService")
private ILogManagerService logManagerService;
private TTypeDefine typeDefine;
private TLog tLog;
private String startTime;
// 1:运行成功 0:运行失败
private String status;
private String message;
/**
*
* 功能描述:[webService启动引擎]
*
*
* @return
* @throws Exception
* @author:Brook
* @update:[日期YYYY-MM-DD][Brook][捕获抛出异常]
*/
@SuppressWarnings("unchecked")
public String run(String taskId) {
setStartTime(null);
if (taskId == null || "".equals(taskId)) {
// 判断 生成xml 串返回
setStatus("0");
setMessage("taskId不允许为空");
log.error("taskId不允许为空");
return new EngineImpl().creatResultUtil(taskId,"", status, startTime,
DateUtils.getNow(), message);
}
typeDefine = (TTypeDefine) typeDefineManagerService.findByID(
TTypeDefine.class, Long.parseLong(taskId));
// 更新最近开始执行时间
typeDefine.setLastTimeStartTime(DateUtils.getNow());
typeDefineManagerService.update(typeDefine);
tLog = new TLog(taskId, typeDefine.getName(), "定时调度", startTime,
"", "", "");
logManagerService.save(tLog);
try {
System.out.println("EngineImpl.run()-----------hashcode"+this.hashCode());
engine.execute(taskId);
setStatus("1");
setMessage("运行成功");
typeDefine.setLastStatus("执行完成");
tLog.setMessageId("正常执行");
} catch (Exception e) {
String messageInfo = e.getMessage();
setStatus("0");
setMessage("运行失败\n" + messageInfo);
typeDefine.setLastStatus("异常结束");
tLog.setMessageId("执行失败");
if (messageInfo.length() > 3000) {
messageInfo = messageInfo.substring(0, 3000);
}
typeDefine.setErrMsg(messageInfo);
tLog.setMessageInfo(messageInfo);
}
// 更新最近结束执行时间
typeDefine.setLastTimeEndTime(DateUtils.getNow());
tLog.setEndTime(DateUtils.getNow(DateUtils.FORMAT_LONG));
typeDefineManagerService.update(typeDefine);
logManagerService.update(tLog);
return new EngineImpl().creatResultUtil(taskId, typeDefine.getName(),status, startTime,
DateUtils.getNow(), message);
}
public String creatResultUtil(String taskId, String taskNm,String status,
String starttime, String endtime, String message) {
StringBuffer resultMessage = new StringBuffer();
resultMessage.append("\n");
resultMessage.append("" + taskId + "\n");
resultMessage.append(""+taskNm+"\n");
resultMessage.append("" + status + "\n");
resultMessage.append("" + starttime + "\n");
resultMessage.append("" + endtime + "\n");
resultMessage.append("" + message + "\n");
resultMessage.append("");
return resultMessage.toString();
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
if (!"".equals(startTime) || startTime == null) {
this.startTime = DateUtils.getNow();
} else {
this.startTime = startTime;
}
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}