Ejemplo n.º 1
0
        public override void SetDatabaseObject(IActivateItems activator, PermissionWindow databaseObject)
        {
            base.SetDatabaseObject(activator, databaseObject);
            _permissionWindow = databaseObject;

            var periods      = _permissionWindow.PermissionWindowPeriods;
            var periodsByDay = new Dictionary <int, List <PermissionWindowPeriod> >();

            foreach (var period in periods)
            {
                if (!periodsByDay.ContainsKey(period.DayOfWeek))
                {
                    periodsByDay.Add(period.DayOfWeek, new List <PermissionWindowPeriod>());
                }

                periodsByDay[period.DayOfWeek].Add(period);
            }

            var textBoxes = new[] { tbSunday, tbMonday, tbTuesday, tbWednesday, tbThursday, tbFriday, tbSaturday };

            for (var i = 0; i < 7; ++i)
            {
                PopulatePeriodTextBoxForDay(textBoxes[i], i, periodsByDay);
            }

            CommonFunctionality.AddHelp(tbMonday, "IPermissionWindow.PermissionWindowPeriods");
        }
Ejemplo n.º 2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="permissionWindow">May be null, then allows downloading of CacheProgress with no associated PermissionWindow</param>
 /// <param name="repository"></param>
 /// <param name="pipelineEngineExecutionStrategy">Multiple CacheProgresses will result in multiple PipelineEngines, this strategy determines how these should be run, e.g. Round-robin, Async</param>
 public PermissionWindowCacheDownloader(IPermissionWindow permissionWindow, ICatalogueRepository repository, IMultiPipelineEngineExecutionStrategy pipelineEngineExecutionStrategy)
 {
     _permissionWindow   = permissionWindow;
     _cacheProgressItems = _permissionWindow.CacheProgresses.ToList();
     _repository         = repository;
     _pipelineEngineExecutionStrategy = pipelineEngineExecutionStrategy;
 }
        /// <summary>
        /// Overload with specific cache items to download for this permission window
        /// </summary>
        /// <param name="permissionWindow"></param>
        /// <param name="cacheProgressItems"></param>
        /// <param name="pipelineEngineExecutionStrategy"></param>
        public PermissionWindowCacheDownloader(IPermissionWindow permissionWindow, List <ICacheProgress> cacheProgressItems, IMultiPipelineEngineExecutionStrategy pipelineEngineExecutionStrategy)
        {
            _permissionWindow = permissionWindow;

            CheckCacheProgressesUseCorrectPermissionWindow(cacheProgressItems);
            _cacheProgressItems = cacheProgressItems;

            _pipelineEngineExecutionStrategy = pipelineEngineExecutionStrategy;
        }
Ejemplo n.º 4
0
        /// <summary>
        /// Class for helping you to construct a caching pipeline engine instance with the correct context and initialization objects
        /// </summary>
        /// <param name="cacheProgress">The cache that will be run</param>
        /// <param name="ignorePermissionWindow">Set to true to ignore the CacheProgress.PermissionWindow (if any)</param>
        /// <param name="providerIfAny">The strategy for figuring out what dates to load the cache with e.g. failed cache fetches or new jobs from head of que?</param>
        /// <param name="throwIfNoPipeline"></param>
        public CachingPipelineUseCase(ICacheProgress cacheProgress, bool ignorePermissionWindow = false, ICacheFetchRequestProvider providerIfAny = null, bool throwIfNoPipeline = true)
        {
            _cacheProgress = cacheProgress;
            _providerIfAny = providerIfAny;

            //if there is no permission window or we are ignoring it
            if (ignorePermissionWindow || cacheProgress.PermissionWindow_ID == null)
            {
                _permissionWindow = new SpontaneouslyInventedPermissionWindow(_cacheProgress);
            }
            else
            {
                _permissionWindow = cacheProgress.PermissionWindow;
            }

            if (_providerIfAny == null)
            {
                _providerIfAny = new CacheFetchRequestProvider(_cacheProgress)
                {
                    PermissionWindow = _permissionWindow
                };
            }

            _pipeline = _cacheProgress.Pipeline;

            if (_pipeline == null && throwIfNoPipeline)
            {
                throw new Exception("CacheProgress " + _cacheProgress + " does not have a Pipeline configured on it");
            }

            AddInitializationObject(_cacheProgress.Repository);

            // Get the LoadDirectory for the engine initialization
            var lmd = _cacheProgress.LoadProgress.LoadMetadata;

            if (string.IsNullOrWhiteSpace(lmd.LocationOfFlatFiles))
            {
                if (throwIfNoPipeline)
                {
                    throw new Exception("LoadMetadata '" + lmd + "' does not have a Load Directory specified, cannot create ProcessingPipelineUseCase without one");
                }
            }
            else
            {
                AddInitializationObject(new LoadDirectory(lmd.LocationOfFlatFiles));
            }

            AddInitializationObject(_providerIfAny);
            AddInitializationObject(_permissionWindow);

            GenerateContext();
        }
Ejemplo n.º 5
0
 public void PreInitialize(IPermissionWindow value, IDataLoadEventListener listener)
 {
     PermissionWindow = value;
 }