public override void Execute(MonitorWorkItem workItem, ITaskExecutionContext context) { MonitorConfiguration.MonitorFoldersConfiguration.Folder[] enabledFolders = workItem.Configuration.MonitorFolders.GetEnabledFolders(); context.Log.Message("Folder(s) monitored:\r\n{0}", new object[] { string.Join(Environment.NewLine, from x in (IEnumerable <MonitorConfiguration.MonitorFoldersConfiguration.Folder>) enabledFolders select string.Concat(" - ", x.ToString())) }); MonitorConfiguration.MonitorFoldersConfiguration.Folder[] folderArray = enabledFolders; for (int i = 0; i < (int)folderArray.Length; i++) { MonitorConfiguration.MonitorFoldersConfiguration.Folder folder = folderArray[i]; IEnumerable <string> strs = Directory.EnumerateFiles(folder.Path, folder.SearchPattern ?? "*", (folder.IncludeSubDirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly)); MonitorConfiguration.MonitorFoldersConfiguration.FileCriteria criteria = folder.Criteria; string[] array = strs.Where <string>(new Func <string, bool>(criteria.IsSatisfiedBy)).ToArray <string>(); if (array.Length != 0) { context.Log.Message("{0} file(s) matched by '{1}'.", new object[] { (int)array.Length, folder }); StringBuilder stringBuilder = new StringBuilder(); stringBuilder.AppendFormat("{0} file(s) matching criteria: '{1}'.", (int)array.Length, folder.Criteria); stringBuilder.AppendLine(); stringBuilder.AppendLine(string.Join(Environment.NewLine, from x in array.Take <string>(10) select string.Format(" - {0}", x))); if ((int)array.Length > 10) { stringBuilder.AppendLine("..."); } workItem.Add(Time.UtcNow, this.Name(), stringBuilder.ToString(), new Target[] { folder.Target }); } } }
public void Remove(MonitorConfiguration.MonitorFoldersConfiguration.Folder folder) { if (folder == null) { throw new ArgumentNullException("folder"); } this.EnsureFolders(); MonitorConfiguration.MonitorFoldersConfiguration.Folder[] folders = this.Folders; MonitorConfiguration.MonitorFoldersConfiguration.Folder[] folderArray = new MonitorConfiguration.MonitorFoldersConfiguration.Folder[] { folder }; this.Folders = ((IEnumerable <MonitorConfiguration.MonitorFoldersConfiguration.Folder>)folders).Except <MonitorConfiguration.MonitorFoldersConfiguration.Folder>((IEnumerable <MonitorConfiguration.MonitorFoldersConfiguration.Folder>)folderArray).ToArray <MonitorConfiguration.MonitorFoldersConfiguration.Folder>(); }
public void Add(Func <MonitorConfiguration.MonitorFoldersConfiguration.Folder, MonitorConfiguration.MonitorFoldersConfiguration.FileCriterias, MonitorConfiguration.MonitorFoldersConfiguration.FileCriteria> folder) { if (folder == null) { throw new ArgumentNullException("folder"); } MonitorConfiguration.MonitorFoldersConfiguration.Folder folder1 = new MonitorConfiguration.MonitorFoldersConfiguration.Folder() { //Criteria = folder(folder1, new MonitorConfiguration.MonitorFoldersConfiguration.FileCriterias()) }; this.EnsureFolders(); MonitorConfiguration.MonitorFoldersConfiguration.Folder[] folders = this.Folders; MonitorConfiguration.MonitorFoldersConfiguration.Folder[] folderArray = new MonitorConfiguration.MonitorFoldersConfiguration.Folder[] { folder1 }; this.Folders = ((IEnumerable <MonitorConfiguration.MonitorFoldersConfiguration.Folder>)folders).Append <MonitorConfiguration.MonitorFoldersConfiguration.Folder>(folderArray).ToArray <MonitorConfiguration.MonitorFoldersConfiguration.Folder>(); }