コード例 #1
0
        private static void Get(ValidationContext context, out SemanticValidationLevel level, out ApplicationType type)
        {
            var current = context.Stack.Current;

            if (current is null)
            {
                throw new InvalidOperationException();
            }

            if (current.Package is not null)
            {
                level = SemanticValidationLevel.Package;
                type  = current.Package.ApplicationType;
            }
            else if (current.Part is not null)
            {
                level = SemanticValidationLevel.Part;
                type  = current.Part.OpenXmlPackage.ApplicationType;
            }
            else
            {
                level = SemanticValidationLevel.Element;
                type  = ApplicationType.All;
            }
        }
コード例 #2
0
 /// <summary>
 /// Clean state of all registered constraints
 /// </summary>
 public void ClearConstraintState(SemanticValidationLevel level)
 {
     foreach (var constraints in _semConstraintMap.Values)
     {
         foreach (var constraint in constraints.Where(c => (c.StateScope & level) != 0))
         {
             constraint.ClearState(null);
         }
     }
 }
コード例 #3
0
 /// <summary>
 /// Clean state of all registered constraints
 /// </summary>
 public void ClearConstraintState(SemanticValidationLevel level)
 {
     foreach (var constraint in _semConstraintMap.GetValues())
     {
         if ((constraint.StateScope & level) != 0)
         {
             constraint.ClearState(null);
         }
     }
 }
コード例 #4
0
        /// <summary>
        /// Check if specified context meets all registered constraints
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public IEnumerable <ValidationErrorInfo> CheckConstraints(ValidationContext context)
        {
            SemanticValidationLevel level = SemanticValidationLevel.Element;

            if (context.Part != null)
            {
                level = SemanticValidationLevel.Part;
            }

            if (context.Package != null)
            {
                level = SemanticValidationLevel.Package;
            }

            int elementTypeID = context.Element.ElementTypeId;

            if (_cleanList.Keys.Contains(elementTypeID))
            {
                foreach (var con in _cleanList[elementTypeID])
                {
                    con.ClearState(context);
                }
            }

            if (_semConstraintMap.ContainsKey(elementTypeID))
            {
                foreach (SemanticConstraint constraint in _semConstraintMap[elementTypeID])
                {
                    if ((constraint.SemanticValidationLevel & level) == level)
                    {
                        ValidationErrorInfo err = constraint.Validate(context);

                        if (err != null)
                        {
#if DEBUG
                            err.SemanticConstraintId = constraint.ConstratintId;
#endif
                            yield return(err);
                        }
                    }
                }
            }
        }
コード例 #5
0
        private static void Get(ValidationContext context, out SemanticValidationLevel level, out ApplicationType type)
        {
            var current = context.Stack.Current;

            if (current.Package != null)
            {
                level = SemanticValidationLevel.Package;
                type  = current.Package.ApplicationType;
            }
            else if (current.Part != null)
            {
                level = SemanticValidationLevel.Part;
                type  = current.Part.OpenXmlPackage.ApplicationType;
            }
            else
            {
                level = SemanticValidationLevel.Element;
                type  = ApplicationType.All;
            }
        }
コード例 #6
0
        /// <summary>
        /// Check if specified context meets all registered constraints
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public IEnumerable <ValidationErrorInfo> CheckConstraints(ValidationContext context)
        {
            SemanticValidationLevel level = SemanticValidationLevel.Element;

            if (context.Part != null)
            {
                level = SemanticValidationLevel.Part;
            }

            if (context.Package != null)
            {
                level = SemanticValidationLevel.Package;
            }

            int elementTypeID = context.Element.ElementTypeId;

            if (_cleanList.TryGetValue(elementTypeID, out var cleanConstraints))
            {
                foreach (var con in cleanConstraints)
                {
                    con.ClearState(context);
                }
            }

            if (_semConstraintMap.TryGetValue(elementTypeID, out var constraints))
            {
                foreach (SemanticConstraint constraint in constraints)
                {
                    if ((constraint.SemanticValidationLevel & level) == level)
                    {
                        var err = constraint.Validate(context);

                        if (err != null)
                        {
                            yield return(err);
                        }
                    }
                }
            }
        }
コード例 #7
0
 /// <summary>
 /// Constructor
 /// </summary>
 public SemanticConstraint(SemanticValidationLevel level)
 {
     SemanticValidationLevel = level;
 }
コード例 #8
0
 /// <summary>
 /// Constructor
 /// </summary>
 public SemanticConstraint(SemanticValidationLevel level)
 {
     SemanticValidationLevel = level;
 }
コード例 #9
0
 public void ClearConstraintState(SemanticValidationLevel level)
 {
     _curReg.ClearConstraintState(level);
 }
コード例 #10
0
 public void ClearConstraintState(SemanticValidationLevel level)
 {
     _curReg.ClearConstraintState(level);
 }
コード例 #11
0
 /// <summary>
 /// Clean state of all registered constraints
 /// </summary>
 public void ClearConstraintState(SemanticValidationLevel level)
 {
     foreach (var constraints in _semConstraintMap.Values)
     {
         foreach (var constraint in constraints.Where(c => (c.StateScope & level) != 0))
         {
             constraint.ClearState(null);
         }
     }
 }