Esempio n. 1
0
        // 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);
            }
        }
Esempio n. 2
0
        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);
            }
        }