Esempio n. 1
0
        static DailyTimeIntervalScheduleBuilder()
        {
            var allDaysOfTheWeek    = new ReadOnlyCompatibleHashSet <DayOfWeek>();
            var mondayThroughFriday = new ReadOnlyCompatibleHashSet <DayOfWeek>();

            foreach (DayOfWeek d in Enum.GetValues(typeof(DayOfWeek)))
            {
                allDaysOfTheWeek.Add(d);

                if (d >= DayOfWeek.Monday && d <= DayOfWeek.Friday)
                {
                    mondayThroughFriday.Add(d);
                }
            }

            SaturdayAndSunday = new ReadOnlyCompatibleHashSet <DayOfWeek>
            {
                DayOfWeek.Sunday,
                DayOfWeek.Saturday
            };

            AllDaysOfTheWeek    = allDaysOfTheWeek;
            MondayThroughFriday = mondayThroughFriday;
            AllDaysOfTheWeek    = new ReadOnlyCompatibleHashSet <DayOfWeek>(AllDaysOfTheWeek);
            MondayThroughFriday = new ReadOnlyCompatibleHashSet <DayOfWeek>(MondayThroughFriday);
            SaturdayAndSunday   = new ReadOnlyCompatibleHashSet <DayOfWeek>(SaturdayAndSunday);
        }
Esempio n. 2
0
        public void TestMonOnly()
        {
            var daysOfWeek = new ReadOnlyCompatibleHashSet <DayOfWeek>
            {
                DayOfWeek.Monday
            };
            DateTimeOffset startTime      = DateBuilder.DateOf(0, 0, 0, 1, 1, 2011); // SAT(7)
            TimeOfDay      startTimeOfDay = new TimeOfDay(8, 0, 0);
            TimeOfDay      endTimeOfDay   = new TimeOfDay(17, 0, 0);
            var            trigger        = new DailyTimeIntervalTriggerImpl
            {
                StartTimeUtc       = startTime.ToUniversalTime(),
                StartTimeOfDay     = startTimeOfDay,
                EndTimeOfDay       = endTimeOfDay,
                DaysOfWeek         = daysOfWeek,
                RepeatIntervalUnit = IntervalUnit.Minute,
                RepeatInterval     = 60
            };

            var fireTimes = TriggerUtils.ComputeFireTimes(trigger, null, 48);

            Assert.AreEqual(48, fireTimes.Count);
            Assert.AreEqual(DateBuilder.DateOf(8, 0, 0, 3, 1, 2011), fireTimes[0]);
            Assert.AreEqual(DayOfWeek.Monday, fireTimes[0].DayOfWeek);
            Assert.AreEqual(DateBuilder.DateOf(8, 0, 0, 10, 1, 2011), fireTimes[10]);
            Assert.AreEqual(DayOfWeek.Monday, fireTimes[10].DayOfWeek);
            Assert.AreEqual(DateBuilder.DateOf(15, 0, 0, 31, 1, 2011), fireTimes[47]);
            Assert.AreEqual(DayOfWeek.Monday, fireTimes[47].DayOfWeek);
        }
        protected override TriggerPropertyBundle GetTriggerPropertyBundle(SimplePropertiesTriggerProperties props)
        {
            int    repeatCount     = (int)props.Long1;
            int    interval        = props.Int1;
            string intervalUnitStr = props.String1;
            string daysOfWeekStr   = props.String2;
            string timeOfDayStr    = props.String3;

            IntervalUnit intervalUnit = (IntervalUnit)Enum.Parse(typeof(IntervalUnit), intervalUnitStr, true);
            DailyTimeIntervalScheduleBuilder scheduleBuilder = DailyTimeIntervalScheduleBuilder.Create()
                                                               .WithInterval(interval, intervalUnit)
                                                               .WithRepeatCount(repeatCount);

            if (!string.IsNullOrEmpty(props.TimeZoneId))
            {
                scheduleBuilder.InTimeZone(TimeZoneUtil.FindTimeZoneById(props.TimeZoneId));
            }

            if (daysOfWeekStr != null)
            {
                var      daysOfWeek = new ReadOnlyCompatibleHashSet <DayOfWeek>();
                string[] nums       = daysOfWeekStr.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                if (nums.Length > 0)
                {
                    foreach (string num in nums)
                    {
                        daysOfWeek.Add((DayOfWeek)int.Parse(num));
                    }
                    scheduleBuilder.OnDaysOfTheWeek(daysOfWeek);
                }
            }
            else
            {
                scheduleBuilder.OnDaysOfTheWeek(DailyTimeIntervalScheduleBuilder.AllDaysOfTheWeek);
            }

            if (timeOfDayStr != null)
            {
                string[]  nums = timeOfDayStr.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries);
                TimeOfDay startTimeOfDay;
                if (nums.Length >= 3)
                {
                    int hour = int.Parse(nums[0]);
                    int min  = int.Parse(nums[1]);
                    int sec  = int.Parse(nums[2]);
                    startTimeOfDay = new TimeOfDay(hour, min, sec);
                }
                else
                {
                    startTimeOfDay = TimeOfDay.HourMinuteAndSecondOfDay(0, 0, 0);
                }
                scheduleBuilder.StartingDailyAt(startTimeOfDay);

                TimeOfDay endTimeOfDay;
                if (nums.Length >= 6)
                {
                    int hour = int.Parse(nums[3]);
                    int min  = int.Parse(nums[4]);
                    int sec  = int.Parse(nums[5]);
                    endTimeOfDay = new TimeOfDay(hour, min, sec);
                }
                else
                {
                    endTimeOfDay = TimeOfDay.HourMinuteAndSecondOfDay(23, 59, 59);
                }
                scheduleBuilder.EndingDailyAt(endTimeOfDay);
            }
            else
            {
                scheduleBuilder.StartingDailyAt(TimeOfDay.HourMinuteAndSecondOfDay(0, 0, 0));
                scheduleBuilder.EndingDailyAt(TimeOfDay.HourMinuteAndSecondOfDay(23, 59, 59));
            }


            int timesTriggered = props.Int2;

            string[] statePropertyNames  = { "timesTriggered" };
            object[] statePropertyValues = { timesTriggered };

            return(new TriggerPropertyBundle(scheduleBuilder, statePropertyNames, statePropertyValues));
        }