예제 #1
0
        /// <summary>
        /// 克隆
        /// </summary>
        /// <returns>查询SQL副本</returns>
        public override object Clone()
        {
            var newObject = base.Clone() as SelectSqlStatement;

            if (SelectList != null)
            {
                newObject.SelectList = SelectList.Clone() as SelectFieldListStatement;
            }
            if (From != null)
            {
                newObject.From = From.Clone() as From;
            }
            if (JoinCondition != null)
            {
                newObject.JoinCondition = JoinCondition.Clone() as JoinConditionStatement;
            }
            if (OrderByCondition != null)
            {
                newObject.OrderByCondition = OrderByCondition.Clone() as ConditionStatement;
            }
            if (FilterCondition != null)
            {
                newObject.FilterCondition = FilterCondition.Clone() as FilterConditionStatement;
            }
            if (MainFromItem != null)
            {
                newObject.MainFromItem = MainFromItem.Clone() as FromItem;
            }

            newObject.AliasCount            = AliasCount;
            newObject.DictFieldAliasMapping = new Dictionary <string, string>();
            foreach (KeyValuePair <string, string> map in DictFieldAliasMapping)
            {
                newObject.DictFieldAliasMapping.Add(map.Key, map.Value);
            }

            return(newObject);
        }
예제 #2
0
        /// <summary>
        /// Return a filter equivalent to current basic filtering settings
        /// </summary>
        /// <returns></returns>
        public IEnumerable <Filter> GenerateEquivalentFilter()
        {
            var results = new List <Filter>();

            if (string.IsNullOrEmpty(_filteringFilterCondition.FilterText))
            {
                results.Add(new Filter("Include all", false, new FilterCondition("!",
                                                                                 ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.IsOrphaned))
                {
                    InvertResults = true
                }));
            }
            else
            {
                results.Add(new Filter(_filteringFilterCondition.FilterText, false,
                                       (FilterCondition)_filteringFilterCondition.Clone()));
            }

            if (_settings.Settings.FilterHideMicrosoft)
            {
                results.Add(new Filter("Published by Microsoft", true, new FilterCondition("Microsoft",
                                                                                           ComparisonMethod.Contains, nameof(ApplicationUninstallerEntry.Publisher))));
            }

            if (!_settings.Settings.FilterShowStoreApps)
            {
                results.Add(new Filter("Store Apps", true, new FilterCondition(nameof(UninstallerType.StoreApp),
                                                                               ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.UninstallerKind))));
            }

            if (!_settings.Settings.FilterShowWinFeatures)
            {
                results.Add(new Filter("Windows Features", true,
                                       new FilterCondition(nameof(UninstallerType.WindowsFeature),
                                                           ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.UninstallerKind))));
            }

            if (!_settings.Settings.AdvancedDisplayOrphans)
            {
                results.Add(new Filter("Orphaned apps", true, new FilterCondition(true.ToString(),
                                                                                  ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.IsOrphaned))));
            }

            if (!_settings.Settings.FilterShowProtected)
            {
                results.Add(new Filter("Protected apps", true, new FilterCondition(true.ToString(),
                                                                                   ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.IsProtected))));
            }

            if (!_settings.Settings.FilterShowSystemComponents)
            {
                results.Add(new Filter("System Components", true, new FilterCondition(true.ToString(),
                                                                                      ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.SystemComponent))));
            }

            if (!_settings.Settings.FilterShowUpdates)
            {
                results.Add(new Filter("Updates", true, new FilterCondition(true.ToString(),
                                                                            ComparisonMethod.Equals, nameof(ApplicationUninstallerEntry.IsUpdate))));
            }

            // TODO Better detection, can lead to bugs down the line
            if (!_settings.Settings.FilterShowTweaks)
            {
                results.Add(new Filter("Tweaks", true, new FilterCondition(@"\Resources\Scripts\Tweak",
                                                                           ComparisonMethod.Contains, nameof(ApplicationUninstallerEntry.UninstallString))));
            }

            return(results);
        }