/// <summary>Ctor. </summary> /// <param name="operator">is the operator as text</param> /// <param name="day">is the day text</param> public CronParameter( CronOperatorEnum @operator, int?day) { Operator = @operator; Day = day; }
/// <summary>Ctor. </summary> /// <param name="operator">is the operator as text</param> /// <param name="day">is the day</param> /// <param name="month">is the month</param> public CronParameter( CronOperatorEnum @operator, int?day, int?month) { Operator = @operator; Day = day; Month = month; }
private static void IncreaseAfterDayOfMonthSpecialOp( CronOperatorEnum @operator, int?day, int?month, bool week, DateTimeEx after) { DateChecker checker; if (@operator == CronOperatorEnum.LASTDAY) { if (!week) { checker = new DateCheckerLastDayOfMonth(day, month); } else { if (day == null) { checker = new DateCheckerLastDayOfWeek(month); } else { checker = new DateCheckerLastSpecificDayWeek(day.Value, month); } } } else if (@operator == CronOperatorEnum.LASTWEEKDAY) { checker = new DateCheckerLastWeekday(day, month); } else { checker = new DateCheckerMonthWeekday(day, month); } int dayCount = 0; while (!checker.Fits(after)) { after.AddUsingField(DateTimeFieldEnum.DAY_OF_MONTH, 1); dayCount++; if (dayCount > 10000) { throw new ArgumentException("Invalid crontab expression: failed to find match day"); } } }
/// <summary>Returns the syntax string for the operator. </summary> /// <returns>syntax string</returns> public static string GetSyntax(this CronOperatorEnum value) { switch (value) { case CronOperatorEnum.LASTDAY: return("last"); case CronOperatorEnum.WEEKDAY: return("weekday"); case CronOperatorEnum.LASTWEEKDAY: return("lastweekday"); } throw new ArgumentException(); }
/// <summary>Ctor. </summary> /// <param name="cronOperator">type of cron parameter</param> public ExprNumberSetCronParam(CronOperatorEnum cronOperator) { _cronOperator = cronOperator; }