// Get disk names from config setting. public List <string> GetConfigDiskNames(FolderConfigurationSection configSection = null) { try { configSection = configSection ?? ConfigurationManager.GetSection("folderSettings") as FolderConfigurationSection; List <string> disks = new List <string>(); foreach (FolderConfig setting in configSection.Settings) { string dName = setting.Path.Split(':')[0]; if (!Regex.IsMatch(dName, @"^[a-zA-Z]$")) { LogHelper.TraceLog("Invalid path: [" + setting.Path + "]", LogType.Error); } else if (!disks.Contains(dName)) { disks.Add(dName); } } return(disks); } catch (Exception ex) { LogHelper.TraceLog(MethodBase.GetCurrentMethod(), ex); return(null); } }
public ValidPathInfo(FolderConfigurationSection configSection = null) { var dNames = new List <string>(); var validDirs = new List <ValidDirInfo>(); try { configSection = configSection ?? ConfigurationManager.GetSection("folderSettings") as FolderConfigurationSection; string defaultPattern = Utilities.CON_DefaultPathPattern.Equals("") ? ".*" : Utilities.CON_DefaultPathPattern; foreach (FolderConfig setting in configSection.Settings) { // find valid disks string dName = setting.Path.Split(':')[0]; if (!Regex.IsMatch(dName, @"^[a-zA-Z]$")) { LogHelper.TraceLog("Invalid path: [" + setting.Path + "]", LogType.Error); } else if (!dNames.Contains(dName, StringComparer.OrdinalIgnoreCase)) { dNames.Add(dName); } // get directories info from config try { var dir = new DirectoryInfo(setting.Path); if (dir.Exists) { int days = ShareFunctions.GetIntValueNotNull(setting.RemainDays); days = (days > 0) ? days : Utilities.CON_DefaultRemainDays; if (days <= 0) { days = Utilities.CON_DefaultSetDays; // 7; LogHelper.TraceLog("Invalid DefaultRemainDays value in config file. Set as " + days, LogType.Error); } string aPattern = ShareFunctions.GetStringValue(setting.Pattern); aPattern = aPattern.Equals("") ? defaultPattern : aPattern; var vDir = new ValidDirInfo(dir, days, aPattern); validDirs.Add(vDir); } else { throw new System.NotSupportedException(); } } catch (System.NotSupportedException) { LogHelper.TraceLog("Invalid path: [" + setting.Path + "]", LogType.Error); continue; } } this.disks = GetValidDisksInfo(dNames); // validates directories and all subdirectories var resultDirs = new List <ValidDirInfo>(); foreach (ValidDirInfo vd in validDirs) // each Directories { if (this.disks.ContainsKey(vd.DirInfo.Root.Name.Substring(0, 1))) { // get all the subdirectories List <string> mDirs = Directory.EnumerateDirectories(vd.DirInfo.FullName, "*", SearchOption.AllDirectories).ToList(); // add parent path itself mDirs.Add(vd.DirInfo.FullName); // filter with regular expression foreach (string d in mDirs) { if (!Regex.IsMatch(d, vd.Pattern, RegexOptions.IgnoreCase)) { continue; } var subDir = new ValidDirInfo(new DirectoryInfo(d), vd.RemainDays, vd.Pattern); resultDirs.Add(subDir); } } } this.validDirs = resultDirs; } catch (Exception ex) { LogHelper.TraceLog(ex.ToString(), LogType.Exception); } }