package com.fpcms.admin.controller;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;
import com.github.rapid.common.web.scope.Flash;
import com.fpcms.common.util.ApplicationContextUtil;
import com.fpcms.scheduled.job.BaseCronJob;
/**
* 用于手工调定时任务
*
* @author badqiu
*
*/
@Controller
@RequestMapping("/admin/cron")
public class CronController {
@Autowired(required=true)
private ServletContext servletContext;
@RequestMapping
public String index(ModelMap model,HttpServletRequest request){
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
List<BaseCronJob> cronJobs = ApplicationContextUtil.getBeans(wac, BaseCronJob.class);
model.put("cronJobs", cronJobs);
return "/admin/cron/index";
}
@RequestMapping
public String exec(ModelMap model,String jobName){
WebApplicationContext wac = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext);
List<BaseCronJob> cronJobs = ApplicationContextUtil.getBeans(wac, BaseCronJob.class);
for(BaseCronJob job : cronJobs) {
if(job.getClass().getName().equals(jobName)) {
job.execute();
Flash.current().success("执行任务:"+jobName+" 成功,任务描述:"+job.getJobRemark());
return "redirect:/admin/cron/index.do";
}
}
Flash.current().error("没有找到任务:"+jobName);
return "redirect:/admin/cron/index.do";
}
}