Пример #1
0
        /// <summary>
        /// String Representation
        /// </summary>
        /// <returns>Info</returns>
        public override String ToString()
        {
            StringBuilder sb = new StringBuilder("MSchedule[");

            sb.Append(Get_ID()).Append("-").Append(GetName());
            String scheduleType = GetScheduleType();

            sb.Append(",Type=").Append(scheduleType);
            if (SCHEDULETYPE_Frequency.Equals(scheduleType))
            {
                sb.Append(",Frequency=").Append(GetFrequencyType())
                .Append("*").Append(GetFrequency());
                if (IsOnMonday())
                {
                    sb.Append(",Mo");
                }
                if (IsOnTuesday())
                {
                    sb.Append(",Tu");
                }
                if (IsOnWednesday())
                {
                    sb.Append(",We");
                }
                if (IsOnThursday())
                {
                    sb.Append(",Th");
                }
                if (IsOnFriday())
                {
                    sb.Append(",Fr");
                }
                if (IsOnSaturday())
                {
                    sb.Append(",Sa");
                }
                if (IsOnSunday())
                {
                    sb.Append(",Su");
                }
            }
            else if (SCHEDULETYPE_MonthDay.Equals(scheduleType))
            {
                sb.Append(",Day=").Append(GetMonthDay());
            }
            else
            {
                sb.Append(",Day=").Append(GetWeekDay());
            }
            //
            sb.Append(",HH=").Append(GetScheduleHour())
            .Append(",MM=").Append(GetScheduleMinute());
            //
            sb.Append("]");
            return(sb.ToString());
        }       //	toString
Пример #2
0
        }       //	getWeekDay

        /// <summary>
        /// Before Save
        /// </summary>
        /// <param name="newRecord">new</param>
        /// <returns>true</returns>
        protected override bool BeforeSave(bool newRecord)
        {
            if (GetScheduleType() == null)
            {
                SetScheduleType(SCHEDULETYPE_Frequency);
            }

            //	Set Schedule Type & Frequencies
            if (SCHEDULETYPE_Frequency.Equals(GetScheduleType()))
            {
                if (GetFrequencyType() == null)
                {
                    SetFrequencyType(FREQUENCYTYPE_Day);
                }
                if (GetFrequency() < 1)
                {
                    SetFrequency(1);
                }
            }
            else if (SCHEDULETYPE_MonthDay.Equals(GetScheduleType()))
            {
                if (base.GetMonthDay() < 1 || base.GetMonthDay() > 31)
                {
                    SetMonthDay(1);
                }
            }
            else        //	SCHEDULETYPE_WeekDay
            {
                if (GetScheduleType() == null)
                {
                    SetScheduleType(SCHEDULETYPE_WeekDay);
                }
                if (base.GetWeekDay() == null)
                {
                    SetWeekDay(WEEKDAY_Monday);
                }
            }
            //	Hour/Minute
            if (GetScheduleHour() > 23 || GetScheduleHour() < 0)
            {
                SetScheduleHour(0);
            }
            if (GetScheduleMinute() > 59 || GetScheduleMinute() < 0)
            {
                SetScheduleMinute(0);
            }
            return(true);
        }
Пример #3
0
        /// <summary>
        /// Get Next Run
        /// </summary>
        /// <param name="last">in MS</param>
        /// <returns>next run in MS</returns>
        public long GetNextRunMS(long last)
        {
            DateTime calNow = CommonFunctions.CovertMilliToDate(last);

            DateTime calNext = CommonFunctions.CovertMilliToDate(last);

            calNext = calNext.Subtract(new TimeSpan(0, 0, 0, calNext.Second, calNext.Millisecond));
            calNext = calNext.AddSeconds(0);
            calNext = calNext.AddMilliseconds(0);

            //
            int hour   = GetScheduleHour();
            int minute = GetScheduleMinute();
            //
            String scheduleType = GetScheduleType();

            if (SCHEDULETYPE_Frequency.Equals(scheduleType))
            {
                String frequencyType = GetFrequencyType();
                int    frequency     = GetFrequency();

                List <int> validDays = new List <int>();
                if (IsOnMonday())
                {
                    validDays.Add(MONDAY);
                }
                if (IsOnTuesday())
                {
                    validDays.Add(TUESDAY);
                }
                if (IsOnWednesday())
                {
                    validDays.Add(WEDNESDAY);
                }
                if (IsOnThursday())
                {
                    validDays.Add(THURSDAY);
                }
                if (IsOnFriday())
                {
                    validDays.Add(FRIDAY);
                }
                if (IsOnSaturday())
                {
                    validDays.Add(SATURDAY);
                }
                if (IsOnSunday())
                {
                    validDays.Add(SUNDAY);
                }

                if (validDays.Count() <= 0)
                {
                    log.Warning("Incorrect Schedule setup. Please enable at least one of the weekdays");
                    validDays.Add((int)DayOfWeek.Monday);
                }

                bool increment = true;
                int  ct        = 0;
                while ((ct < 8) && !(validDays.Contains(((int)calNext.DayOfWeek) + 1)))
                {
                    calNext = calNext.AddDays(1);
                    ct++;
                    increment = false;
                }


                /*****	DAY		******/
                if (X_R_RequestProcessor.FREQUENCYTYPE_Day.Equals(frequencyType))
                {
                    //calNext.set(java.util.Calendar.HOUR_OF_DAY, hour);
                    //calNext.set(java.util.Calendar.MINUTE, minute);
                    //calNext.add(java.util.Calendar.DAY_OF_YEAR, frequency);

                    calNext = calNext.Subtract(new TimeSpan(calNext.Hour, 0, 0));
                    calNext = calNext.AddHours(hour);

                    calNext = calNext.Subtract(new TimeSpan(0, calNext.Minute, 0));
                    calNext = calNext.AddMinutes(minute);
                    if (increment)
                    {
                        calNext = calNext.AddDays(frequency);
                    }
                }       //	Day

                /*****	HOUR	******/
                else if (X_R_RequestProcessor.FREQUENCYTYPE_Hour.Equals(frequencyType))
                {
                    //calNext.set(java.util.Calendar.MINUTE, minute);
                    //calNext.add(java.util.Calendar.HOUR_OF_DAY, frequency);

                    calNext = calNext.Subtract(new TimeSpan(0, calNext.Minute, 0));
                    calNext = calNext.AddMinutes(minute);
                    if (increment)
                    {
                        calNext = calNext.AddHours(frequency);
                    }
                }       //	Hour

                /*****	MINUTE	******/
                else if (X_R_RequestProcessor.FREQUENCYTYPE_Minute.Equals(frequencyType))
                {
                    //calNext.add(java.util.Calendar.MINUTE, frequency);
                    if (increment)
                    {
                        calNext = calNext.AddMinutes(frequency);
                    }
                }       //	Minute
            }

            /*****	MONTH	******/
            else if (SCHEDULETYPE_MonthDay.Equals(scheduleType))
            {
                //calNext.set(java.util.Calendar.HOUR, hour);
                //calNext.set(java.util.Calendar.MINUTE, minute);
                calNext = calNext.Subtract(new TimeSpan(calNext.Hour, calNext.Minute, 0));
                calNext = calNext.AddHours(hour);
                calNext = calNext.AddMinutes(minute);

                //
                int day     = GetMonthDay();
                int dd      = calNext.Day;                                       //.get(java.util.Calendar.DAY_OF_MONTH);
                int max     = DateTime.DaysInMonth(calNext.Year, calNext.Month); //calNext.t .getActualMaximum(java.util.Calendar.DAY_OF_MONTH);
                int dayUsed = Math.Min(day, max);
                //	Same Month
                if (dd < dayUsed)
                {
                    //calNext.set(java.util.Calendar.DAY_OF_MONTH, dayUsed);
                    calNext = calNext.Subtract(new TimeSpan(calNext.Day, 0, 0, 0));
                    calNext = calNext.AddDays(dayUsed);
                }
                else
                {
                    if (calNext.Month == 12)
                    {
                        //calNext.AddYears(1);
                        calNext = calNext.AddMonths(1);
                    }
                    else
                    {
                        calNext = calNext.AddMonths(1);
                    }

                    //if (calNext.get(java.util.Calendar.MONTH) == java.util.Calendar.DECEMBER)
                    //{
                    //    calNext.add(java.util.Calendar.YEAR, 1);
                    //    calNext.set(java.util.Calendar.MONTH, java.util.Calendar.JANUARY);
                    //}
                    //else
                    //    calNext.add(java.util.Calendar.MONTH, 1);
                    max     = 31;
                    dayUsed = Math.Min(day, max);
                    //calNext.set(java.util.Calendar.DAY_OF_MONTH, dayUsed);
                    calNext = calNext.Subtract(new TimeSpan(calNext.Day, 0, 0, 0, 0));
                    calNext = calNext.AddDays(dayUsed);
                }
            }   //	month

            /*****	WEEK	******/
            else // if (SCHEDULETYPE_WeekDay.Equals(scheduleType))
            {
                String weekDay   = GetWeekDay();
                int    dayOfWeek = 0;
                if (WEEKDAY_Monday.Equals(weekDay))
                {
                    dayOfWeek = MONDAY;
                }
                else if (WEEKDAY_Tuesday.Equals(weekDay))
                {
                    dayOfWeek = TUESDAY;
                }
                else if (WEEKDAY_Wednesday.Equals(weekDay))
                {
                    dayOfWeek = WEDNESDAY;
                }
                else if (WEEKDAY_Thursday.Equals(weekDay))
                {
                    dayOfWeek = THURSDAY;
                }
                else if (WEEKDAY_Friday.Equals(weekDay))
                {
                    dayOfWeek = FRIDAY;
                }
                else if (WEEKDAY_Saturday.Equals(weekDay))
                {
                    dayOfWeek = SATURDAY;
                }
                else if (WEEKDAY_Sunday.Equals(weekDay))
                {
                    dayOfWeek = SUNDAY;
                }

                calNext = calNext.Subtract(new TimeSpan(((int)calNext.DayOfWeek) + 1, calNext.Hour, calNext.Minute, calNext.Second, calNext.Millisecond));
                calNext = calNext.AddDays(dayOfWeek);
                calNext = calNext.AddHours(hour);
                calNext = calNext.AddMinutes(minute);
                calNext = calNext.AddSeconds(0);
                calNext = calNext.AddMilliseconds(0);

                //calNext.set(java.util.Calendar.DAY_OF_WEEK, dayOfWeek);
                //calNext.set(java.util.Calendar.HOUR, hour);
                //calNext.set(java.util.Calendar.MINUTE, minute);
                //calNext.set(java.util.Calendar.SECOND, 0);
                //calNext.set(java.util.Calendar.MILLISECOND, 0);
                //
                //if (calNext > calNow)
                {
                    calNext = calNext.AddDays(7);
                }
            }   //	week


            long delta = CommonFunctions.CurrentTimeMillis(calNext) - CommonFunctions.CurrentTimeMillis(calNow);
            //long delta = calNext.getTimeInMillis() - calNow.getTimeInMillis();
            String info = "Now=" + calNow.ToString()
                          + ", Next=" + calNext.ToString()
                          + ", Delta=" + delta
                          + " " + ToString();

            if (delta < 0)
            {
                log.Warning(info);
            }
            else
            {
                log.Info(info);
            }

            return(CommonFunctions.CurrentTimeMillis(calNext));
        }       //	getNextRunMS