/// <summary> /// Initializes the data pairs. /// /// </summary> /// <param name="root">The root path.</param><exception cref="T:System.Exception"><c>Exception</c>.</exception> protected virtual void InitializeDataPairs(string root) { if (!Directory.Exists(root)) { dataPairs = new DataPair[0]; Trace.TraceWarning("Directoty does not exist " + root); } else { List <DataPair> result = new List <DataPair>(); try { var rootDirectory = new DirectoryInfo(root); var directories = new List <DirectoryInfo>(rootDirectory.GetDirectories()); directories.Sort(new FileSystemInfoComparer <DirectoryInfo>()); var files = new List <FileInfo>(rootDirectory.GetFiles()); files.Sort(new FileSystemInfoComparer <FileInfo>()); foreach (var file in files.Where(file => file != null)) { if (SerializationUtils.IsItemSerialization(file.FullName)) { DirectoryInfo itemDirectory = null; var dirName = file.FullName.Substring(0, file.FullName.Length - ".item".Length); foreach (var dir in directories.Where(d => string.Compare(d.FullName, dirName, true) == 0)) { itemDirectory = dir; directories.Remove(dir); break; } if (itemDirectory != null) { var dataItem = new QuickContentDataItem(this.root, this.root.Length == file.Directory.FullName.Length ? string.Empty : file.Directory.FullName.Substring(this.root.Length), file.Name); if (IsAllowed(dataItem)) { result.Add(new DataPair(itemDirectory, dataItem)); } } else { var dataItem = new QuickContentDataItem(this.root, this.root.Length == file.Directory.FullName.Length ? string.Empty : file.Directory.FullName.Substring(this.root.Length), file.Name); if (IsAllowed(dataItem)) { result.Add(new DataPair(file, dataItem)); } } } else { var dataItem = ItemUtils.GetFileSystemDataItem(this.root, file); if (IsAllowed(dataItem)) { result.Add(new DataPair(file, dataItem)); } } } result.AddRange( from directory in directories let dataItem = Update.Utils.ItemUtils.GetSystemFolderDataItem(this.root, directory) where IsAllowed(dataItem) select new DataPair(directory, dataItem)); } catch (Exception ex) { Trace.TraceError("Can't initialize provider. Exception: " + ex); throw ex; } dataPairs = result.ToArray(); } }
/// <summary> /// Initializes the data pairs. /// /// </summary> /// <param name="root">The root path.</param><exception cref="T:System.Exception"><c>Exception</c>.</exception> protected virtual void InitializeDataPairs(string root) { if (!Directory.Exists(root)) { this.dataPairs = new FileSystemProvider.FileSystemDataIterator.DataPair[0]; Trace.TraceWarning("Directoty does not exist " + root); } else { List <FileSystemProvider.FileSystemDataIterator.DataPair> list1 = new List <FileSystemProvider.FileSystemDataIterator.DataPair>(); try { DirectoryInfo directoryInfo1 = new DirectoryInfo(root); List <DirectoryInfo> list2 = new List <DirectoryInfo>((IEnumerable <DirectoryInfo>)directoryInfo1.GetDirectories()); list2.Sort((IComparer <DirectoryInfo>) new FileSystemProvider.FileSystemDataIterator.FileSystemInfoComparer <DirectoryInfo>()); List <FileInfo> list3 = new List <FileInfo>((IEnumerable <FileInfo>)directoryInfo1.GetFiles()); list3.Sort((IComparer <FileInfo>) new FileSystemProvider.FileSystemDataIterator.FileSystemInfoComparer <FileInfo>()); foreach (FileInfo file in list3) { if (file != null) { if (SerializationUtils.IsItemSerialization(file.FullName)) { DirectoryInfo directoryInfo2 = (DirectoryInfo)null; string strB = file.FullName.Substring(0, file.FullName.Length - ".item".Length); foreach (DirectoryInfo directoryInfo3 in list2) { if (string.Compare(directoryInfo3.FullName, strB, true) == 0) { directoryInfo2 = directoryInfo3; list2.Remove(directoryInfo3); break; } } if (directoryInfo2 != null) { IDataItem dataItem = (IDataItem) new QuickContentDataItem(this.root, this.root.Length == file.Directory.FullName.Length ? string.Empty : file.Directory.FullName.Substring(this.root.Length), file.Name); if (this.IsAllowed(dataItem)) { list1.Add(new FileSystemProvider.FileSystemDataIterator.DataPair((FileSystemInfo)directoryInfo2, dataItem)); } } else { IDataItem dataItem = (IDataItem) new QuickContentDataItem(this.root, this.root.Length == file.Directory.FullName.Length ? string.Empty : file.Directory.FullName.Substring(this.root.Length), file.Name); if (this.IsAllowed(dataItem)) { list1.Add(new FileSystemProvider.FileSystemDataIterator.DataPair((FileSystemInfo)file, dataItem)); } } } else { IDataItem dataItem = (IDataItem)ItemUtils.GetFileSystemDataItem(this.root, file); if (this.IsAllowed(dataItem)) { list1.Add(new FileSystemProvider.FileSystemDataIterator.DataPair((FileSystemInfo)file, dataItem)); } } } } foreach (DirectoryInfo directory in list2) { IDataItem dataItem = (IDataItem)Update.Utils.ItemUtils.GetSystemFolderDataItem(this.root, directory); if (this.IsAllowed(dataItem)) { list1.Add(new FileSystemProvider.FileSystemDataIterator.DataPair((FileSystemInfo)directory, dataItem)); } } } catch (Exception ex) { Trace.TraceError("Can't initialize provider. Exception: " + (object)ex); throw ex; } this.dataPairs = list1.ToArray(); } }