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