Quartz.Impl.Triggers.DailyTimeIntervalTriggerImpl.GetScheduleBuilder C# (CSharp) Method

GetScheduleBuilder() public method

Get a IScheduleBuilder that is configured to produce a schedule identical to this trigger's schedule.
public GetScheduleBuilder ( ) : IScheduleBuilder
return IScheduleBuilder
        public override IScheduleBuilder GetScheduleBuilder()
        {
            DailyTimeIntervalScheduleBuilder cb = DailyTimeIntervalScheduleBuilder.Create()
                .WithInterval(RepeatInterval, RepeatIntervalUnit)
                .OnDaysOfTheWeek(DaysOfWeek)
                .StartingDailyAt(StartTimeOfDay)
                .EndingDailyAt(EndTimeOfDay)
                .WithRepeatCount(RepeatCount)
                .InTimeZone(TimeZone);

            switch (MisfireInstruction)
            {
                case Quartz.MisfireInstruction.DailyTimeIntervalTrigger.DoNothing:
                    cb.WithMisfireHandlingInstructionDoNothing();
                    break;
                case Quartz.MisfireInstruction.DailyTimeIntervalTrigger.FireOnceNow:
                    cb.WithMisfireHandlingInstructionFireAndProceed();
                    break;
            }

            return cb;
        }

Usage Example

        public void ShouldGetScheduleBuilderWithSameSettingsAsTrigger()
        {
            var startTime = DateTimeOffset.UtcNow;
            var endTime = DateTimeOffset.UtcNow.AddDays(1);
            var startTimeOfDay = new TimeOfDay(1, 2, 3);
            var endTimeOfDay = new TimeOfDay(3, 2, 1);
            var trigger = new DailyTimeIntervalTriggerImpl("name", "group", startTime, endTime, startTimeOfDay, endTimeOfDay, IntervalUnit.Hour, 10);
            trigger.RepeatCount = 12;
            trigger.DaysOfWeek = new Collection.HashSet<DayOfWeek>
            {
                DayOfWeek.Thursday
            };
            trigger.MisfireInstruction = MisfireInstruction.DailyTimeIntervalTrigger.FireOnceNow;
            trigger.TimeZone = TimeZoneInfo.Utc;

            var scheduleBuilder = trigger.GetScheduleBuilder();

            var cloned = (DailyTimeIntervalTriggerImpl) scheduleBuilder.Build();
            CollectionAssert.AreEqual(cloned.DaysOfWeek, trigger.DaysOfWeek);
            Assert.That(cloned.RepeatCount, Is.EqualTo(trigger.RepeatCount));
            Assert.That(cloned.RepeatInterval, Is.EqualTo(trigger.RepeatInterval));
            Assert.That(cloned.RepeatIntervalUnit, Is.EqualTo(trigger.RepeatIntervalUnit));
            Assert.That(cloned.StartTimeOfDay, Is.EqualTo(trigger.StartTimeOfDay));
            Assert.That(cloned.EndTimeOfDay, Is.EqualTo(trigger.EndTimeOfDay));
            Assert.That(cloned.TimeZone, Is.EqualTo(trigger.TimeZone));
        }