// Path: src/main/java/org/pinae/rafiki/trigger/AbstractTrigger.java
// public abstract class AbstractTrigger implements Trigger {
// 
// 	/*
// 	 * 触发器名称
// 	 */
// 	private String name;
// 
// 	/*
// 	 * 触发器开始时间
// 	 */
// 	private Date startTime = new Date();
// 	
// 	/*
// 	 * 触发器结束时间
// 	 */
// 	private Date endTime = null; 
// 	
// 	/*
// 	 * 是否循环执行
// 	 */
// 	private boolean repeat = true;
// 	
// 	/*
// 	 * 触发器循环周期 (ms)
// 	 */
// 	private long repeatInterval = 1000;
// 	
// 	/*
// 	 * 触发器循环次数
// 	 */
// 	private int repeatCount = 0;
// 	
// 	/*
// 	 * 触发器开始延迟(ms)
// 	 */
// 	private long startDelayTime = 0;
// 
// 	/*
// 	 * 触发器命中次数
// 	 */
// 	private long executeCount = 0;
// 	
// 	/**
// 	 * 构造函数, 构建默认触发器名称
// 	 */
// 	public AbstractTrigger() {
// 		name = this.toString();
// 	}
// 	
// 	/**
// 	 * 构造函数
// 	 * 
// 	 * @param name 触发器名称
// 	 */
// 	public AbstractTrigger(String name) {
// 		this.name = name;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 	
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// 	public Date getStartTime() {
// 		return startTime;
// 	}
// 
// 
// 	public void setStartTime(Date startTime) {
// 		this.startTime = startTime;
// 	}
// 
// 	public boolean isRepeat() {
// 		return repeat;
// 	}
// 
// 	public void setRepeat(boolean repeat) {
// 		this.repeat = repeat;
// 	}
// 
// 	public long getRepeatInterval() {
// 		return repeatInterval;
// 	}
// 
// 	public void setRepeatInterval(long repeatInterval) {
// 		this.repeatInterval = repeatInterval;
// 	}
// 
// 	public int getRepeatCount() {
// 		return repeatCount;
// 	}
// 
// 	public void setRepeatCount(int repeatCount) {
// 		this.repeatCount = repeatCount;
// 		if (repeatCount > 0) {
// 			this.repeat = true;
// 		}
// 	}
// 
// 	public Date getEndTime() {
// 		return endTime;
// 	}
// 
// 	public void setEndTime(Date endTime) {
// 		this.endTime = endTime;
// 	}
// 
// 	public void setEndDelayTime(long endDelayTime) {
// 		this.endTime = new Date((new Date()).getTime() + endDelayTime);
// 	}
// 
// 	public long getStartDelayTime() {
// 		return startDelayTime;
// 	}
// 
// 	public void setStartDelayTime(long startDelayTime) {
// 		this.startDelayTime = startDelayTime;
// 		this.startTime = new Date((new Date()).getTime() + startDelayTime);
// 	}
// 
// 	public void incExecuteCount() {
// 		executeCount++;
// 	}
// 	
// 	public boolean isFinish() {
// 		
// 		if (repeatCount != 0 && repeatCount <= executeCount) {
// 			return true;
// 		}
// 		
// 		long now = new Date().getTime();
// 		if (endTime != null && endTime.getTime() <= now ) {
// 			return true;
// 		}
// 		
// 		return false;
// 	}
// 
// 	public abstract boolean match(Date now) ;
// 	
// 	public Trigger clone() throws CloneNotSupportedException {
// 		Object cloneObj = super.clone();
// 		if (cloneObj instanceof Trigger) {
// 			return (Trigger)cloneObj;
// 		}
// 		return null;
// 	}
// 
// 
// }
// 
// Path: src/main/java/org/pinae/rafiki/trigger/TriggerException.java
// public class TriggerException extends Exception {
// 
// 	private static final long serialVersionUID = 1L;
// 
// 	public TriggerException() {
// 		super();
// 	}
// 
// 	public TriggerException(String message) {
// 		super(message);
// 	}
// 
// 	public TriggerException(Throwable cause) {
// 		super(cause);
// 	}
// 
// 	public TriggerException(String message, Throwable cause) {
// 		super(message, cause);
// 	}
// 
// }


import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Set;
import java.util.TimeZone;
import java.util.TreeSet;
import org.pinae.rafiki.trigger.AbstractTrigger;
import org.pinae.rafiki.trigger.TriggerException;

					if (interval < 1) {
						interval = 1;
					}
				}

				if (rangeItem.indexOf("*") > -1) {
					tempResult.addAll(addToSet(min, max));
				} else if (rangeItem.indexOf("-") > -1) {
					String item[] = rangeItem.split("-");
					tempResult.addAll(addToSet(Integer.parseInt(item[0]), Integer.parseInt(item[1])));
				} else {
					tempResult.add(Integer.parseInt(rangeItem));
				}

				int count = 0;
				for (Integer item : tempResult) {
					if (count % interval == 0) {
						result.add(item);
					}
					count++;
				}
			}

			return result;
		}

		private Set<Integer> addToSet(int start, int end) {
			Set<Integer> result = new TreeSet<Integer>();
			for (int i = start; i <= end; i++) {
// Path: src/main/java/org/pinae/rafiki/trigger/AbstractTrigger.java
// public abstract class AbstractTrigger implements Trigger {
// 
// 	/*
// 	 * 触发器名称
// 	 */
// 	private String name;
// 
// 	/*
// 	 * 触发器开始时间
// 	 */
// 	private Date startTime = new Date();
// 	
// 	/*
// 	 * 触发器结束时间
// 	 */
// 	private Date endTime = null; 
// 	
// 	/*
// 	 * 是否循环执行
// 	 */
// 	private boolean repeat = true;
// 	
// 	/*
// 	 * 触发器循环周期 (ms)
// 	 */
// 	private long repeatInterval = 1000;
// 	
// 	/*
// 	 * 触发器循环次数
// 	 */
// 	private int repeatCount = 0;
// 	
// 	/*
// 	 * 触发器开始延迟(ms)
// 	 */
// 	private long startDelayTime = 0;
// 
// 	/*
// 	 * 触发器命中次数
// 	 */
// 	private long executeCount = 0;
// 	
// 	/**
// 	 * 构造函数, 构建默认触发器名称
// 	 */
// 	public AbstractTrigger() {
// 		name = this.toString();
// 	}
// 	
// 	/**
// 	 * 构造函数
// 	 * 
// 	 * @param name 触发器名称
// 	 */
// 	public AbstractTrigger(String name) {
// 		this.name = name;
// 	}
// 
// 	public String getName() {
// 		return name;
// 	}
// 	
// 	public void setName(String name) {
// 		this.name = name;
// 	}
// 
// 	public Date getStartTime() {
// 		return startTime;
// 	}
// 
// 
// 	public void setStartTime(Date startTime) {
// 		this.startTime = startTime;
// 	}
// 
// 	public boolean isRepeat() {
// 		return repeat;
// 	}
// 
// 	public void setRepeat(boolean repeat) {
// 		this.repeat = repeat;
// 	}
// 
// 	public long getRepeatInterval() {
// 		return repeatInterval;
// 	}
// 
// 	public void setRepeatInterval(long repeatInterval) {
// 		this.repeatInterval = repeatInterval;
// 	}
// 
// 	public int getRepeatCount() {
// 		return repeatCount;
// 	}
// 
// 	public void setRepeatCount(int repeatCount) {
// 		this.repeatCount = repeatCount;
// 		if (repeatCount > 0) {
// 			this.repeat = true;
// 		}
// 	}
// 
// 	public Date getEndTime() {
// 		return endTime;
// 	}
// 
// 	public void setEndTime(Date endTime) {
// 		this.endTime = endTime;
// 	}
// 
// 	public void setEndDelayTime(long endDelayTime) {
// 		this.endTime = new Date((new Date()).getTime() + endDelayTime);
// 	}
// 
// 	public long getStartDelayTime() {
// 		return startDelayTime;
// 	}
// 
// 	public void setStartDelayTime(long startDelayTime) {
// 		this.startDelayTime = startDelayTime;
// 		this.startTime = new Date((new Date()).getTime() + startDelayTime);
// 	}
// 
// 	public void incExecuteCount() {
// 		executeCount++;
// 	}
// 	
// 	public boolean isFinish() {
// 		
// 		if (repeatCount != 0 && repeatCount <= executeCount) {
// 			return true;
// 		}
// 		
// 		long now = new Date().getTime();
// 		if (endTime != null && endTime.getTime() <= now ) {
// 			return true;
// 		}
// 		
// 		return false;
// 	}
// 
// 	public abstract boolean match(Date now) ;
// 	
// 	public Trigger clone() throws CloneNotSupportedException {
// 		Object cloneObj = super.clone();
// 		if (cloneObj instanceof Trigger) {
// 			return (Trigger)cloneObj;
// 		}
// 		return null;
// 	}
// 
// 
// }
// 
// Path: src/main/java/org/pinae/rafiki/trigger/TriggerException.java
// public class TriggerException extends Exception {
// 
// 	private static final long serialVersionUID = 1L;
// 
// 	public TriggerException() {
// 		super();
// 	}
// 
// 	public TriggerException(String message) {
// 		super(message);
// 	}
// 
// 	public TriggerException(Throwable cause) {
// 		super(cause);
// 	}
// 
// 	public TriggerException(String message, Throwable cause) {
// 		super(message, cause);
// 	}
// 
// }


// Path: src/main/java/org/pinae/rafiki/trigger/impl/CronTrigger.java
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.Set;
import java.util.TimeZone;
import java.util.TreeSet;
import org.pinae.rafiki.trigger.AbstractTrigger;
import org.pinae.rafiki.trigger.TriggerException;


					if (interval < 1) {
						interval = 1;
					}
				}

				if (rangeItem.indexOf("*") > -1) {
					tempResult.addAll(addToSet(min, max));
				} else if (rangeItem.indexOf("-") > -1) {
					String item[] = rangeItem.split("-");
					tempResult.addAll(addToSet(Integer.parseInt(item[0]), Integer.parseInt(item[1])));
				} else {
					tempResult.add(Integer.parseInt(rangeItem));
				}

				int count = 0;
				for (Integer item : tempResult) {
					if (count % interval == 0) {
						result.add(item);
					}
					count++;
				}
			}

			return result;
		}

		private Set<Integer> addToSet(int start, int end) {
			Set<Integer> result = new TreeSet<Integer>();
			for (int i = start; i <= end; i++) {
				result.add(i);