Initial implementation of Cron format parser
This commit is contained in:
parent
f9dc882c1c
commit
d6e5bd2b65
3 changed files with 77 additions and 2 deletions
48
src/zutil/CronTimer.java
Executable file
48
src/zutil/CronTimer.java
Executable file
|
|
@ -0,0 +1,48 @@
|
||||||
|
package zutil;
|
||||||
|
|
||||||
|
|
||||||
|
import com.mysql.fabric.xmlrpc.base.Array;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is a utility class that will generate timestamps from a Cron formatted String.
|
||||||
|
*
|
||||||
|
* @see <a hraf="http://www.nncron.ru/help/EN/working/cron-format.htm">Cron Format Specification</a>
|
||||||
|
*/
|
||||||
|
public class CronTimer {
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A Constructor that takes a String containing 5 (or 6 for extended) individual fields in Cron format
|
||||||
|
*/
|
||||||
|
public CronTimer(String cron){
|
||||||
|
String[] arr = cron.split("\\s");
|
||||||
|
if (arr.length < 5 || arr.length > 6)
|
||||||
|
throw new IllegalArgumentException(
|
||||||
|
"String must contain between 5-6 fields, but got("+arr.length+" fields): "+cron);
|
||||||
|
init(arr[0], arr[1], arr[2], arr[3], arr[4], (arr.length>5 ? arr[5]: "*"));
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* A Constructor that takes separate Strings for each field
|
||||||
|
*/
|
||||||
|
public CronTimer(String minute, String hour, String dayOfMonth, String monthOfYear, String dayOfWeek){
|
||||||
|
this(minute, hour, dayOfMonth, monthOfYear, dayOfWeek, "*");
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* A Constructor that takes separate Strings for each field with an extended year field
|
||||||
|
*/
|
||||||
|
public CronTimer(String minute, String hour, String dayOfMonth, String monthOfYear, String dayOfWeek, String year){
|
||||||
|
init(minute, hour, dayOfMonth, monthOfYear, dayOfWeek, year);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void init(String minute, String hour, String dayOfMonth, String monthOfYear, String dayOfWeek, String year){
|
||||||
|
|
||||||
|
}
|
||||||
|
protected static List<Integer> getRange(String number){
|
||||||
|
ArrayList<Integer> list = new ArrayList<>();
|
||||||
|
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -3,8 +3,6 @@ package zutil.db.bean;
|
||||||
import zutil.log.LogUtil;
|
import zutil.log.LogUtil;
|
||||||
|
|
||||||
import java.lang.ref.WeakReference;
|
import java.lang.ref.WeakReference;
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Timer;
|
import java.util.Timer;
|
||||||
|
|
|
||||||
29
test/zutil/CronTimerTest.java
Executable file
29
test/zutil/CronTimerTest.java
Executable file
|
|
@ -0,0 +1,29 @@
|
||||||
|
package zutil;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
|
||||||
|
import static org.junit.Assert.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class CronTimerTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void getRange() throws Exception {
|
||||||
|
// invalid numbers
|
||||||
|
assertEquals(Collections.EMPTY_LIST, CronTimer.getRange(""));
|
||||||
|
assertEquals(Collections.EMPTY_LIST, CronTimer.getRange(null));
|
||||||
|
|
||||||
|
// ranges
|
||||||
|
//assertEquals(Arrays.asList(0,1), CronTimer.getRange("0-1"));
|
||||||
|
|
||||||
|
// intervals
|
||||||
|
|
||||||
|
// range and interval
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue