示例#1
0
        /// <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);
            }
        }
示例#2
0
        /// <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);
        }
示例#3
0
 //***************************************************************************
 // 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;
 }
示例#4
0
 public Task ScheduleCreateOrUpdate(int id, ScheduleParams request, CancellationToken ct = default)
 => SendAsync(HttpMethod.Post, $"/api/schedule/config/{id}", request, ct);
示例#5
0
 public void Register(string operationName, ScheduleParams scheduleParams)
 {
     paramsIndex.AddOrUpdate(operationName, scheduleParams, (opName, sParams) => scheduleParams);
 }