public void TestStringStartEndTimes()
        {
            DailyCalendar dailyCalendar = new DailyCalendar("1:20", "14:50");
            Assert.IsTrue(dailyCalendar.ToString().IndexOf("01:20:00:000 - 14:50:00:000") > 0);

            dailyCalendar = new DailyCalendar("1:20:1:456", "14:50:15:2");
            Assert.IsTrue(dailyCalendar.ToString().IndexOf("01:20:01:456 - 14:50:15:002") > 0);
        }
        public void TestStringInvertTimeRange()
        {
            DailyCalendar dailyCalendar = new DailyCalendar("1:20", "14:50");
            dailyCalendar.InvertTimeRange = true;
            Assert.IsTrue(dailyCalendar.ToString().IndexOf("inverted: True") > 0);

            dailyCalendar.InvertTimeRange = false;
            Assert.IsTrue(dailyCalendar.ToString().IndexOf("inverted: False") > 0);
        }
        public void Run()
        {
            ILog log = LogManager.GetLogger(typeof(XmlConfigurationExample));

            log.Info("------- Initializing ----------------------");

            // First we must get a reference to a scheduler
            NameValueCollection properties = new NameValueCollection();
            properties["quartz.scheduler.instanceName"] = "XmlConfiguredInstance";
            
            // set thread pool info
            properties["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz";
            properties["quartz.threadPool.threadCount"] = "5";
            properties["quartz.threadPool.threadPriority"] = "Normal";

            // job initialization plugin handles our xml reading, without it defaults are used
            properties["quartz.plugin.xml.type"] = "Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin, Quartz";
            properties["quartz.plugin.xml.fileNames"] = "~/quartz_jobs.xml";


            ISchedulerFactory sf = new StdSchedulerFactory(properties);
            IScheduler sched = sf.GetScheduler();
            
            // we need to add calendars manually, lets create a silly sample calendar
            var dailyCalendar = new DailyCalendar("00:01", "23:59");
            dailyCalendar.InvertTimeRange = true;
            sched.AddCalendar("cal1", dailyCalendar, false, false);

            log.Info("------- Initialization Complete -----------");

            // all jobs and triggers are now in scheduler


            // Start up the scheduler (nothing can actually run until the 
            // scheduler has been started)
            sched.Start();
            log.Info("------- Started Scheduler -----------------");

            // wait long enough so that the scheduler as an opportunity to 
            // fire the triggers
            log.Info("------- Waiting 30 seconds... -------------");

            try
            {
                Thread.Sleep(30*1000);
            }
            catch (ThreadInterruptedException)
            {
            }

            // shut down the scheduler
            log.Info("------- Shutting Down ---------------------");
            sched.Shutdown(true);
            log.Info("------- Shutdown Complete -----------------");
        }
        public void TestTimeZone()
        {
            TimeZoneInfo tz = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time");

            DailyCalendar dailyCalendar = new DailyCalendar("12:00:00", "14:00:00");
            dailyCalendar.InvertTimeRange = true; //inclusive calendar
            dailyCalendar.TimeZone = tz;

            // 11/2/2012 17:00 (utc) is 11/2/2012 13:00 (est)
            DateTimeOffset timeToCheck = new DateTimeOffset(2012, 11, 2, 17, 0, 0, TimeSpan.FromHours(0));
            Assert.IsTrue(dailyCalendar.IsTimeIncluded(timeToCheck));
        }
        public void TestStartEndTimes()
        {
            // Grafit found a copy-paste problem from ending time, it was the same as starting time

            DateTime d = DateTime.Now;
            DailyCalendar dailyCalendar = new DailyCalendar("1:20", "14:50");
            DateTime expectedStartTime = new DateTime(d.Year, d.Month, d.Day, 1, 20, 0);
            DateTime expectedEndTime = new DateTime(d.Year, d.Month, d.Day, 14, 50, 0);

            Assert.AreEqual(expectedStartTime, dailyCalendar.GetTimeRangeStartingTimeUtc(d).DateTime);
            Assert.AreEqual(expectedEndTime, dailyCalendar.GetTimeRangeEndingTimeUtc(d).DateTime);
        }
示例#6
0
        public bool Equals(DailyCalendar obj)
        {
            if (obj == null)
                return false;
            bool baseEqual = GetBaseCalendar() != null ?
                             GetBaseCalendar().Equals(obj.GetBaseCalendar()) : true;

            return baseEqual &&  (InvertTimeRange == obj.InvertTimeRange) &&
                   (rangeStartingHourOfDay == obj.rangeStartingHourOfDay) &&
                   (rangeStartingMinute == obj.rangeStartingMinute) &&
                   (rangeStartingSecond == obj.rangeStartingSecond) &&
                   (rangeStartingMillis == obj.rangeStartingMillis) &&
                   (rangeEndingHourOfDay == obj.rangeEndingHourOfDay) &&
                   (rangeEndingMinute == obj.rangeEndingMinute) &&
                   (rangeEndingSecond == obj.rangeEndingSecond) &&
                   (rangeEndingMillis == obj.rangeEndingMillis);
        }
示例#7
0
 public override ICalendar Clone()
 {
     var clone = new DailyCalendar(CalendarBase, RangeStartingTime, RangeEndingTime);
     CloneFields(clone);
     return clone;
 }
        public void TestGetFireTimeAfter_WithCalendar()
        {
            DailyCalendar dailyCalendar = new DailyCalendar("1:20", "14:50");
            SimpleTriggerImpl simpleTrigger = new SimpleTriggerImpl();
            simpleTrigger.RepeatInterval = TimeSpan.FromMilliseconds(10);
            simpleTrigger.RepeatCount = 1;
            DateTimeOffset neverFireTime = DateBuilder.EvenMinuteDateBefore(dailyCalendar.GetTimeRangeStartingTimeUtc(DateTime.Now));
            simpleTrigger.StartTimeUtc = neverFireTime;

            simpleTrigger.ComputeFirstFireTimeUtc(dailyCalendar);
            DateTimeOffset? fireTimeAfter = simpleTrigger.GetNextFireTimeUtc();

            Assert.IsNull(fireTimeAfter);
        }
示例#9
0
 static void InitializeDaily(DailyCalendar dailyCalendar, IDailyCalendar calendar) {
     dailyCalendar.TimeZone = TimeZoneInfo.FindSystemTimeZoneById(Persistent.Base.General.RegistryTimeZoneProvider.GetRegistryKeyNameByTimeZoneId(calendar.TimeZone));
     calendar.DateRanges.ToList().ForEach(range => dailyCalendar.SetTimeRange(range.StartPoint, range.EndPoint));
 }
示例#10
0
        public override object Clone()
        {
            DailyCalendar clone = (DailyCalendar)base.Clone();

            return(clone);
        }
        /// <summary>
        /// Get the object to serialize when generating serialized file for future
        /// tests, and against which to validate deserialized object.
        /// </summary>
        /// <returns></returns>
        protected override object GetTargetObject()
        {
            DailyCalendar c = new DailyCalendar("01:20:01:456", "14:50:15:002");
            c.Description = "description";
            c.InvertTimeRange = true;

            return c;
        }
示例#12
0
        /// <summary>
        /// Creates the simple calendar and adds it to the scheduler.
        /// </summary>
        /// <param name="calName">The calendar name.</param>
        private void CreateCalendar(string calName)
        {
            var dailyCalendar = new DailyCalendar("00:01", "23:59");
            dailyCalendar.InvertTimeRange = true;

            if (!scheduler.GetCalendarNames().Contains(calName))
            {
                scheduler.AddCalendar(calName, dailyCalendar, false, false);
            }
        }
 private ICalendar parseDailyCalendar(XElement calendarXml)
 {
     DailyCalendar calendar = new DailyCalendar(parseRangeStartingTime(calendarXml), parseRangeEndingTime(calendarXml));
     return calendar;
 }
示例#14
0
 public DailyCalendarDto(DailyCalendar calendar) : base(calendar)
 {
     InvertTimeRange = calendar.InvertTimeRange;
     TimeZone = new TimeZoneDto(calendar.TimeZone);
 }
        /// <summary>
        /// Builds a <see cref="DailyCalendar"/> on the given allowed hours to run.
        /// </summary>
        /// <param name="fromTime">From time.</param>
        /// <param name="toTime">To time.</param>
        /// <returns></returns>
        private DailyCalendar BuildCalendarOnTimeRange(ICalendar baseCalendar, string fromTime, string toTime)
        {
            DateTime? dFromTime = GrammarHelper.GetTimeFromTimeString(fromTime);
            DateTime? dToTime = GrammarHelper.GetTimeFromTimeString(toTime);

            DateTime fromUtc = dFromTime.Value.ToUniversalTime();
            DateTime toUtc = dToTime.Value.ToUniversalTime();
            
            //adjust the utc month,day,year to match each other
            toUtc = new DateTime(fromUtc.Year, fromUtc.Month, fromUtc.Day, toUtc.Hour, toUtc.Minute, toUtc.Second, toUtc.Millisecond);

            DailyCalendar calendar = null;

            //if the to time is lower than from
            if (toUtc < fromUtc)
            {
                //switch the variables
                if (baseCalendar != null)
                    calendar = new DailyCalendar(baseCalendar, toUtc, fromUtc);
                else
                    calendar = new DailyCalendar(toUtc, fromUtc);
            }
            else
            {
                //check to see if they are the same
                //TODO: do something about this hacking the extra second
                if (fromUtc.Equals(toUtc))
                {
                    toUtc = toUtc.AddSeconds(1); 
                }

                if (baseCalendar != null)
                    calendar = new DailyCalendar(baseCalendar, fromUtc, toUtc);
                else
                    calendar = new DailyCalendar(fromUtc, toUtc);

                calendar.InvertTimeRange = true; //turn this into an inclusive range
            }

            return calendar;
        }