Initial implementation of Cron format parser

This commit is contained in:
Ziver Koc 2017-02-24 18:44:22 +01:00
parent f9dc882c1c
commit d6e5bd2b65
3 changed files with 77 additions and 2 deletions

48
src/zutil/CronTimer.java Executable file
View 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;
}
}

View file

@ -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
View 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
}
}