//------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------ private void ReadChildDefinitionArcs(INode DefinitionLinkNode) { foreach (INode CurrentChild in DefinitionLinkNode.ChildNodes) { if (CurrentChild.LocalName.Equals("definitionArc") == true) { DefinitionArc NewDefinitionArc = new DefinitionArc(CurrentChild); this.DefinitionArcs.Add(NewDefinitionArc); ResolveLocators(NewDefinitionArc); } } }
//------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------ private void ResolveLocators(DefinitionArc CurrentDefinitionArc) { //CurrentDefinitionArc.FromLocator = GetUnresolvedLocator(CurrentDefinitionArc.FromId); CurrentDefinitionArc.FromLocator = GetLocator(CurrentDefinitionArc.FromId); if (CurrentDefinitionArc.FromLocator != null) { thisUnresolvedLocators.Remove(CurrentDefinitionArc.FromLocator); } //CurrentDefinitionArc.ToLocator = GetUnresolvedLocator(CurrentDefinitionArc.ToId); CurrentDefinitionArc.ToLocator = GetLocator(CurrentDefinitionArc.ToId); if (CurrentDefinitionArc.ToLocator != null) { thisUnresolvedLocators.Remove(CurrentDefinitionArc.ToLocator); } }
/// <summary> /// Class constructor. This constructor will store a message and will automatically set the /// Exception property to a null value. /// </summary> /// <param name="arc"> /// The definition arc containing the error being reported. /// </param> /// <param name="message"> /// The message to be stored in the validation error. /// </param> internal DefinitionArcValidationError(DefinitionArc arc, string message) : base(message) { this.Arc = arc; }
/// <summary> /// Class constructor. This constructor will store a message and an exception. /// </summary> /// <param name="arc"> /// The definition arc containing the error being reported. /// </param> /// <param name="message"> /// The message to be stored in the validation error. /// </param> /// <param name="exception"> /// The exception to be stored in the validation error. /// </param> internal DefinitionArcValidationError(DefinitionArc arc, string message, Exception exception) : base(message, exception) { this.Arc = arc; }
/// <summary> /// Validate the essence alias between two facts referenced in a definition arc using /// the set of all facts in the fragment. /// </summary> /// <param name="EssenceAliasDefinitionArc"> /// The definition arc defining the essence alias. /// </param> /// <param name="FactList"> /// A collection of <see cref="Fact"/> objects defined in the fragment. /// </param> private void ValidateEssenceAliasedFacts(DefinitionArc EssenceAliasDefinitionArc, List<Fact> FactList) { Locator CurrentFromLocator = EssenceAliasDefinitionArc.FromLocator; if (CurrentFromLocator == null) throw new NullReferenceException("FromLocator is NULL in ValidateEssenceAliasedFacts()"); Locator CurrentToLocator = EssenceAliasDefinitionArc.ToLocator; foreach (Fact CurrentFact in FactList) { if (CurrentFact is Item) { var CurrentItem = CurrentFact as Item; if (CurrentItem.Name.Equals(CurrentFromLocator.HrefResourceId) == true) ValidateEssenceAliasedFacts(CurrentItem, FactList, CurrentToLocator.HrefResourceId); } else if (CurrentFact is Tuple) { var CurrentTuple = CurrentFact as Tuple; ValidateEssenceAliasedFacts(EssenceAliasDefinitionArc, CurrentTuple.Facts); } } }
/// <summary> /// Validate the essence alias between two facts referenced in a definition arc using /// the set of all facts in the fragment. /// </summary> /// <param name="EssenceAliasDefinitionArc"> /// The definition arc defining the essence alias. /// </param> private void ValidateEssenceAliasedFacts(DefinitionArc EssenceAliasDefinitionArc) { ValidateEssenceAliasedFacts(EssenceAliasDefinitionArc, thisFacts); }
//------------------------------------------------------------------------------- // Validate the "requires element" connection between two facts referenced in a // definition arc. //------------------------------------------------------------------------------- private void ValidateRequiresElementFacts(DefinitionArc RequiresElementDefinitionArc) { Locator CurrentFromLocator = RequiresElementDefinitionArc.FromLocator; Locator CurrentToLocator = RequiresElementDefinitionArc.ToLocator; int FromFactCount = CountFactInstances(CurrentFromLocator.HrefResourceId); int ToFactCount = CountFactInstances(CurrentToLocator.HrefResourceId); if (FromFactCount > ToFactCount) { StringBuilder MessageBuilder = new StringBuilder(); string StringFormat = AssemblyResources.GetName("NotEnoughToFactsInRequiresElementRelationship"); MessageBuilder.AppendFormat(StringFormat, CurrentFromLocator.HrefResourceId, CurrentToLocator.HrefResourceId); AddValidationError(new DefinitionArcValidationError(RequiresElementDefinitionArc, MessageBuilder.ToString())); } }
//------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------ private void ReadChildDefinitionArcs(XmlNode DefinitionLinkNode) { foreach (XmlNode CurrentChild in DefinitionLinkNode.ChildNodes) { if (CurrentChild.LocalName.Equals("definitionArc") == true) { DefinitionArc NewDefinitionArc = new DefinitionArc(CurrentChild); this.DefinitionArcs.Add(NewDefinitionArc); ResolveLocators(NewDefinitionArc); } } }
//------------------------------------------------------------------------------------ //------------------------------------------------------------------------------------ private void ResolveLocators(DefinitionArc CurrentDefinitionArc) { //CurrentDefinitionArc.FromLocator = GetUnresolvedLocator(CurrentDefinitionArc.FromId); CurrentDefinitionArc.FromLocator = GetLocator(CurrentDefinitionArc.FromId); if (CurrentDefinitionArc.FromLocator != null) thisUnresolvedLocators.Remove(CurrentDefinitionArc.FromLocator); //CurrentDefinitionArc.ToLocator = GetUnresolvedLocator(CurrentDefinitionArc.ToId); CurrentDefinitionArc.ToLocator = GetLocator(CurrentDefinitionArc.ToId); if (CurrentDefinitionArc.ToLocator != null) thisUnresolvedLocators.Remove(CurrentDefinitionArc.ToLocator); }