/** * Internal function used to process folders in the dictionary. These values * usually come from the property file. It retrieves the number of files contained, whether or not * the folder contains a new file. */ private List<FolderInfo> processFolderList(Dictionary<string, string> folderList) { List<FolderInfo> toReturn = new List<FolderInfo>(); Dictionary<String, String> keywords = null; JavaScriptSerializer j = new JavaScriptSerializer(); SpiderWeb.Models.FolderInfo tempInfo; string dirName; PdfReader pdfReader = null; BufferedStream randomAccess = null; foreach (KeyValuePair<string, string> entry in folderList) { dirName = entry.Value; FileInfo tempFile = new FileInfo(dirName); tempInfo = new SpiderWeb.Models.FolderInfo(); tempInfo.folderName = dirName.Substring(dirName.LastIndexOf("\\") + 1); tempInfo.folderPath = dirName; dirName = tempFile.FullName; if (!Directory.Exists(dirName) && (dirName.ToUpper().StartsWith(this.data["DRR_DRIVE"] + ":") || dirName.StartsWith("\\\\"))) { Directory.CreateDirectory(dirName); } if (Directory.Exists(dirName)) { string[] allFiles = Directory.GetFiles(dirName, "*pdf"); tempInfo.fileCount = allFiles.Length; tempInfo.hasNewFile = false; string openDirectory, currentDirectory; foreach (string fileName in allFiles) { try { randomAccess = new BufferedStream(new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite), 12288); pdfReader = new PdfReader(randomAccess, null); if (pdfReader.Info.ContainsKey("Keywords")) { keywords = j.Deserialize<Dictionary<String, String>>(getValue(pdfReader.Info, "Keywords")); //keywords = getKeywords(output); /*if (pdfDocument.Metadata != null && pdfDocument.Metadata["Keywords"] != null && pdfDocument.Metadata["Keywords"].ToString().Length > 0) { keywords = j.Deserialize<Dictionary<String, String>>((string)pdfDocument.Metadata["Keywords"]);*/ openDirectory = getValue(keywords, IndividualRFileInfo.OPEN_DIRECTORY); currentDirectory = getValue(keywords, IndividualRFileInfo.CURRENT_DIRECTORY); if (openDirectory != currentDirectory || openDirectory.Length == 0) { tempInfo.hasNewFile = true; break; } } else { tempInfo.hasNewFile = true; break; } } catch (Exception e) { Console.WriteLine(e.StackTrace); } finally { randomAccess.Close(); pdfReader.Close(); pdfReader.Dispose(); pdfReader = null; } } // allFolders[dirName] = tempInfo; } dirName = dirName.Substring(dirName.LastIndexOf("\\") + 1); tempInfo.alias = entry.Key; toReturn.Add(tempInfo); } return toReturn; }
/** * Internal function used to process folders in the dictionary. These values * usually come from the property file. It retrieves the number of files contained, whether or not * the folder contains a new file. */ private List<FolderInfo> processFolderListNotFiles(Dictionary<string, string> folderList) { List<FolderInfo> toReturn = new List<FolderInfo>(); JavaScriptSerializer j = new JavaScriptSerializer(); SpiderWeb.Models.FolderInfo tempInfo; string dirName; foreach (KeyValuePair<string, string> entry in folderList) { dirName = entry.Value; FileInfo tempFile = new FileInfo(dirName); tempInfo = new SpiderWeb.Models.FolderInfo(); tempInfo.folderName = dirName.Substring(dirName.LastIndexOf("\\") + 1); tempInfo.folderPath = dirName; dirName = tempFile.FullName; if (!Directory.Exists(dirName) && (dirName.ToUpper().StartsWith(this.data["DRR_DRIVE"] + ":") || dirName.StartsWith("\\\\"))) { Directory.CreateDirectory(dirName); } if (Directory.Exists(dirName)) { tempInfo.hasNewFile = false; } dirName = dirName.Substring(dirName.LastIndexOf("\\") + 1); tempInfo.alias = entry.Key; toReturn.Add(tempInfo); } return toReturn; }