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"); }
/// <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; }
/// <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(); }
public void PreInitialize(IPermissionWindow value, IDataLoadEventListener listener) { PermissionWindow = value; }