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 java.lang.ref.WeakReference;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
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