/// <summary>
 ///
 /// </summary>
 /// <param name="criterionName"></param>
 /// <param name="level"></param>
 /// <param name="caseSensitive"></param>
 /// <param name="trim"></param>
 /// <param name="customMessages"></param>
 /// <param name="v1"></param>
 /// <param name="v2"></param>
 public AndValidCriterion(string criterionName, ValidationLevel level, bool caseSensitive, bool trim, CustomValidationMessages customMessages,
                          ValidationCriterion v1, ValidationCriterion v2)
     : base(criterionName, level, caseSensitive, trim, customMessages)
 {
     this.m_criterion1 = v1;
     this.m_criterion2 = v2;
 }
 /// <summary>
 /// 
 /// </summary>
 /// <param name="criterionName"></param>
 /// <param name="level"></param>
 /// <param name="caseSensitive"></param>
 /// <param name="trim"></param>
 /// <param name="customMessages"></param>
 /// <param name="v1"></param>
 /// <param name="v2"></param>
 public AndValidCriterion(string criterionName, ValidationLevel level, bool caseSensitive, bool trim, CustomValidationMessages customMessages,
     ValidationCriterion v1, ValidationCriterion v2)
     : base(criterionName, level, caseSensitive, trim, customMessages)
 {
     this.m_criterion1 = v1;
     this.m_criterion2 = v2;
 }
        public static bool IsMatch(ValidationCriterion validationCriterion, string input, int min, int max)
        {
            if (!(input.Length >= min && input.Length <= max))
            {
                return(false);
            }

            return(IsMatchHelper(validationCriterion, input));
        }
        /// <summary>
        /// Does the actual validation for the validation criterion passed in
        /// </summary>
        /// <param name="validationStategy">which validation criterion to use</param>
        /// <param name="input">the string to validate</param>
        /// <returns>true if input matches the given validation criterion, false otherwise</returns>
        private static bool IsMatchHelper(ValidationCriterion validationCriterion, string input)
        {
            switch (validationCriterion)
            {
            case ValidationCriterion.AlphanumericOnly:
                return(_alphanumeric.IsMatch(input));

            case ValidationCriterion.SpecialCharacter:
                return(_specialCharacter.IsMatch(input));

            case ValidationCriterion.AlphabeticOnly:
                return(_alphabetic.IsMatch(input));
            }
            return(false);
        }
        public void AddValidations()
        {
            IList <GridColumnInfo> gridColumnInfos = ADInfoBll.Instance.GetGridColumnInfos(m_grid.GridName);

            if (gridColumnInfos.Count > 0)
            {
                foreach (GridColumnInfo columnInfo in gridColumnInfos)
                {
                    ValidationCriterion cri = GetValidationCriterion(columnInfo, m_cm);
                    if (cri != null)
                    {
                        SetGridValidation(columnInfo.GridColumnName, cri);
                    }
                }
            }
            else
            {
                CreatePropertyValidations();
            }
        }
        internal static ValidationCriterion GetValidationCriterion(GridColumnInfo columnInfo, IControlManager cm)
        {
            ValidationCriterion cri1 = null;

            if (!string.IsNullOrEmpty(columnInfo.ValidRegularExpression))
            {
                cri1 = new MyRegularExpressionCriterion(columnInfo.GridColumnName,
                                                        Xceed.Validation.ValidationLevel.Manual,
                                                        new System.Text.RegularExpressions.Regex(columnInfo.ValidRegularExpression, System.Text.RegularExpressions.RegexOptions.Singleline),
                                                        false, true, new Xceed.Validation.CustomValidationMessages());
                cri1.CustomValidationMessages.RegularExpression = columnInfo.ValidErrorMessage;
            }
            ValidationCriterion cri2 = null;

            if (!string.IsNullOrEmpty(columnInfo.ValidScript))
            {
                cri2 = new ScriptCriterion(columnInfo.GridColumnName,
                                           Xceed.Validation.ValidationLevel.Manual,
                                           columnInfo.ValidScript, new Dictionary <string, object> {
                    { "cm", cm }
                },
                                           false, true, new Xceed.Validation.CustomValidationMessages());
                cri2.CustomValidationMessages.RegularExpression = columnInfo.ValidErrorMessage;
            }

            ValidationCriterion cri3 = null;

            if (Authority.AuthorizeByRule(columnInfo.NotNull))
            {
                cri3 = new RequiredFieldCriterion(columnInfo.GridColumnName,
                                                  Xceed.Validation.ValidationLevel.Manual, GridColumnInfoHelper.CreateType(columnInfo),
                                                  false, true, new Xceed.Validation.CustomValidationMessages());
            }
            var ret = TryAndValidations(TryAndValidations(cri1, cri2), cri3);

            if (ret != null)
            {
                ret.Name = columnInfo.GridColumnName;
            }
            return(ret);
        }
        /// <summary>
        /// 按照Property来默认设置Validation
        /// </summary>
        private void CreatePropertyValidations()
        {
            foreach (Xceed.Grid.Column column in m_grid.Columns)
            {
                if (!column.Visible)
                {
                    continue;
                }

                GridColumnInfo info = column.Tag as GridColumnInfo;
                if (info == null)
                {
                    continue;
                }

                if (string.IsNullOrEmpty(info.Navigator) && !string.IsNullOrEmpty(info.PropertyName))
                {
                    var attribute = m_cm.DisplayManager.EntityInfo.GetPropertMetadata(info.PropertyName);
                    if (attribute != null)
                    {
                        ValidationCriterion cri1 = null;
                        if (attribute.NotNull)
                        {
                            cri1 = new RequiredFieldCriterion(info.GridColumnName, ValidationLevel.Manual, column.DataType, false, true, null);
                        }

                        ValidationCriterion cri2 = null;
                        if (attribute.Length > 0)
                        {
                            cri2 = new MaxLengthFieldCriterion(info.GridColumnName, ValidationLevel.Manual, attribute.Length, false, true, null);
                        }

                        SetGridValidation(column.FieldName, TryAndValidations(cri1, cri2));
                    }
                }
            }
        }
        private static ValidationCriterion TryAndValidations(ValidationCriterion cri1, ValidationCriterion cri2)
        {
            ValidationCriterion cri = null;

            if (cri1 != null || cri2 != null)
            {
                if (cri1 != null && cri2 != null)
                {
                    cri = new AndValidCriterion(cri1.Name + "_And_" + cri2.Name,
                                                Xceed.Validation.ValidationLevel.Manual,
                                                false, true, new Xceed.Validation.CustomValidationMessages(),
                                                cri1, cri2);
                }
                else if (cri1 != null)
                {
                    cri = cri1;
                }
                else
                {
                    cri = cri2;
                }
            }
            return(cri);
        }
 private static ValidationCriterion TryAndValidations(ValidationCriterion cri1, ValidationCriterion cri2)
 {
     ValidationCriterion cri = null;
     if (cri1 != null || cri2 != null)
     {
         if (cri1 != null && cri2 != null)
         {
             cri = new AndValidCriterion(cri1.Name + "_And_" + cri2.Name,
              Xceed.Validation.ValidationLevel.Manual,
              false, true, new Xceed.Validation.CustomValidationMessages(),
              cri1, cri2);
         }
         else if (cri1 != null)
         {
             cri = cri1;
         }
         else
         {
             cri = cri2;
         }
     }
     return cri;
 }