protected InlineTrigger CreateInlineTrigger() { var result = new InlineTrigger(); DefaultSettingsOfCodeEntityHelper.SetUpInlineTrigger(result, CurrentDefaultSetings); return(result); }
/// <inheritdoc/> public void Append(InlineTrigger inlineTrigger) { #if DEBUG //Log($"inlineTrigger = {inlineTrigger}"); #endif AnnotatedItemHelper.CheckAndFillUpHolder(inlineTrigger, _realStorageContext.MainStorageContext.CommonNamesStorage); inlineTrigger.CheckDirty(); var kind = inlineTrigger.Kind; switch (kind) { case KindOfInlineTrigger.SystemEvent: AppendSystemEvent(inlineTrigger); break; case KindOfInlineTrigger.LogicConditional: AppendLogicConditional(inlineTrigger); break; default: throw new ArgumentOutOfRangeException(nameof(kind), kind, null); } }
public LogicConditionalTriggerInstanceInfo(InlineTrigger trigger, InstanceInfo parent, IEngineContext context, IStorage parentStorage) : base(context.Logger) { _context = context; _parent = parent; _trigger = trigger; _condition = trigger.Condition; var dataResolversFactory = context.DataResolversFactory; _searcher = dataResolversFactory.GetLogicalSearchResolver(); _localCodeExecutionContext = new LocalCodeExecutionContext(); var localStorageSettings = RealStorageSettingsHelper.Create(context, parentStorage); _storage = new LocalStorage(localStorageSettings); _localCodeExecutionContext.Storage = _storage; _localCodeExecutionContext.Holder = parent.Name; _storage.LogicalStorage.OnChangedWithKeys += LogicalStorage_OnChangedWithKeys; lock (_lockObj) { DoSearch(); } }
private void AppendSystemEvent(InlineTrigger inlineTrigger) { lock (_lockObj) { var kindOfSystemEvent = inlineTrigger.KindOfSystemEvent; if (_nonIndexedSystemEventsInfo.ContainsKey(kindOfSystemEvent)) { var dict = _nonIndexedSystemEventsInfo[kindOfSystemEvent]; if (dict.ContainsKey(inlineTrigger.Holder)) { var targetList = dict[inlineTrigger.Holder]; #if DEBUG //Log($"dict[superName].Count = {dict[inlineTrigger.Holder].Count}"); //Log($"targetList = {targetList.WriteListToString()}"); #endif var targetLongConditionalHashCode = inlineTrigger.GetLongConditionalHashCode(); #if DEBUG //Log($"targetLongConditionalHashCode = {targetLongConditionalHashCode}"); #endif var itemsWithTheSameLongConditionalHashCodeList = targetList.Where(p => p.GetLongConditionalHashCode() == targetLongConditionalHashCode).ToList(); foreach (var itemWithTheSameLongConditionalHashCode in itemsWithTheSameLongConditionalHashCodeList) { targetList.Remove(itemWithTheSameLongConditionalHashCode); } targetList.Add(inlineTrigger); } else { dict[inlineTrigger.Holder] = new List <InlineTrigger>() { inlineTrigger }; } } else { _nonIndexedSystemEventsInfo[kindOfSystemEvent] = new Dictionary <StrongIdentifierValue, List <InlineTrigger> >() { { inlineTrigger.Holder, new List <InlineTrigger>() { inlineTrigger } } }; } } }
/// <inheritdoc/> protected override void OnEnter() { Result = CreateCodeEntityAndSetAsCurrent(KindOfCodeEntity.InlineTrigger); Result.Name = NameHelper.CreateRuleOrFactName(); _inlineTrigger = CreateInlineTrigger(); _inlineTrigger.CodeEntity = Result; Result.InlineTrigger = _inlineTrigger; if (Result.ParentCodeEntity != null) { _inlineTrigger.Holder = Result.ParentCodeEntity.Name; } }
private void AppendLogicConditional(InlineTrigger inlineTrigger) { lock (_lockObj) { if (_nonIndexedLogicConditionalsInfo.ContainsKey(inlineTrigger.Holder)) { var targetList = _nonIndexedLogicConditionalsInfo[inlineTrigger.Holder]; #if DEBUG //Log($"_nonIndexedLogicConditionalsInfo[superName].Count = {_nonIndexedLogicConditionalsInfo[inlineTrigger.Holder].Count}"); //Log($"targetList = {targetList.WriteListToString()}"); #endif var targetLongConditionalHashCode = inlineTrigger.GetLongConditionalHashCode(); #if DEBUG //Log($"targetLongConditionalHashCode = {targetLongConditionalHashCode}"); #endif var itemsWithTheSameLongConditionalHashCodeList = targetList.Where(p => p.GetLongConditionalHashCode() == targetLongConditionalHashCode).ToList(); #if DEBUG //Log($"itemsWithTheSameLongConditionalHashCodeList = {itemsWithTheSameLongConditionalHashCodeList.WriteListToString()}"); #endif foreach (var itemWithTheSameLongConditionalHashCode in itemsWithTheSameLongConditionalHashCodeList) { targetList.Remove(itemWithTheSameLongConditionalHashCode); } targetList.Add(inlineTrigger); } else { _nonIndexedLogicConditionalsInfo[inlineTrigger.Holder] = new List <InlineTrigger>() { inlineTrigger }; } } }
public static void SetUpInlineTrigger(InlineTrigger inlineTrigger, DefaultSettingsOfCodeEntity defaultSettings) { var context = new Dictionary <object, object>(); SetUpAnnotatedItem(inlineTrigger, defaultSettings, context); }