schedulemultiactioncontroller.java

来自「Java的框架」· Java 代码 · 共 514 行 · 第 1/2 页

JAVA
514
字号
package mcaps.core.scheduling.webapp.controller;

import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContextException;
import org.springframework.web.bind.RequestUtils;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.view.RedirectView;

import mcap.core.base.webapp.controller.BaseMultiActionController;
import mcap.core.logging.Log;
import mcap.core.scheduling.model.Job;
import mcap.core.scheduling.model.Schedule;
import mcap.core.scheduling.service.ScheduleException;
import mcap.core.scheduling.service.ScheduleManager;
import mcap.core.scheduling.util.NameConstants;

/**
 * Implementation of BaseMultiActionController that handle multiple 
 * request pertaining to job and schedule.
 * 
 * @author jov
 * @date Mar 6, 2006
 * @version 1.0.1.0
 */
public class ScheduleMultiActionController extends BaseMultiActionController implements InitializingBean {

	private ScheduleManager scheduleManager;

	/**
	 * Returns the scheduleManager.
	 * @return ScheduleManager
	 */
	public ScheduleManager getScheduleManager() {
		return scheduleManager;
	}

	/**
	 * Sets the scheduleManager.
	 * @param scheduleManager The scheduleManager to set.
	 */
	public void setScheduleManager(ScheduleManager scheduleManager) {
		this.scheduleManager = scheduleManager;
	}

	//===========================================================================================================
	// INITIALIZING BEAN IMPLEMENTATION
	//===========================================================================================================

	/* (non-Javadoc)
	 * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet()
	 * Invoked by a BeanFactory after it has set all bean properties supplied. This allows 
	 * the bean instance to perform initialization only possible when all bean properties 
	 * have been set and to throw an exception in the event of misconfiguration. 
	 */
	public void afterPropertiesSet() throws Exception {
		if (scheduleManager == null){
			Log.warn("Must set scheduleManager bean property on " + getClass());
			throw new ApplicationContextException(
					"Must set scheduleManager bean property on " + getClass());
		}
	}

	//===========================================================================================================
	// HANDLERS
	//===========================================================================================================

	/**
	 * Custom handler for displaying of list of jobs available
	 * for scheduling.
	 * 
	 * @param request current HTTP request
	 * @param response current HTTP response
	 * @return a ModelAndView to render the response
	 */
	public ModelAndView jobsHandler(HttpServletRequest request,
			HttpServletResponse response) throws ServletException {
		try {
			return new ModelAndView(NameConstants.JOBS_VIEW,
				NameConstants.JOB_LIST, scheduleManager.getAllJobs());
		} catch (ScheduleException e) {
			Log.warn("Fail to list jobs. " + e.getMessage());
			return getErrorView(NameConstants.LIST_JOBS_TITLE, 
					NameConstants.LIST_JOBS_HEADING,
					NameConstants.ERROR_LIST_JOBS_FAIL, "");
		}
	}

	/**
	 * Custom handler for read-only display of the detail of a job.
	 * 
	 * @param request current HTTP request
	 * @param response current HTTP response
	 * @return a ModelAndView to render the response
	 */
	public ModelAndView jobHandler(HttpServletRequest request,
			HttpServletResponse response) throws ServletException {
		Locale locale = request.getLocale();
		if (request.getParameter("jobName") == null) {
			saveError(request, getText(NameConstants.ERROR_VIEW_JOB_NULL_JOBNAME,locale));
		}
		if (request.getParameter("groupName") == null) {
			saveError(request, getText(NameConstants.ERROR_VIEW_JOB_NULL_GROUPNAME,locale));
		}
		Job job = null;
		String jobName = RequestUtils.getStringParameter(request, "jobName");
		String groupName = RequestUtils.getStringParameter(request, "groupName");
		try {
			job = scheduleManager.getJob(jobName, groupName);
			if (job == null) {
				saveError(request, getText(NameConstants.ERROR_VIEW_JOB_NULL,
						new Object[]{jobName,groupName},locale));
			}else{
				List scheduleList = new ArrayList();
				scheduleList = scheduleManager.getSchedulesFromJob(jobName,groupName);
				request.setAttribute(NameConstants.SCHEDULE_LIST, scheduleList);
				return new ModelAndView(NameConstants.JOB_VIEW, NameConstants.JOB_OBJ, job);
			}
			return new ModelAndView(NameConstants.JOBS_VIEW,
					NameConstants.JOB_LIST, scheduleManager.getAllJobs());
		} catch (ScheduleException e) {
			Log.warn("Fail to view job. " + e.getMessage());
			return getErrorView(NameConstants.VIEW_JOB_TITLE, NameConstants.VIEW_JOB_HEADING,
					NameConstants.ERROR_VIEW_JOB_FAIL,NameConstants.JOBS_VIEW_URL);
		}
	}

	/**
	 * Custom handler for job deletion
	 * 
	 * @param request current HTTP request
	 * @param response current HTTP response
	 * @return a ModelAndView to render the response
	 */
	public ModelAndView deleteJobHandler(HttpServletRequest request,
			HttpServletResponse response) throws ServletException {

		Locale locale = request.getLocale();
		if (request.getParameter("jobName") == null) {
			saveError(request, getText(NameConstants.ERROR_DELETE_JOB_NULL_JOBNAME,locale));
		}
		if (request.getParameter("groupName") == null) {
			saveError(request, getText(NameConstants.ERROR_DELETE_JOB_NULL_GROUPNAME,locale));
		}

		String jobName = RequestUtils.getStringParameter(request, "jobName");
		String groupName = RequestUtils.getStringParameter(request, "groupName");
		try {

			Job job = scheduleManager.getJob(jobName, groupName);
			if (job == null){
				saveError(request, getText(NameConstants.ERROR_DELETE_JOB_NULL,
						new Object[]{jobName,groupName},locale));
			}else{
				if (scheduleManager.removeJob(jobName, groupName)) {
					saveMessage(request, getText(NameConstants.SUCC_JOB_DELETE, 
						new Object[] {jobName, groupName }, locale));
				} else {
					saveMessage(request, getText(NameConstants.ERROR_DELETE_JOB_FAIL,
						new Object[] { jobName, groupName }, locale));
				}
			}
			return new ModelAndView (new RedirectView(NameConstants.JOBS_VIEW_URL));
		} catch (ScheduleException e) {
			Log.warn("Fail to delete job. " + e.getMessage());
			return getErrorView(NameConstants.DELETE_JOB_TITLE, NameConstants.DELETE_JOB_HEADING,
					NameConstants.ERROR_DELETE_JOB_FAIL,new Object[]{jobName,groupName},NameConstants.JOBS_VIEW_URL);
		}
	}

	/**
	 * Custom handler for job execution
	 * 
	 * @param request current HTTP request
	 * @param response current HTTP response
	 * @return a ModelAndView to render the response
	 */
	public ModelAndView executeJobHandler(HttpServletRequest request,
			HttpServletResponse response) throws ServletException {

		Locale locale = request.getLocale();

		if (request.getParameter("jobName") == null) {
			saveError(request, getText(NameConstants.ERROR_EXECUTE_JOB_NULL_JOBNAME,locale));
		}
		if (request.getParameter("groupName") == null) {
			saveError(request, getText(NameConstants.ERROR_EXECUTE_JOB_NULL_GROUPNAME,locale));
		}
		String jobName = RequestUtils.getStringParameter(request, "jobName");
		String groupName = RequestUtils.getStringParameter(request, "groupName");

		try {
			Job job = scheduleManager.getJob(jobName, groupName);
			if (job == null){
				saveError(request, getText(NameConstants.ERROR_EXECUTE_JOB_NULL,
						new Object[]{jobName,groupName},locale));
			}else{
				if (scheduleManager.executeJob(jobName, groupName)) {
					saveMessage(request, getText(NameConstants.SUCC_JOB_EXECUTE, 
							new Object[] { jobName, groupName }, locale));
				} else {
					saveMessage(request, getText(NameConstants.ERROR_EXECUTE_JOB_FAIL,
							new Object[] { jobName, groupName }, locale));
				}
			}
			
			return getRedirectView(request,jobName, groupName);			
			
//			String from = RequestUtils.getStringParameter(request, "from");
//			if (from.equalsIgnoreCase("joblist")){
//				return new ModelAndView(NameConstants.JOBS_VIEW,
//					NameConstants.JOB_LIST, scheduleManager.getAllJobs());
//			}else{
//				return new ModelAndView(NameConstants.SCHEDULES_VIEW,
//						NameConstants.SCHEDULE_LIST, scheduleManager.getAllSchedules());
//			}
		} catch (ScheduleException e) {
			Log.warn("Fail to execute job. " + e.getMessage());
			return getErrorView(NameConstants.EXECUTE_JOB_TITLE, 
					NameConstants.EXECUTE_JOB_HEADING,
					NameConstants.ERROR_EXECUTE_JOB_FAIL, 
					new Object[] { jobName, groupName },
					NameConstants.JOBS_VIEW_URL);
		}
	}
	
	/**
	 * Custom handler for job execution
	 * 
	 * @param request current HTTP request
	 * @param response current HTTP response
	 * @return a ModelAndView to render the response
	 */
	public ModelAndView executeScheduleHandler(HttpServletRequest request,
			HttpServletResponse response) throws ServletException {

		Locale locale = request.getLocale();

		if (request.getParameter("jobName") == null) {
			saveError(request, getText(NameConstants.ERROR_EXECUTE_SCHEDULE_NULL_JOBNAME,locale));
		}
		if (request.getParameter("jobGroupName") == null) {
			saveError(request, getText(NameConstants.ERROR_EXECUTE_SCHEDULE_NULL_JOBGROUPNAME,locale));
		}
		if (request.getParameter("scheduleName") == null) {
			saveError(request, getText(NameConstants.ERROR_EXECUTE_SCHEDULE_NULL_SCHEDULENAME,locale));
		}
		if (request.getParameter("groupName") == null) {
			saveError(request, getText(NameConstants.ERROR_EXECUTE_SCHEDULE_NULL_GROUPNAME,locale));
		}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?