/// <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();
     }
 }
Example #2
0
 /// <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();
     }
 }