advancedschedulewizardcontroller.java
来自「Java的框架」· Java 代码 · 共 784 行 · 第 1/3 页
JAVA
784 行
package mcaps.core.scheduling.webapp.controller;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.context.ApplicationContextException;
import org.springframework.validation.BindException;
import org.springframework.validation.Errors;
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.BaseWizardFormController;
import mcap.core.scheduling.model.AdvancedSchedule;
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.base.webapp.util.DateTimeUtil;
import mcap.core.docman.service.impl.DocManManagerImpl;
import mcap.core.scheduling.util.SchedulingUtil;
import mcap.core.scheduling.util.NameConstants;
import mcap.core.user.service.RoleManager;
/**
* @author jov
* @date Feb 27, 2006
* @version 1.0.1.0
*/
public class AdvancedScheduleWizardController extends BaseWizardFormController implements
InitializingBean {
private final static Log logger = LogFactory.getLog(DocManManagerImpl.class);
private ScheduleManager scheduleManager;
private RoleManager roleManager;
/**
* 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;
}
/**
* Returns the roleManager.
* @return RoleManager
*/
public RoleManager getRoleManager () {
return roleManager;
}
/**
* Sets the roleManager.
* @param roleManager The roleManager to set.
*/
public void setRoleManager (RoleManager roleManager) {
this.roleManager = roleManager;
}
// ===========================================================================================================
// 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){
logger.warn("Must set scheduleManager bean property on " + getClass ());
throw new ApplicationContextException (
"Must set scheduleManager bean property on " + getClass ());
}
if (roleManager == null){
logger.warn("Must set roleManager bean property on " + getClass ());
throw new ApplicationContextException (
"Must set roleManager bean property on " + getClass ());
}
}
/* (non-Javadoc)
* @see org.springframework.web.servlet.mvc.AbstractFormController#formBackingObject(javax.servlet.http.HttpServletRequest)
* Retrieve a backing object for the current form from the given request.
*/
protected Object formBackingObject (HttpServletRequest request)
throws Exception {
AdvancedSchedule advSchedule = null;
String jobName = request.getParameter("jobName");
String jobGrp = request.getParameter("jobGroupName");
if (StringUtils.equals (request.getParameter("method"), "edit")) {
advSchedule = (AdvancedSchedule)getSchedule (
RequestUtils.getStringParameter(request, "scheduleName"),
RequestUtils.getStringParameter(request, "groupName"),
jobName,jobGrp);
bindAdvScheduleProperties(advSchedule);
}
if (advSchedule == null){
advSchedule = new AdvancedSchedule ();
if (jobName != null) advSchedule.setJob(jobName);
if (jobGrp != null) advSchedule.setJobGroup(jobGrp);
}
setOtherRequestAttributes(request);
return advSchedule;
}
/* (non-Javadoc)
* @see org.springframework.web.servlet.mvc.BaseCommandController#onBind(javax.servlet.http.HttpServletRequest, java.lang.Object, org.springframework.validation.BindException)
* Callback for custom post-processing in terms of binding. Called on each submit, after standard binding but before validation.
*/
protected void onBind (HttpServletRequest request, Object command,
BindException errors) {
AdvancedSchedule advSchedule = (AdvancedSchedule) command;
String jobName = advSchedule.getJob();
String jobGrp = advSchedule.getJobGroup();
Job job = null;
//If next button was clicked, perform validation else
//if previous button was clicked, ignore validation
if (request.getParameter("_target0") == null){
//Validate for any existing advSchedule
try{
job = getJob(jobName,jobGrp);
if (job == null){
errors.reject( NameConstants.ERROR_JOB_NOTFOUND,
new Object[] {jobName,jobGrp}, "Non-existing job");
}
performGeneralValidation(request,jobName,jobGrp,advSchedule,errors);
}catch (Exception e){
errors.reject (NameConstants.ERROR_PROCESS_REQUEST,new Object[]{e.getMessage()},e.getMessage());
}
if (this.getCurrentPage (request) == 0) {
}else if (this.getCurrentPage (request) == 1) {
//In page 1, we will process
//(1) Start Time and End Time
// Note that date is retrived from the command object getStartTime and getEndTime
// according to the date format set in the initBinder(). Thus the time is combined
// from the mcaps.time tag using the request params: NameConstants.STARTTIME_HR,
// NameConstants.STARTTIME_MIN and NameConstants.STARTTIME_AMPM
//(2) Set the cron expression based on the recurrence pattern selected
bindScheduleTime(request,errors,advSchedule);
}else if (this.getCurrentPage (request) == 2) {
//Bind parameter
//Get the non empty parameters input and assign to advSchedule parameters
//Use the job param to loop thru every parameter
String[] paramNames = null;
try{
paramNames = SchedulingUtil.getParameterNames(job);
if ((paramNames != null) && (paramNames.length > 0)){
Map paramMap = new HashMap();
for (int i = 0; i < paramNames.length; i++) {
String key = paramNames[i];
String value = request.getParameter("_" + key);
if (StringUtils.isNotEmpty(value)){
paramMap.put(key,value);
}
}
advSchedule.setParameters(paramMap);
}
}catch (Exception e){
errors.reject (NameConstants.ERROR_PROCESS_REQUEST,
new Object[]{e.getMessage()},e.getMessage());
}
}
}
}
/* (non-Javadoc)
* @see org.springframework.web.servlet.mvc.AbstractWizardFormController#getTargetPage(javax.servlet.http.HttpServletRequest, java.lang.Object, org.springframework.validation.Errors, int)
*/
protected int getTargetPage (HttpServletRequest request, Object command,
Errors errors, int currentPage) {
try{
//Provide the page with the advSchedule list when navigating back to the
//first page so that the combo boxes can be populated
setOtherRequestAttributes(request);
logger.info("Current TargetPage : " + currentPage);
//If there is validation error on the current page, don navigate
if (errors.getErrorCount() > 0) return currentPage;
AdvancedSchedule advSchedule = (AdvancedSchedule) command;
currentPage = super.getTargetPage (request, command, errors, currentPage);
logger.info("New TargetPage : " + currentPage);
switch (currentPage) {
case 0:
logger.debug("getTargetPage(0) : Do Nothing.");
//Do Nothing
break;
case 1:
logger.debug("getTargetPage(1) : Get parameters from job class.");
//Get parameters name from job class, if key found in advSchedule parameters
//use the value of the advSchedule parameter, else use empty string
Job job = getJob(advSchedule.getJob(),advSchedule.getJobGroup());
if (job != null){
String[] paramNames = SchedulingUtil.getParameterNames(job);
Map paramMap = advSchedule.getParameters();
Map newMap = new HashMap();
if ((paramNames != null) && (paramNames.length > 0)){
for (int i = 0; i < paramNames.length; i++){
String key = paramNames[i];
if (!paramMap.containsKey(key)){
newMap.put(paramNames[i],"");
}else{
newMap.put(paramNames[i],paramMap.get(key));
}
}
}
if (newMap.size() > 0){
advSchedule.setParameters(newMap);
}
}
break;
case 2:
logger.debug("getTargetPage(2) : Do Nothing.");
//Do Nothing
break;
default:
}
}catch (Exception e){
logger.warn("Error in getTargetPage(" + currentPage + ").");
errors.reject (NameConstants.ERROR_PROCESS_REQUEST,
new Object[]{e.getMessage()},e.getMessage());
return currentPage;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?