public static dynamic GetTSObject(PrimaryPart dynObject) { if (dynObject is null) { return(null); } return(dynObject.teklaObject); }
public IList <LogicalQueryNode> GetInheritanceRelations() { if (Kind != KindOfRuleInstance.Fact) { return(new List <LogicalQueryNode>()); } return(PrimaryPart.GetInheritanceRelations()); }
/// <inheritdoc/> public override void DiscoverAllAnnotations(IList <RuleInstance> result) { base.DiscoverAllAnnotations(result); PrimaryPart?.DiscoverAllAnnotations(result); if (!SecondaryParts.IsNullOrEmpty()) { foreach (var item in SecondaryParts) { item.DiscoverAllAnnotations(result); } } }
/// <inheritdoc/> protected override ulong CalculateLongHashCode() { PrepareDirty(); var result = base.CalculateLongHashCode() ^ PrimaryPart.GetLongHashCode(); if (!SecondaryParts.IsNullOrEmpty()) { foreach (var secondaryPart in SecondaryParts) { result ^= secondaryPart.GetLongHashCode(); } } return(result); }
public void CalculateUsedKeys() { var usedKeysList = new List <StrongIdentifierValue>(); PrimaryPart.CalculateUsedKeys(usedKeysList); if (!SecondaryParts.IsNullOrEmpty()) { foreach (var secondaryPart in SecondaryParts) { secondaryPart.CalculateUsedKeys(usedKeysList); } } UsedKeysList = usedKeysList.Distinct().ToList(); }
private void PrepareDirty() { if (Name == null || Name.IsEmpty) { Name = NameHelper.CreateRuleOrFactName(); } if (Kind == KindOfRuleInstance.Undefined) { if (SecondaryParts.IsNullOrEmpty()) { Kind = KindOfRuleInstance.Fact; } else { Kind = KindOfRuleInstance.Rule; } } if (IsSource) { Normalized = ConvertorToNormalized.Convert(this); Normalized.PrepareDirty(); #if DEBUG //_gbcLogger.Info($"Normalized = {DebugHelperForRuleInstance.ToString(Normalized)}"); #endif } else { CalculateUsedKeys(); PrimaryPart?.PrepareDirty(this); if (!SecondaryParts.IsNullOrEmpty()) { foreach (var item in SecondaryParts) { item.PrepareDirty(this); } } Normalized = this; } _commonPersistIndexedLogicalData.NSetIndexedRuleInstanceToIndexData(Normalized); }
/// <summary> /// Clones the instance using special context and returns cloned instance. /// </summary> /// <param name="context">Special context for providing references continuity.</param> /// <returns>Cloned instance.</returns> public RuleInstance Clone(Dictionary <object, object> context) { if (context.ContainsKey(this)) { return((RuleInstance)context[this]); } var result = new RuleInstance(); context[this] = result; result.IsSource = IsSource; result.Name = Name.Clone(context); result.Kind = Kind; result.PrimaryPart = PrimaryPart.Clone(context); result.SecondaryParts = SecondaryParts?.Select(p => p.Clone(context)).ToList(); UsedKeysList = UsedKeysList.ToList(); result.AppendAnnotations(this, context); return(result); }