use of org.akaza.openclinica.web.table.scheduledjobs.ScheduledJobs in project OpenClinica by OpenClinica.
the class ScheduledJobController method listScheduledJobs.
@RequestMapping("/listCurrentScheduledJobs")
public ModelMap listScheduledJobs(HttpServletRequest request, HttpServletResponse response) throws SchedulerException {
Locale locale = LocaleResolver.getLocale(request);
ResourceBundleProvider.updateLocale(locale);
ModelMap gridMap = new ModelMap();
String[] triggerNames;
boolean showMoreLink = false;
if (request.getParameter("showMoreLink") != null) {
showMoreLink = Boolean.parseBoolean(request.getParameter("showMoreLink").toString());
} else {
showMoreLink = true;
}
request.setAttribute("showMoreLink", showMoreLink + "");
// request.setAttribute("studySubjectId",studySubjectId);
/*SubjectIdSDVFactory tableFactory = new SubjectIdSDVFactory();
* @RequestParam("studySubjectId") int studySubjectId,*/
request.setAttribute("imagePathPrefix", "../");
ArrayList<String> pageMessages = (ArrayList<String>) request.getAttribute("pageMessages");
if (pageMessages == null) {
pageMessages = new ArrayList<String>();
}
request.setAttribute("pageMessages", pageMessages);
List<JobExecutionContext> listCurrentJobs = new ArrayList<JobExecutionContext>();
listCurrentJobs = scheduler.getCurrentlyExecutingJobs();
Iterator<JobExecutionContext> itCurrentJobs = listCurrentJobs.iterator();
List<String> currentJobList = new ArrayList<String>();
while (itCurrentJobs.hasNext()) {
JobExecutionContext temp = itCurrentJobs.next();
currentJobList.add(temp.getTrigger().getJobName() + temp.getTrigger().getGroup());
}
String[] triggerGroups = scheduler.getTriggerGroupNames();
List<SimpleTrigger> simpleTriggers = new ArrayList<SimpleTrigger>();
int index1 = 0;
for (String triggerGroup : triggerGroups) {
logger.debug("Group: " + triggerGroup + " contains the following triggers");
triggerNames = scheduler.getTriggerNames(triggerGroup);
for (String triggerName : triggerNames) {
int state = scheduler.getTriggerState(triggerName, triggerGroup);
logger.debug("- " + triggerName);
if (state != Trigger.STATE_PAUSED) {
simpleTriggers.add(index1, (SimpleTrigger) scheduler.getTrigger(triggerName, triggerGroup));
index1++;
}
}
}
List<ScheduledJobs> jobsScheduled = new ArrayList<ScheduledJobs>();
int index = 0;
for (SimpleTrigger st : simpleTriggers) {
boolean isExecuting = currentJobList.contains(st.getJobName() + st.getGroup());
ScheduledJobs jobs = new ScheduledJobs();
ExtractPropertyBean epBean = null;
if (st.getJobDataMap() != null) {
epBean = (ExtractPropertyBean) st.getJobDataMap().get(EP_BEAN);
}
if (epBean != null) {
StringBuilder checkbox = new StringBuilder();
checkbox.append("<input style='margin-right: 5px' type='checkbox'/>");
StringBuilder actions = new StringBuilder("<table><tr><td>");
if (isExecuting) {
actions.append(" ");
} else {
String contextPath = request.getContextPath();
StringBuilder jsCodeString = new StringBuilder("this.form.method='GET'; this.form.action='").append(contextPath).append("/pages/cancelScheduledJob").append("';").append("this.form.theJobName.value='").append(st.getJobName()).append("';").append("this.form.theJobGroupName.value='").append(st.getJobGroup()).append("';").append("this.form.theTriggerName.value='").append(st.getName()).append("';").append("this.form.theTriggerGroupName.value='").append(st.getGroup()).append("';").append("this.form.submit();");
actions.append("<td><input type=\"submit\" class=\"button\" value=\"Cancel Job\" ").append("name=\"cancelJob\" onclick=\"").append(jsCodeString.toString()).append("\" />");
}
actions.append("</td></tr></table>");
jobs.setCheckbox(checkbox.toString());
jobs.setDatasetId(epBean.getDatasetName());
String fireTime = st.getStartTime() != null ? longFormat(locale).format(st.getStartTime()) : "";
jobs.setFireTime(fireTime);
if (st.getNextFireTime() != null) {
jobs.setScheduledFireTime(longFormat(locale).format(st.getNextFireTime()));
}
jobs.setExportFileName(epBean.getExportFileName()[0]);
jobs.setAction(actions.toString());
jobs.setJobStatus(isExecuting ? "Currently Executing" : "Scheduled");
jobsScheduled.add(index, jobs);
index++;
}
}
logger.debug("totalRows" + index);
request.setAttribute("totalJobs", index);
request.setAttribute("jobs", jobsScheduled);
TableFacade facade = scheduledJobTableFactory.createTable(request, response);
String sdvMatrix = facade.render();
gridMap.addAttribute(SCHEDULED_TABLE_ATTRIBUTE, sdvMatrix);
return gridMap;
}
Aggregations