예제 #1
0
        void RuleSetOnValidationCompleted(object sender, ValidationCompletedEventArgs args)
        {
            Validator.RuleSet.ValidationCompleted -= RuleSetOnValidationCompleted;
            var ruleSetValidationResult = new RuleSetValidationResult();
            var validationException     = args.Exception;

            if (validationException != null)
            {
                ruleSetValidationResult = validationException.Result;
            }
            foreach (var modelMemberPasswordScore in _modelMemberPasswordScores)
            {
                var password      = View.ObjectTypeInfo.FindMember(modelMemberPasswordScore.Name).GetValue(View.CurrentObject);
                var passwordScore = PasswordAdvisor.CheckStrength(password + "");
                if (passwordScore < modelMemberPasswordScore.PasswordScore)
                {
                    var messageTemplate  = String.Format(CaptionHelper.GetLocalizedText(XpandValidationModule.XpandValidation, "PasswordScoreFailed"), modelMemberPasswordScore.Name, passwordScore, modelMemberPasswordScore.PasswordScore);
                    var validationResult = Validator.RuleSet.NewRuleSetValidationMessageResult(ObjectSpace, messageTemplate, ContextIdentifier.Save, View.CurrentObject, View.ObjectTypeInfo.Type);
                    ruleSetValidationResult.AddResult(validationResult.Results.First());
                    args.Handled = true;
                }
            }
            if (args.Handled)
            {
                throw validationException ?? new ValidationException(ruleSetValidationResult);
            }
        }
예제 #2
0
 protected override void OnValidationFail(ValidationCompletedEventArgs validationCompletedEventArgs) {
     base.OnValidationFail(validationCompletedEventArgs);
     if (!validationCompletedEventArgs.Handled) {
         validationCompletedEventArgs.Handled = true;
         var ruleSetValidationResult = new RuleSetValidationResult();
         foreach (var result in validationCompletedEventArgs.Exception.Result.Results.Where(item => GetRuleType(item.Rule)==RuleType.Critical)) {
             ruleSetValidationResult.AddResult(result);
         }
         throw new ValidationException(ruleSetValidationResult.GetFormattedErrorMessage(), ruleSetValidationResult);
     }
 }
예제 #3
0
 protected override void OnValidationFail(ValidationCompletedEventArgs validationCompletedEventArgs)
 {
     base.OnValidationFail(validationCompletedEventArgs);
     if (!validationCompletedEventArgs.Handled)
     {
         validationCompletedEventArgs.Handled = true;
         var ruleSetValidationResult = new RuleSetValidationResult();
         foreach (var result in validationCompletedEventArgs.Exception.Result.Results.Where(item => GetRuleType(item.Rule) == Validation.RuleType.RuleType.Critical))
         {
             ruleSetValidationResult.AddResult(result);
         }
         throw new ValidationException(ruleSetValidationResult.GetFormattedErrorMessage(), ruleSetValidationResult);
     }
 }
예제 #4
0
        void SimpleActionOnExecute(object sender, SimpleActionExecuteEventArgs simpleActionExecuteEventArgs)
        {
            if (((ActionBase)sender).Id == "Throw Exception")
            {
                throw new Exception("Exception was thrown");
            }

            var          result          = new RuleSetValidationResult();
            const string messageTemplate = "This exception will not be logged see FeatureCenterWindowsFormsModule ExceptionHandlingWinModuleOnCustomHandleException method ";

            result.AddResult(new RuleSetValidationResultItem(View.CurrentObject, ContextIdentifier.Delete, null,
                                                             new RuleValidationResult(null, this, ValidationState.Invalid,
                                                                                      messageTemplate)));

            throw new ValidationException(messageTemplate, result);
        }
예제 #5
0
 private void ObjectSpace_OnObjectDeleting(object sender, ObjectsManipulatingEventArgs e)
 {
     foreach (var o in e.Objects)
     {
         var count = ((XPObjectSpace)ObjectSpace).Session.CollectReferencingObjects(o).Count;
         if (count > 0)
         {
             var result          = new RuleSetValidationResult();
             var messageTemplate = "Cannot be deleted " + count + " references found";
             result.AddResult(new RuleSetValidationResultItem(o, ContextIdentifier.Delete, null,
                                                              new RuleValidationResult(null, this, ValidationState.Invalid,
                                                                                       messageTemplate)));
             throw new ValidationException(messageTemplate, result);
         }
     }
 }
예제 #6
0
 private void ObjectSpace_OnObjectDeleting(object sender, ObjectsManipulatingEventArgs e)
 {
     foreach (var o in e.Objects)
     {
         var count = ObjectSpace.Session.CollectReferencingObjects(o).Count;
         if (count > 0)
         {
             var result = new RuleSetValidationResult();
             var messageTemplate = "Cannot be deleted " + count + " referemces found";
             result.AddResult(new RuleSetValidationResultItem(o, ContextIdentifier.Delete, null,
                                                              new RuleValidationResult(null, this, false,
                                                                                       messageTemplate)));
             throw new ValidationException(messageTemplate, result);
         }    
     }
     
 }
예제 #7
0
 void RuleSetOnValidationCompleted(object sender, ValidationCompletedEventArgs args) {
     Validator.RuleSet.ValidationCompleted -= RuleSetOnValidationCompleted;
     var ruleSetValidationResult = new RuleSetValidationResult();
     var validationException = args.Exception;
     if (validationException != null)
         ruleSetValidationResult = validationException.Result;
     foreach (var modelMemberPasswordScore in _modelMemberPasswordScores) {
         var password = View.ObjectTypeInfo.FindMember(modelMemberPasswordScore.Name).GetValue(View.CurrentObject);
         var passwordScore = PasswordAdvisor.CheckStrength(password +"");
         if (passwordScore<modelMemberPasswordScore.PasswordScore) {
             var messageTemplate = String.Format(CaptionHelper.GetLocalizedText(XpandValidationModule.XpandValidation, "PasswordScoreFailed"), modelMemberPasswordScore.Name, passwordScore, modelMemberPasswordScore.PasswordScore);
             var ruleValidationResult = new RuleValidationResult(null, View.CurrentObject, ValidationState.Invalid, messageTemplate);
             ruleSetValidationResult.AddResult(new RuleSetValidationResultItem(View.CurrentObject, ContextIdentifier.Save, null,ruleValidationResult));
             args.Handled = true;
         }
     }
     if (args.Handled)
         throw validationException??new ValidationException(ruleSetValidationResult);
 }
예제 #8
0
        /// <summary>
        /// Fires after the next button has been clicked
        /// </summary>
        private bool Validate(XafWizardPage page) {
            RuleValidationResult result;
            var validationResults = new RuleSetValidationResult();
            var usedProperties = new List<string>();
            var resultsHighlightControllers = new List<ResultsHighlightController> { Frame.GetController<ResultsHighlightController>() };

            foreach (var item in page.View.GetItems<PropertyEditor>()) {
                if (item.Control != null && ((Control)item.Control).Visible) {
                    usedProperties.Add(item.PropertyName);
                    if (item is ListPropertyEditor) {
                        usedProperties.AddRange(((ListPropertyEditor)item).ListView.Editor.RequiredProperties.Select(property => property.TrimEnd('!')));

                        var nestedController = ((ListPropertyEditor)item).Frame.GetController<ResultsHighlightController>();
                        if (nestedController != null) {
                            resultsHighlightControllers.Add(nestedController);
                        }
                    }
                }
            }

            var modifiedObjects = page.View.ObjectTypeInfo.IsPersistent ? ObjectSpace.ModifiedObjects : new List<object> { page.View.CurrentObject };
            foreach (var obj in modifiedObjects) {
                IList<IRule> rules = Validator.RuleSet.GetRules(obj, ContextIdentifier.Save);
                foreach (IRule rule in rules) {
                    bool ruleInUse = rule.UsedProperties.Any(property => usedProperties.Contains(property) || !string.IsNullOrEmpty(usedProperties.Where(p => p.EndsWith(String.Format(".{0}", property))).FirstOrDefault()));

                    string reason;
                    if (ruleInUse && RuleSet.NeedToValidateRule(rule, obj, out reason)) {
                        result = rule.Validate(obj);

                        if (result.State == ValidationState.Invalid) {
                            validationResults.AddResult(new RuleSetValidationResultItem(obj, ContextIdentifier.Save, rule, result));
                        }
                    }
                }
            }

            foreach (ResultsHighlightController resultsHighlightController in resultsHighlightControllers) {
                resultsHighlightController.ClearHighlighting();
                if (validationResults.State == ValidationState.Invalid) {
                    resultsHighlightController.HighlightResults(validationResults);
                }
            }

            return validationResults.State == ValidationState.Valid;
        }
예제 #9
0
        /// <summary>
        /// Fires after the next button has been clicked
        /// </summary>
        private bool Validate(XafWizardPage page)
        {
            RuleValidationResult result;
            var validationResults           = new RuleSetValidationResult();
            var usedProperties              = new List <string>();
            var resultsHighlightControllers = new List <ResultsHighlightController> {
                Frame.GetController <ResultsHighlightController>()
            };

            foreach (var item in page.View.GetItems <PropertyEditor>())
            {
                if (item.Control != null && ((Control)item.Control).Visible)
                {
                    usedProperties.Add(item.PropertyName);
                    if (item is ListPropertyEditor)
                    {
                        usedProperties.AddRange(((ListPropertyEditor)item).ListView.Editor.RequiredProperties.Select(property => property.TrimEnd('!')));

                        var nestedController = ((ListPropertyEditor)item).Frame.GetController <ResultsHighlightController>();
                        if (nestedController != null)
                        {
                            resultsHighlightControllers.Add(nestedController);
                        }
                    }
                }
            }

            var modifiedObjects = page.View.ObjectTypeInfo.IsPersistent ? ObjectSpace.ModifiedObjects : new List <object> {
                page.View.CurrentObject
            };

            foreach (var obj in modifiedObjects)
            {
                IList <IRule> rules = Validator.RuleSet.GetRules(obj, ContextIdentifier.Save);
                foreach (IRule rule in rules)
                {
                    bool ruleInUse = rule.UsedProperties.Any(property => usedProperties.Contains(property) || !string.IsNullOrEmpty(usedProperties.Where(p => p.EndsWith(String.Format(".{0}", property))).FirstOrDefault()));

                    string reason;
                    if (ruleInUse && RuleSet.NeedToValidateRule(rule, obj, out reason))
                    {
                        result = rule.Validate(obj);

                        if (result.State == ValidationState.Invalid)
                        {
                            validationResults.AddResult(new RuleSetValidationResultItem(obj, ContextIdentifier.Save, rule, result));
                        }
                    }
                }
            }

            foreach (ResultsHighlightController resultsHighlightController in resultsHighlightControllers)
            {
                resultsHighlightController.ClearHighlighting();
                if (validationResults.State == ValidationState.Invalid)
                {
                    resultsHighlightController.HighlightResults(validationResults);
                }
            }

            return(validationResults.State == ValidationState.Valid);
        }
예제 #10
0
        /// <summary>
        /// Fires after the next button has been clicked
        /// </summary>
        /// <param name="sender">Wizard Control</param>
        /// <param name="e">WizardCommandButtonClick EventArgs</param>
        private void WizardControl_NextClick(object sender, WizardCommandButtonClickEventArgs e){
            RuleValidationResult result;
            var validationResults = new RuleSetValidationResult();
            var usedProperties = new List<string>();
            var resultsHighlightControllers = new List<ResultsHighlightController>
                                              {Frame.GetController<ResultsHighlightController>()};

            foreach (PropertyEditor item in ((XafWizardPage) e.Page).View.GetItems<PropertyEditor>()){
                if (((Control) item.Control).Visible){
                    usedProperties.Add(item.PropertyName);
                    if (item is ListPropertyEditor){
                        foreach (string property in ((ListPropertyEditor) item).ListView.Editor.RequiredProperties){
                            usedProperties.Add(property.TrimEnd('!'));
                        }

                        var nestedController =
                            ((ListPropertyEditor) item).Frame.GetController<ResultsHighlightController>();
                        if (nestedController != null){
                            resultsHighlightControllers.Add(nestedController);
                        }
                    }
                }
            }

            foreach (object obj in ObjectSpace.ModifiedObjects){
                IList<IRule> rules = Validator.RuleSet.GetRules(obj, ContextIdentifier.Save);
                foreach (IRule rule in rules){
                    bool ruleInUse = false;
                    foreach (string property in rule.UsedProperties){
                        if (usedProperties.Contains(property)){
                            ruleInUse = true;
                            break;
                        }
                    }

                    if (ruleInUse){
                        result = rule.Validate(obj);
                        if (result.State == ValidationState.Invalid){
                            validationResults.AddResult(new RuleSetValidationResultItem(obj, ContextIdentifier.Save,
                                                                                        rule, result));
                        }
                    }
                }
            }

            foreach (ResultsHighlightController resultsHighlightController in resultsHighlightControllers){
                resultsHighlightController.ClearHighlighting();
                if (validationResults.State == ValidationState.Invalid){
                    resultsHighlightController.HighlightResults(validationResults);
                }
            }

            if (validationResults.State == ValidationState.Invalid){
                e.Handled = true;
            }
        }
예제 #11
0
        /// <summary>
        /// Fires after the next button has been clicked
        /// </summary>
        private bool Validate(XafWizardPage page)
        {
            if (page == null)
            {
                return(true);
            }
            var validationResults = new RuleSetValidationResult();
            var usedProperties = new List <string>();
            var resultsHighlightControllers = new List <ResultsHighlightController> {
                Frame.GetController <ResultsHighlightController>()
            }.Where(controller => controller != null).ToList();

            foreach (var item in page.View.GetItems <PropertyEditor>())
            {
                if (item.Control != null && ((Control)item.Control).Visible)
                {
                    usedProperties.Add(item.PropertyName);
                    var editor = item as ListPropertyEditor;
                    if (editor != null)
                    {
                        usedProperties.AddRange(editor.ListView.Editor.RequiredProperties.Select(property => property.TrimEnd('!')));

                        var nestedController = editor.Frame.GetController <ResultsHighlightController>();
                        if (nestedController != null)
                        {
                            resultsHighlightControllers.Add(nestedController);
                        }
                    }
                }
            }

            var modifiedObjects = ModifiedObjects(page);

            foreach (var obj in modifiedObjects)
            {
                IList <IRule> rules = Validator.RuleSet.GetRules(obj, ContextIdentifier.Save);
                foreach (IRule rule in rules)
                {
                    bool ruleInUse = rule.UsedProperties.Any(property => usedProperties.Contains(property) || !string.IsNullOrEmpty(usedProperties.FirstOrDefault(p => p.EndsWith(
                                                                                                                                                                      $".{property}"))));
                    string reason;
                    if (ruleInUse && RuleSet.NeedToValidateRule(ObjectSpace, rule, obj, out reason))
                    {
                        var objectSpaceLink = rule as IObjectSpaceLink;
                        if (objectSpaceLink != null)
                        {
                            objectSpaceLink.ObjectSpace = ObjectSpace;
                        }
                        RuleValidationResult result = rule.Validate(obj);
                        if (result.State == ValidationState.Invalid)
                        {
                            validationResults.AddResult(new RuleSetValidationResultItem(obj, ContextIdentifier.Save, rule, result));
                        }
                    }
                }
            }

            foreach (ResultsHighlightController resultsHighlightController in resultsHighlightControllers)
            {
                resultsHighlightController.ClearHighlighting();
                if (validationResults.State == ValidationState.Invalid)
                {
                    resultsHighlightController.HighlightResults(validationResults);
                }
            }

            return(validationResults.State != ValidationState.Invalid);
        }