예제 #1
0
        public void AddSchedule(CronScheduleInfo schedule, TextReader reader, TextWriter writer)
        {
            List <string> comments = new List <string>();

            foreach (string line in GetLines(reader))
            {
                if (IsComment(line))
                {
                    comments.Add(line);
                }
                else
                {
                    var cur = ParseSchedule(line);
                    if (cur == null || string.Compare(cur.Name, schedule.Name, StringComparison.Ordinal) != 0)
                    {
                        foreach (string c in comments)
                        {
                            writer.WriteLine(c);
                        }
                        writer.WriteLine(line);
                    }
                    else
                    {
                        throw new ArgumentException($"There is already a schedule with the name '{schedule.Name}'.");
                    }
                    comments.Clear();
                }
            }

            WriteSchedule(writer, schedule);
        }
예제 #2
0
 public void WriteSchedule(TextWriter writer, CronScheduleInfo schedule)
 {
     writer.WriteLine();
     WriteDescription(writer, schedule.Description);
     writer.Write(schedule.Minutes);
     writer.Write(" ");
     writer.Write(schedule.Hours);
     writer.Write(" ");
     writer.Write(schedule.DaysOfMonth);
     writer.Write(" ");
     writer.Write(schedule.Months);
     writer.Write(" ");
     writer.Write(schedule.DaysOfWeek);
     writer.Write(" ");
     writer.Write(schedule.Name);
     writer.WriteLine();
 }
예제 #3
0
        protected CronScheduleInfo ParseSchedule(string line)
        {
            line = line.Trim();
            if (line.Length == 0)
            {
                return(null);
            }

            string[] parts = line.Split(new[] { ' ', '\t' }, 6);
            if (parts.Length < 6)
            {
                throw new FormatException();
            }

            CronScheduleInfo result = new CronScheduleInfo();

            result.Minutes     = parts[0];
            result.Hours       = parts[1];
            result.DaysOfMonth = parts[2];
            result.Months      = parts[3];
            result.DaysOfWeek  = parts[4];
            result.Name        = parts[5];
            return(result);
        }
예제 #4
0
 public void UpdateSchedule(string name, CronScheduleInfo schedule, TextReader reader, TextWriter writer)
 {
     RemoveSchedule(name, reader, writer);
     WriteSchedule(writer, schedule);
 }