quartz中Cron表示式与model互相转换


/**
 * BATCH执行周期枚举
 * 
 * 
 */
public enum ExecuteCycle {

	/**  每天  */
	EACH_DAY_ID("01"),
	/**  每周  */
	EACH_WEEK_ID("02"),
	/**  每月  */
	EACH_MONTH_ID("03"),
	/**  每年  */
	EACH_YEAR_ID("04");
    
    private final String value;

    ExecuteCycle(String value) {
        this.value = value;
    }
    
    public String getValue() {
        return value;
    }
}

/**
 * BATCH末日区分枚举
 * 
 * 
 */
public enum LastDayFlg {

	/**  最后一天  */
	LAST_DAY("01"),
	/**  指定时间  */
	SPECIFY_DAY("02");
    
    private final String value;

    LastDayFlg(String value) {
        this.value = value;
    }
    
    public String getValue() {
        return value;
    }
}

**
 * batch执行时间设定model
 * 
 * 
 */
public class BatchTimeSet {
	
	// 执行周期
	private String executeCycle;
	// 执行周期开始年月日
	private String executeStartYmd;
	// 最后一天执行
	private String lastDay;
	// 执行月
	private String executeMonth;
	// 执行日
	private String executeDay;
	// 执行时
	private String executeHour;
	// 执行分
	private String executeMinute;
	// 执行秒
	private String executeSecond;
	// 执行星期
	private String executeWeek;
··········
--------------

	/**
	 * 将model转换为Cron表示式
	 */
	private String transBeanToExpre(BatchTimeSet batchTimeSetBean) {

		String cronExpression = "";
		
		// 秒
		if (batchTimeSetBean.getExecuteSecond() != null && !batchTimeSetBean.getExecuteSecond().isEmpty()) {
			cronExpression = cronExpression.concat(batchTimeSetBean.getExecuteSecond()).concat(" ");
		} else {
			cronExpression = cronExpression.concat("* ");
		}
		// 分钟
		if (batchTimeSetBean.getExecuteMinute() != null && !batchTimeSetBean.getExecuteMinute().isEmpty()) {
			cronExpression = cronExpression.concat(batchTimeSetBean.getExecuteMinute()).concat(" ");
		} else {
			cronExpression = cronExpression.concat("* ");
		}
		// 小时
		if (batchTimeSetBean.getExecuteHour() != null && !batchTimeSetBean.getExecuteHour().isEmpty()) {
			cronExpression = cronExpression.concat(batchTimeSetBean.getExecuteHour()).concat(" ");
		} else {
			cronExpression = cronExpression.concat("* ");
		}
		// 每天
		if (batchTimeSetBean.getExecuteCycle().equals(ExecuteCycle.EACH_DAY_ID.getValue())) {
			// 日期
			cronExpression = cronExpression.concat("? ");
			// 月份
			cronExpression = cronExpression.concat("* ");
			// 星期
			cronExpression = cronExpression.concat("*");
		} else if (batchTimeSetBean.getExecuteCycle().equals(ExecuteCycle.EACH_WEEK_ID.getValue())) {
			// 每周
			// 日期
			cronExpression = cronExpression.concat("? ");
			// 月份
			cronExpression = cronExpression.concat("* ");
			// 星期
			cronExpression = cronExpression.concat(batchTimeSetBean.getExecuteWeek());
		} else if (batchTimeSetBean.getExecuteCycle().equals(ExecuteCycle.EACH_MONTH_ID.getValue())) {
			// 每月
			// 最后一天
			if (batchTimeSetBean.getLastDay().equals(LastDayFlg.LAST_DAY.getValue())) {
				// 日期
				cronExpression = cronExpression.concat("L ");
				// 月份
				cronExpression = cronExpression.concat("* ");
				// 星期
				cronExpression = cronExpression.concat("?");
			} else {
				// 指定时间
				// 日期
				cronExpression = cronExpression.concat(batchTimeSetBean.getExecuteDay()).concat(" ");
				// 月份
				cronExpression = cronExpression.concat("* ");
				// 星期
				cronExpression = cronExpression.concat("?");
			}
		} else if (batchTimeSetBean.getExecuteCycle().equals(ExecuteCycle.EACH_YEAR_ID.getValue())) {
			// 每年
			// 最后一天
			if (batchTimeSetBean.getLastDay().equals(LastDayFlg.LAST_DAY.getValue())) {
				// 日期
				cronExpression = cronExpression.concat("L ");
				// 月份
				cronExpression = cronExpression.concat("12 ");
				// 星期
				cronExpression = cronExpression.concat("?");
			} else {
				// 指定时间
				// 日期
				cronExpression = cronExpression.concat(batchTimeSetBean.getExecuteDay()).concat(" ");
				// 月份
				cronExpression = cronExpression.concat(batchTimeSetBean.getExecuteMonth()).concat(" ");
				// 星期
				cronExpression = cronExpression.concat("?");
			}
		}
		
		return cronExpression;
	}

	/**
	 * 将Cron表示式转换为model <br/>
	 * Cron表示式规则:秒 分钟 小时 日期 月份 星期 年(可选) <br/>
	 * 中间用空格分隔
	 */
	private void transExpreToBean(String cronExpression, BatchTimeSet batchTimeSetBean) {

		if (cronExpression != null && !cronExpression.isEmpty()) {
			String[] cronStrArr = cronExpression.split(" ");
			// TODO 此处未对年份进行处理,默认年份未设定,画面也没有年份的具体选择
			// 秒
			if (!cronStrArr[0].equals("*")) {
				batchTimeSetBean.setExecuteSecond(cronStrArr[0]);
			}
			// 分钟
			if (!cronStrArr[1].equals("*")) {
				batchTimeSetBean.setExecuteMinute(cronStrArr[1]);
			}
			// 小时
			if (!cronStrArr[2].equals("*")) {
				batchTimeSetBean.setExecuteHour(cronStrArr[2]);
			}
			// 每天
			batchTimeSetBean.setExecuteCycle(ExecuteCycle.EACH_DAY_ID.getValue());
			// 日期
			if (!cronStrArr[3].equals("*") && !cronStrArr[3].equals("?")) {
				if (cronStrArr[3].equals("L")) {
					batchTimeSetBean.setLastDay(LastDayFlg.LAST_DAY.getValue());
				} else {
					batchTimeSetBean.setLastDay(LastDayFlg.SPECIFY_DAY.getValue());
					batchTimeSetBean.setExecuteDay(cronStrArr[3]);
				}
				// 每月
				batchTimeSetBean.setExecuteCycle(ExecuteCycle.EACH_MONTH_ID.getValue());
			}
			// 月份
			if (!cronStrArr[4].equals("*")) {
				batchTimeSetBean.setExecuteMonth(cronStrArr[4]);
				// 每年
				batchTimeSetBean.setExecuteCycle(ExecuteCycle.EACH_YEAR_ID.getValue());
			}
			// 星期
			if (!cronStrArr[5].equals("*") && !cronStrArr[5].equals("?")) {
				batchTimeSetBean.setExecuteWeek(cronStrArr[5]);
				// 每周
				batchTimeSetBean.setExecuteCycle(ExecuteCycle.EACH_WEEK_ID.getValue());
			}
		}
	}



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值