private static void FillBaseRulePart(BaseRulePart source, BaseRulePart dest, RuleInstance ruleInstance, Dictionary <object, object> convertingContext)
        {
            dest.Parent   = ruleInstance;
            dest.IsActive = source.IsActive;

            dest.Expression = ConvertLogicalQueryNode(source.Expression, convertingContext);

            FillAnnotationsModalitiesAndSections(source, dest, convertingContext);
        }
Beispiel #2
0
        public static string BaseRulePartToString(BaseRulePart baseRulePart)
        {
            var b = baseRulePart as PrimaryRulePart;

            if (b != null)
            {
                return(ToString(b));
            }

            var c = baseRulePart as SecondaryRulePart;

            if (c != null)
            {
                return(ToString(c));
            }

            return(string.Empty);
        }
        private void NRemoveIndexedRulePartFromKeysOfRelationsIndex(IDictionary <StrongIdentifierValue, IList <BaseRulePart> > indexData, BaseRulePart indexedRulePart)
        {
#if DEBUG
            //var dbgStr = DebugHelperForRuleInstance.BaseRulePartToString(indexedRulePart.OriginRulePart);
            //Log($"dbgStr = {dbgStr}");
#endif

            var relationsList = indexedRulePart.RelationsDict.SelectMany(p => p.Value).Distinct().ToList();

#if DEBUG
            //Log($"relationsList = {relationsList.WriteListToString()}");
#endif

            foreach (var relation in relationsList)
            {
                if (RelationsList.Contains(relation))
                {
                    RelationsList.Remove(relation);
                }
            }

            var keysOfRelationsList = indexedRulePart.RelationsDict.Keys.ToList();

#if DEBUG
            //Log($" = {relationsList.WriteListToString()}");
#endif

            foreach (var keyOfRelation in keysOfRelationsList)
            {
#if DEBUG
                //Log($"keyOfRelation = {keyOfRelation}");
                //Log($"_entityDictionary.GetName(keyOfRelation) = {_entityDictionary.GetName(keyOfRelation)}");
#endif

                if (indexData.ContainsKey(keyOfRelation))
                {
                    var tmpList = indexData[keyOfRelation];
                    if (tmpList.Contains(indexedRulePart))
                    {
                        tmpList.Remove(indexedRulePart);
                    }
                }
            }
        }
        private void NAddIndexedRulePartToKeysOfRelationsIndex(IDictionary <StrongIdentifierValue, IList <BaseRulePart> > indexData, BaseRulePart indexedRulePart)
        {
#if DEBUG
            //var dbgStr = DebugHelperForRuleInstance.BaseRulePartToString(indexedRulePart);
            //Log($"dbgStr = {dbgStr}");
#endif

            var relationsList = indexedRulePart.RelationsDict.SelectMany(p => p.Value).Distinct().ToList();

#if DEBUG
            //Log($"relationsList = {relationsList.WriteListToString()}");
#endif

            foreach (var relation in relationsList)
            {
                if (!RelationsList.Contains(relation))
                {
                    RelationsList.Add(relation);
                }
            }

            var keysOfRelationsList = indexedRulePart.RelationsDict.Keys.ToList();

#if DEBUG
            //Log($"keysOfRelationsList = {keysOfRelationsList.WriteListToString()}");
#endif

            foreach (var keyOfRelation in keysOfRelationsList)
            {
#if DEBUG
                //Log($"keyOfRelation = {keyOfRelation}");
#endif

                if (indexData.ContainsKey(keyOfRelation))
                {
                    var tmpList = indexData[keyOfRelation];
                    if (!tmpList.Contains(indexedRulePart))
                    {
                        tmpList.Add(indexedRulePart);
                    }
                }
                else
                {
                    var tmpList = new List <BaseRulePart>()
                    {
                        indexedRulePart
                    };
                    indexData[keyOfRelation] = tmpList;
                }
            }
        }