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); }
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)); }