advancedschedulewizardcontroller.java

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

JAVA
784
字号
			job = this.getScheduleManager ().getJob(jobName,jobGrp);
		}catch (Exception e){
			//Do nothing; DataRetrievalFailureException is thrown when getJob returns null
		}
		return job;
	}
	
	/**
	 * Get the advSchedule object. This method enable the getSchedule by handling the
	 * DataRetrievalFailureException exception.
	 * @param scheduleName The name of the advSchedule
	 * @param scheduleGrp The group name of the advSchedule
	 * @param jobName The job name
	 * @param jobGrp The job group name
	 * @return The advanced advSchedule object
	 */
	private AdvancedSchedule getSchedule(String scheduleName, String scheduleGrp, String jobName, String jobGrp){
		AdvancedSchedule advSchedule = null;
		try{
		//	advSchedule = (AdvancedSchedule)this.getScheduleManager ().getSchedule(scheduleName, scheduleGrp, jobName,jobGrp);
			advSchedule = (AdvancedSchedule)this.getScheduleManager ().getSchedule(scheduleName, scheduleGrp);
		}catch (Exception e){
			//Do nothing; DataRetrievalFailureException is thrown when getJob returns null
		}
		return advSchedule;
	}	
	
	/**
	 * Set the cron expression value based using the request object to retrieve the 
	 * time part of the cron expression and also the pattern and pattern choice to set the
	 * day of month, month and day of week of the cron expression. 
	 * @param request The HTTP request object
	 * @param errors The binding exception object
	 * @param advSchedule The advance schedule object
	 */
	private void setCronTimeExpression(HttpServletRequest request, BindException errors, 
			AdvancedSchedule advSchedule){
		
		logger.debug("Set CronTimeExpression");
		
		int atTime_hr = -1, atTime_min = -1, atTime_ampm = -1;
		
		atTime_ampm = RequestUtils.getIntParameter(request,
				NameConstants.ATTIME + mcap.core.base.util.NameConstants.TIMETAG_AMPM,-1);
		atTime_min = RequestUtils.getIntParameter(request,
				NameConstants.ATTIME + mcap.core.base.util.NameConstants.TIMETAG_MIN,0);
		atTime_hr = DateTimeUtil.to24HourSystem(
				RequestUtils.getIntParameter(request,
				NameConstants.ATTIME + mcap.core.base.util.NameConstants.TIMETAG_HR,12),
				atTime_ampm);
				
		logger.debug("atTime_hr : " + atTime_hr);
		logger.debug("atTime_min : " + atTime_min);
		logger.debug("atTime_ampm : " + atTime_ampm);

		advSchedule.setHourValue(Integer.toString(atTime_hr));
		advSchedule.setMinuteValue(Integer.toString(atTime_min));
		advSchedule.setSecValue("0");
		
		logger.debug("Pattern : " + advSchedule.getPattern());

		//Bind cron expression
		switch (advSchedule.getPattern()){
			case (AdvancedSchedule.DAILY):
				this.setDailyTrigger(request,errors,advSchedule);
				break;
			case (AdvancedSchedule.MONTHLY):
				this.setMonthlyTrigger(request,errors,advSchedule);
				break;
			case (AdvancedSchedule.YEARLY):
				this.setYearlyTrigger(request,errors,advSchedule);
				break;
		}
	}
	
	/**
	 * Set the daily trigger cron expression
	 * @param request The HTTP request object
	 * @param errors The binding exception object
	 * @param advSchedule The advance schedule object
	 */
	private void setDailyTrigger(HttpServletRequest request, BindException errors, 
			AdvancedSchedule advSchedule){
		logger.debug("Set Daily Trigger");
			
		StringBuffer sb = new StringBuffer();	
		switch (advSchedule.getPatternChoice()){
			case AdvancedSchedule.EVERYDAY:
				logger.debug("Everyday Trigger");
				sb.append(advSchedule.getSecValue()).append(" ")
				.append(advSchedule.getMinuteValue()).append(" ")
				.append(advSchedule.getHourValue()).append(" ")
				.append("* * ?");
				advSchedule.setCronExpression(sb.toString());
				break;
			case AdvancedSchedule.WEEKDAY:
				logger.debug("Weekday Trigger");
				sb.append(advSchedule.getSecValue()).append(" ")
				.append(advSchedule.getMinuteValue()).append(" ")
				.append(advSchedule.getHourValue()).append(" ")
				.append("? *").append(" ")
				.append(AdvancedSchedule.WEEKDAY_VALUE);
				advSchedule.setCronExpression(sb.toString());
				break;
			case AdvancedSchedule.WEEKEND:
				logger.debug("Weekly Trigger");
				sb.append(advSchedule.getSecValue()).append(" ")
				.append(advSchedule.getMinuteValue()).append(" ")
				.append(advSchedule.getHourValue()).append(" ")
				.append("? *").append(" ")
				.append(AdvancedSchedule.WEEKEND_VALUE);
				advSchedule.setCronExpression(sb.toString());
				break;			
			case AdvancedSchedule.CUSTOMDAY:
				logger.debug("Custom Daily Trigger");
				String customDayOfWeek = "*";
				StringBuffer s = new StringBuffer();
				for (int i = 1; i <=7; i++){
					String temp = RequestUtils.getStringParameter(request,"dayOfWeek"+i,"");
					if (StringUtils.isNotBlank(temp)){
						s.append(temp).append(",");
					}
				}
				if (s.length() > 0){
					customDayOfWeek = s.substring(0,s.length()-1);
					logger.debug("Custom Day Of Week : " + customDayOfWeek);
				}
				RequestUtils.getStringParameter(request,"","*");
				sb.append(advSchedule.getSecValue()).append(" ")
				.append(advSchedule.getMinuteValue()).append(" ")
				.append(advSchedule.getHourValue()).append(" ")
				.append("? *").append(" ")
				.append(customDayOfWeek);
				advSchedule.setCronExpression(sb.toString());
			default:
		}
		logger.debug("Cron Expression : " + advSchedule.getCronExpression());
	}

	/**
	 * Set the montly trigger cron expression
	 * @param request The HTTP request object
	 * @param errors The binding exception object
	 * @param advSchedule The advance schedule object
	 */
	private void setMonthlyTrigger(HttpServletRequest request, BindException errors, 
			AdvancedSchedule advSchedule){
		logger.debug("Set Monthly Trigger");
		StringBuffer sb = new StringBuffer();	
		switch (advSchedule.getPatternChoice()){
			case AdvancedSchedule.MONTHOPT1:
				logger.debug("MONTHOPT1");
				String dayOfMonth = RequestUtils.getStringParameter(request,"dayOfMonth","1");				
				sb.append(advSchedule.getSecValue()).append(" ")
				.append(advSchedule.getMinuteValue()).append(" ")
				.append(advSchedule.getHourValue()).append(" ")
				.append(dayOfMonth).append(" ")
				.append("* ?");
				advSchedule.setCronExpression(sb.toString());
				break;
			case AdvancedSchedule.MONTHOPT2:				
				logger.debug("MONTHOPT2");
				StringBuffer s = new StringBuffer();
				String nthDay = RequestUtils.getStringParameter(request,"nthDay","1");	
				String dayOfWeek = null;				
				s.append(RequestUtils.getStringParameter(request,"dayOfWeek","1"));
				if (!nthDay.equalsIgnoreCase("L")){
					s.append("#");
				}
				dayOfWeek = s.append(nthDay).toString();
								
				sb.append(advSchedule.getSecValue()).append(" ")
				.append(advSchedule.getMinuteValue()).append(" ")
				.append(advSchedule.getHourValue()).append(" ")
				.append("? *").append(" ")
				.append(dayOfWeek);
				advSchedule.setCronExpression(sb.toString());
				break;
			default:
		}
		logger.debug("Cron Expression : " + advSchedule.getCronExpression());
	}

	/**
	 * Set the yearly trigger cron expression
	 * @param request The HTTP request object
	 * @param errors The binding exception object
	 * @param advSchedule The advance schedule object
	 */
	private void setYearlyTrigger(HttpServletRequest request, BindException errors, 
			AdvancedSchedule advSchedule){
		logger.debug("Set Yearly Trigger");
		StringBuffer sb = new StringBuffer();	
		switch (advSchedule.getPatternChoice()){
			case AdvancedSchedule.YEAROPT1:
				logger.debug("YEAROPT1");
				String dayOfMonth = RequestUtils.getStringParameter(request,"dayOfMonth","1");				
				String month1 = RequestUtils.getStringParameter(request,"monthOpt1","*");				
				sb.append(advSchedule.getSecValue()).append(" ")
				.append(advSchedule.getMinuteValue()).append(" ")
				.append(advSchedule.getHourValue()).append(" ")
				.append(dayOfMonth).append(" ")
				.append(month1).append(" ")
				.append("?");
				advSchedule.setCronExpression(sb.toString());
				break;
			case AdvancedSchedule.YEAROPT2:				
				logger.debug("YEAROPT2");
				StringBuffer s = new StringBuffer();
				String nthDay = RequestUtils.getStringParameter(request,"nthDay","1");	
				String dayOfWeek = null;				
				s.append(RequestUtils.getStringParameter(request,"dayOfWeek","1"));
				if (!nthDay.equalsIgnoreCase("L")){
					s.append("#");
				}
				dayOfWeek = s.append(nthDay).toString();
				
				String month2 = RequestUtils.getStringParameter(request,"monthOpt2","*");				
				
				sb.append(advSchedule.getSecValue()).append(" ")
				.append(advSchedule.getMinuteValue()).append(" ")
				.append(advSchedule.getHourValue()).append(" ")
				.append("?").append(" ")
				.append(month2).append(" ")
				.append(dayOfWeek);
				advSchedule.setCronExpression(sb.toString());
				break;
			default:
		}
		logger.debug("Cron Expression : " + advSchedule.getCronExpression());
	}
	
	/**
	 * Set the at time request attribute.
	 * @param request The HTTP request object
	 * @param command The command object
	 */
	private void setAtTimeRequestAttributes(HttpServletRequest request, Object command){
		AdvancedSchedule advSchedule = (AdvancedSchedule) command;
		Calendar calendar = new GregorianCalendar();
		calendar.set(Calendar.SECOND,Integer.parseInt(advSchedule.getSecValue()));
		calendar.set(Calendar.MINUTE,Integer.parseInt(advSchedule.getMinuteValue()));
		calendar.set(Calendar.HOUR,Integer.parseInt(advSchedule.getHourValue()));
		Date atTime = calendar.getTime();
		request.setAttribute(NameConstants.AT_TIME,atTime);
	}
	/**
	 * Set other request attributes.
	 * @param request The HTTP request object
	 * @throws ScheduleException 
	 */
	private void setOtherRequestAttributes(HttpServletRequest request) throws ScheduleException{
		List jobList = this.getScheduleManager().getAllJobs();
		request.setAttribute(NameConstants.JOB_LIST,jobList);
		request.setAttribute(NameConstants.JOB_GRP_LIST,this.getScheduleManager().getAllJobGroups());
		request.setAttribute(NameConstants.SCHEDULE_GRP_LIST,this.getScheduleManager().getAllScheduleGroups());
	}

	
}

⌨️ 快捷键说明

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