Class CronExpression
- java.lang.Object
-
- cn.boboweike.carrot.scheduling.Schedule
-
- cn.boboweike.carrot.scheduling.cron.CronExpression
-
- All Implemented Interfaces:
Comparable<Schedule>
public class CronExpression extends Schedule
Schedule class represents a parsed crontab expression.The schedule class cannot be instantiated using a constructor, a Schedule object can be obtain by using the static
create(java.lang.String)method, which parses a crontab expression and creates a Schedule object.Original version https://github.com/asahaf/javacron
- Author:
- Ahmed AlSahaf, Ronald Dehuysser (minor modifications)
-
-
Field Summary
-
Fields inherited from class cn.boboweike.carrot.scheduling.Schedule
SMALLEST_SCHEDULE_IN_SECONDS
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static CronExpressioncreate(String expression)Parses crontab expression and create a Schedule object representing that expression.booleanequals(Object obj)Compares this object against the specified object.StringgetExpression()intgetNumberOfFields()inthashCode()static booleanisLeapYear(int year)Instantnext(Instant createdAtInstant, Instant currentInstant, ZoneId zoneId)Calculates the next occurrence based on provided base time.StringtoString()voidvalidateSchedule()
-
-
-
Method Detail
-
create
public static CronExpression create(String expression)
Parses crontab expression and create a Schedule object representing that expression.The expression string can be 5 fields expression for minutes resolution.
┌───────────── minute (0 - 59) │ ┌───────────── hour (0 - 23) │ │ ┌───────────── day of the month (1 - 31) or L for last day of the month │ │ │ ┌───────────── month (1 - 12 or Jan/January - Dec/December) │ │ │ │ ┌───────────── day of the week (0 - 6 or Sun/Sunday - Sat/Saturday) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ "* * * * *"
or 6 fields expression for higher, seconds resolution.
┌───────────── second (0 - 59) │ ┌───────────── minute (0 - 59) │ │ ┌───────────── hour (0 - 23) │ │ │ ┌───────────── day of the month (1 - 31) or L for last day of the month │ │ │ │ ┌───────────── month (1 - 12 or Jan/January - Dec/December) │ │ │ │ │ ┌───────────── day of the week (0 - 6 or Sun/Sunday - Sat/Saturday) │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ "* * * * * *"
- Parameters:
expression- a crontab expression string used to create Schedule.- Returns:
- Schedule object created based on the supplied crontab expression.
- Throws:
InvalidCronExpressionException- if the provided crontab expression is invalid. The crontab expression is considered invalid if it is not properly formed, like empty string or contains less than 5 fields or more than 6 field. It's also invalid if the values in a field are beyond the allowed values range of that field. Non-occurring schedules like "0 0 30 2 *" is considered invalid too, as Feb never has 30 days and a schedule like this never occurs.
-
next
public Instant next(Instant createdAtInstant, Instant currentInstant, ZoneId zoneId)
Calculates the next occurrence based on provided base time.- Specified by:
nextin classSchedule- Parameters:
createdAtInstant- Instant object based on which calculating the next occurrence.currentInstant- Instant object used to calculate next occurrence (normally Instant.now()).zoneId- the zone for which to calculate the schedule- Returns:
- Instant of the next occurrence.
-
equals
public boolean equals(Object obj)
Compares this object against the specified object. The result istrueif and only if the argument is notnulland is aScheduleobject that whose seconds, minutes, hours, days, months, and days of weeks sets are equal to those of this schedule.The expression string used to create the schedule is not considered, as two different expressions may produce same schedules.
-
isLeapYear
public static boolean isLeapYear(int year)
-
getNumberOfFields
public int getNumberOfFields()
-
getExpression
public String getExpression()
-
validateSchedule
public void validateSchedule()
- Specified by:
validateSchedulein classSchedule
-
-