/// <summary> /// Schedules job extracted from user input /// (in case of incorrect format, error message should be displyed in console) /// </summary> /// <param name="lowerCaseInput">user input</param> public static void ProcessScheduleCommand(string lowerCaseInput) { try { string[] commandUserInput; ScheduleCommandData data = ParseScheduleInput(lowerCaseInput, out commandUserInput); ScheduleParams param = new ScheduleParams(data.Priority, data.Argument, commandUserInput); Job processedJob = JobResolver.Resolve(param, data.JobName); JobScheduler.ScheduleJob(processedJob); } catch (ParseCommandException ex) { Console.WriteLine(ex.Message); } }
/// <summary> /// Resolves job according to its type /// </summary> /// <param name="scheduleParams">Job initialization params</param> /// <param name="jobType">Type of job to build</param> /// <returns></returns> public static Job Resolve(ScheduleParams scheduleParams, JobType jobType) { if (scheduleParams == null) { throw new ArgumentNullException(nameof(scheduleParams)); } // TODO: use appropriate job builder according to jobType here Job newJob = null; switch (jobType) { case JobType.Sorting: var sortBuilder = new SortJobBuilder(); sortBuilder.Build(JobType.Sorting, scheduleParams.CustomArgument); sortBuilder.WithPriority(scheduleParams.Priority); newJob = sortBuilder.GetInstance(); break; case JobType.ImageProcessingContrast: var contrastBuilder = new ContrastJobBuilder(); contrastBuilder.Build(JobType.ImageProcessingContrast, scheduleParams.CustomArgument); contrastBuilder.WithPriority(scheduleParams.Priority); newJob = contrastBuilder.GetInstance(); break; case JobType.ImageProcessingBrightness: var brightnessBuilder = new BrightnessJobBuilder(); brightnessBuilder.Build(JobType.ImageProcessingBrightness, scheduleParams.CustomArgument); brightnessBuilder.WithPriority(scheduleParams.Priority); newJob = brightnessBuilder.GetInstance(); break; } return(newJob); }
//*************************************************************************** // Private Methods // private ScheduleParamsCollection ParseSchedArray(ScheduleParams[] schedParams) { ScheduleParamsCollection newParams = new ScheduleParamsCollection(); if (schedParams.Length > 0) for (int i = 0; i < schedParams.Length; i++) newParams.Add(schedParams[i]); return newParams; }
public Task ScheduleCreateOrUpdate(int id, ScheduleParams request, CancellationToken ct = default) => SendAsync(HttpMethod.Post, $"/api/schedule/config/{id}", request, ct);
public void Register(string operationName, ScheduleParams scheduleParams) { paramsIndex.AddOrUpdate(operationName, scheduleParams, (opName, sParams) => scheduleParams); }