您的位置:首页 > 其它

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

2015-12-04 11:37 513 查看
/**
* 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());
}
}
}




内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: