Exemplo n.º 1
0
        public int CompareTo(object obj)
        {
            if (obj == null)
            {
                return(1);
            }
            CronFieldListItem cronFieldListItem = obj as CronFieldListItem;

            if (cronFieldListItem != null)
            {
                if (Type == CronFieldType.Wildcard || cronFieldListItem.Type == CronFieldType.Wildcard)
                {
                    return(0);
                }
                if (Value < cronFieldListItem.Value)
                {
                    return(-1);
                }
                if (Value > cronFieldListItem.Value)
                {
                    return(1);
                }
                return(0);
            }
            throw new ArgumentException("Trying to compare an object that is not a CronField");
        }
Exemplo n.º 2
0
        public DateTime GetNextDate(DateTime startDate, int failedFieldPosition)
        {
            if (failedFieldPosition >= 7)
            {
                return(startDate);
            }
            DateTime dateTime = startDate;

            int[] array = new int[7];
            using (Enumerator enumerator = GetEnumerator())
            {
                while (enumerator.MoveNext())
                {
                    KeyValuePair <int, CronFieldList> current = enumerator.Current;
                    CronFieldList     value             = current.Value;
                    CronFieldListItem cronFieldListItem = value.Next();
                    if (cronFieldListItem == null)
                    {
                        return(dateTime);
                    }
                    if (current.Key == 5)
                    {
                        continue;
                    }
                    int dateValueForField = getDateValueForField(current.Key, dateTime);
                    if (current.Key < failedFieldPosition)
                    {
                        array[current.Key] = cronFieldListItem.Value - dateValueForField;
                        if (array[current.Key] < 0)
                        {
                            dateTime = incrementValueForField(getNextPositionToIterate(current.Key), dateTime);
                        }
                    }
                    else if (current.Key == failedFieldPosition)
                    {
                        while (cronFieldListItem != null && cronFieldListItem.Value > -1 && cronFieldListItem.Value < dateValueForField)
                        {
                            cronFieldListItem.Next();
                            value.Sort();
                            cronFieldListItem = value.Next();
                        }
                        if (cronFieldListItem != null && cronFieldListItem.Value > -1)
                        {
                            array[current.Key] = cronFieldListItem.Value - dateValueForField;
                        }
                        else if (value.ListSource == CronFieldList.ValuesSource.CronExpression)
                        {
                            value.Reset();
                            value.Sort();
                            return(GetNextDate(startDate, getNextPositionToIterate(current.Key)));
                        }
                    }
                    else
                    {
                        while (cronFieldListItem != null && cronFieldListItem.Value > -1 && cronFieldListItem.Value < dateValueForField)
                        {
                            cronFieldListItem.Next();
                            value.Sort();
                            cronFieldListItem = value.Next();
                        }
                        if (cronFieldListItem != null && cronFieldListItem.Value > -1)
                        {
                            array[current.Key] = cronFieldListItem.Value - dateValueForField;
                        }
                    }
                    dateTime = incrementValueForField(cronFieldListItem.FieldPos, dateTime, array[current.Key]);
                    value.Reset();
                    value.Sort();
                }
            }
            int num = 5;

            if (failedFieldPosition == num)
            {
                CronFieldList     cronFieldList      = base[num];
                CronFieldListItem cronFieldListItem2 = cronFieldList.Next();
                while (cronFieldListItem2 != null && cronFieldListItem2.Value > -1 && cronFieldListItem2.Value != (int)dateTime.DayOfWeek)
                {
                    while (cronFieldListItem2 != null && cronFieldListItem2.Value > -1 && cronFieldListItem2.Value != (int)dateTime.DayOfWeek)
                    {
                        if (cronFieldListItem2.Value == (int)dateTime.DayOfWeek)
                        {
                            return(dateTime);
                        }
                        cronFieldListItem2.Next();
                        cronFieldList.Sort();
                        cronFieldListItem2 = cronFieldList.Next();
                    }
                    cronFieldList.Reset();
                    cronFieldList.Sort();
                    cronFieldListItem2 = cronFieldList.Next();
                    dateTime           = dateTime.AddDays(1.0);
                }
            }
            return(dateTime);
        }