Example #1
0
        public bool Validate(SimpleTask task)
        {
            bool isValid             = false;
            bool isCheckerListLocked = true;

            do
            {
                if (Monitor.TryEnter(TheBestTaskNameCheckerInTheWorld.Names, 0))
                {
                    isCheckerListLocked = true;
                    try
                    {
                        lock (TheBestTaskNameCheckerInTheWorld.Names)
                        {
                            isValid = !TheBestTaskNameCheckerInTheWorld.Check(task.Name);
                            if (isValid)
                            {
                                TheBestTaskNameCheckerInTheWorld.Names.Add(task.Name);
                            }
                        }
                    }
                    finally
                    {
                        Monitor.Exit(TheBestTaskNameCheckerInTheWorld.Names);
                        isCheckerListLocked = false;
                    }
                }
            } while (isCheckerListLocked);

            return(isValid);
        }
Example #2
0
        public SimpleTasksController(ISimpleTaskRepository simpleTaskRepository)
        {
            _simpleTaskRepository = simpleTaskRepository;

            _mapperConfiguration = new MapperConfiguration(cfg =>
            {
                cfg.CreateMap <SimpleTask, SimpleTaskDto>();
                cfg.CreateMap <SimpleTaskDto, SimpleTask>();
                cfg.CreateMap <SimpleTaskBaseDto, SimpleTask>()
                .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.Name))
                .ForMember(dest => dest.CreatedBy, opt => opt.MapFrom(src => src.CreatedBy))
                .ForMember(dest => dest.Status, opt => opt.MapFrom(src => Status.Open))
                .ForMember(dest => dest.CreationDateTime, opt => opt.MapFrom(src => DateTime.Now));
            });

            _iMapper = _mapperConfiguration.CreateMapper();
            _numberOfUpsertOperations = _simpleTaskRepository.GetAll().Sum(x => x.NumberOfUpdates);
            _validatorService         = new ValidatorService();

            var taskNames = _simpleTaskRepository.GetAll().Select(x => x.Name);

            TheBestTaskNameCheckerInTheWorld.SyncNames(taskNames);

            // maybe this should be a singleton...?
            if (_tasksInProgress == null)
            {
                _tasksInProgress = new HashSet <string>();
            }
        }
Example #3
0
        public ValidatorService()
        {
            if (TheBestTaskNameCheckerInTheWorld.Names == null || TheBestTaskNameCheckerInTheWorld.Names.Count == 0)
            {
                TheBestTaskNameCheckerInTheWorld.Seed();
            }

            if (_simpleTasksQueue == null)
            {
                _simpleTasksQueue = new HashSet <SimpleTask>();
            }
        }