private void SaveClicked(object sender, RoutedEventArgs e)
        {
            progressBarCircular.Visibility = Visibility.Visible;
            AnalyticRuleSettingsPersistency persistency =
                new AnalyticRuleSettingsPersistency(OnPersisted, OnError);

            persistency.Update((
                                   (AnalyticRuleSettingsViewModel)DataContext).Model);
        }
        private void OnFiltersChanged(object sender, EventArgs e)
        {
            AnalyticRuleSettingsPersistency persistency =
                new AnalyticRuleSettingsPersistency(Retrieved, OnError);

            if (controlFiltering.RuleType == null &&
                controlFiltering.Family == null &&
                controlFiltering.Engine == null)
            {
                persistency.FetchAll();
            }
            else if (controlFiltering.RuleType != null &&
                     controlFiltering.Family != null &&
                     controlFiltering.Engine != null)
            {
                AnalyticRuleType ruleType   = controlFiltering.RuleType.Model;
                EngineFamilyType familyType = controlFiltering.Family.Model;
                EngineType       engineType = controlFiltering.Engine.Model;
                persistency.FetchAllForEngine(ruleType, familyType, engineType);
            }
            else if (controlFiltering.RuleType != null &&
                     controlFiltering.Family != null &&
                     controlFiltering.Engine == null)
            {
                AnalyticRuleType ruleType   = controlFiltering.RuleType.Model;
                EngineFamilyType familyType = controlFiltering.Family.Model;
                persistency.FetchAllForEngineFamily(ruleType, familyType);
            }
            else if (controlFiltering.RuleType != null &&
                     controlFiltering.Family == null &&
                     controlFiltering.Engine == null)
            {
                AnalyticRuleType ruleType = controlFiltering.RuleType.Model;
                persistency.FetchAllForRuleType(ruleType);
            }
            else if (controlFiltering.RuleType == null &&
                     controlFiltering.Family != null &&
                     controlFiltering.Engine != null)
            {
                EngineFamilyType familyType = controlFiltering.Family.Model;
                EngineType       engineType = controlFiltering.Engine.Model;
                persistency.FetchAllRulesForEngine(familyType, engineType);
            }
            else if (controlFiltering.RuleType == null &&
                     controlFiltering.Family != null &&
                     controlFiltering.Engine == null)
            {
                EngineFamilyType familyType = controlFiltering.Family.Model;
                persistency.FetchAllRulesForEngineFamily(familyType);
            }
            else
            {
                collection.Clear();
            }
        }