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; } }
/// <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); } } }
/// <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); } } }
/// <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); } } } } }
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; } }
/// <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); } } } } }
/// <summary> /// Constructor /// </summary> public SemanticConstraint(SemanticValidationLevel level) { SemanticValidationLevel = level; }
public void ClearConstraintState(SemanticValidationLevel level) { _curReg.ClearConstraintState(level); }