public List <WeightedInheritanceResultItemWithStorageInfo <InlineTrigger> > ResolveLogicConditionalTriggersList(StrongIdentifierValue holder, LocalCodeExecutionContext localCodeExecutionContext, ResolverOptions options) { var storage = localCodeExecutionContext.Storage; var storagesList = GetStoragesList(storage); #if DEBUG //Log($"storagesList.Count = {storagesList.Count}"); //foreach (var tmpStorage in storagesList) //{ // Log($"tmpStorage.Key = {tmpStorage.Key}; tmpStorage.Value.Kind = '{tmpStorage.Value.Kind}'"); //} #endif var inheritanceResolver = _context.DataResolversFactory.GetInheritanceResolver(); var optionsForInheritanceResolver = options.Clone(); optionsForInheritanceResolver.AddSelf = true; var weightedInheritanceItems = inheritanceResolver.GetWeightedInheritanceItems(holder, localCodeExecutionContext, optionsForInheritanceResolver); #if DEBUG //Log($"weightedInheritanceItems = {weightedInheritanceItems.WriteListToString()}"); #endif var rawList = GetLogicConditionalRawList(holder, storagesList, weightedInheritanceItems); #if DEBUG //Log($"rawList = {rawList.WriteListToString()}"); #endif return(OrderAndDistinct(rawList, localCodeExecutionContext, options)); }
private List <WeightedInheritanceResultItemWithStorageInfo <InlineTrigger> > OrderAndDistinct(List <WeightedInheritanceResultItemWithStorageInfo <InlineTrigger> > source, LocalCodeExecutionContext localCodeExecutionContext, ResolverOptions options) { var inheritanceOrderOptions = options.Clone(); var result = OrderAndDistinctByInheritance(source, inheritanceOrderOptions); result = result.OrderBy(p => p.Distance).ToList(); return(result); }
public Operator GetOperator(KindOfOperator kindOfOperator, LocalCodeExecutionContext localCodeExecutionContext, ResolverOptions options) { #if DEBUG //Log($"kindOfOperator = {kindOfOperator}"); #endif var storage = localCodeExecutionContext.Storage; var storagesList = GetStoragesList(storage); #if DEBUG //Log($"storagesList.Count = {storagesList.Count}"); //foreach(var tmpStorage in storagesList) //{ // Log($"tmpStorage = {tmpStorage}"); //} #endif var inheritanceResolver = _context.DataResolversFactory.GetInheritanceResolver(); var optionsForInheritanceResolver = options.Clone(); optionsForInheritanceResolver.AddSelf = true; var weightedInheritanceItems = inheritanceResolver.GetWeightedInheritanceItems(localCodeExecutionContext, optionsForInheritanceResolver); #if DEBUG //Log($"weightedInheritanceItems = {weightedInheritanceItems.WriteListToString()}"); #endif var rawList = GetRawList(kindOfOperator, storagesList, weightedInheritanceItems); #if DEBUG //Log($"rawList = {rawList.WriteListToString()}"); #endif var filteredList = Filter(rawList); #if DEBUG //Log($"filteredList = {filteredList.WriteListToString()}"); #endif var targetOp = ChooseTargetItem(filteredList); return(targetOp); }
public Channel GetChannel(StrongIdentifierValue name, LocalCodeExecutionContext localCodeExecutionContext, ResolverOptions options) { #if DEBUG //Log($"name = {name}"); #endif var storage = localCodeExecutionContext.Storage; var storagesList = GetStoragesList(storage); #if DEBUG //Log($"storagesList.Count = {storagesList.Count}"); //foreach (var tmpStorage in storagesList) //{ // Log($"tmpStorage.Key = {tmpStorage.Key}; tmpStorage.Value.Kind = '{tmpStorage.Value.Kind}'"); //} #endif var inheritanceResolver = _context.DataResolversFactory.GetInheritanceResolver(); var optionsForInheritanceResolver = options.Clone(); optionsForInheritanceResolver.AddSelf = true; var weightedInheritanceItems = inheritanceResolver.GetWeightedInheritanceItems(localCodeExecutionContext, optionsForInheritanceResolver); #if DEBUG //Log($"weightedInheritanceItems = {weightedInheritanceItems.WriteListToString()}"); #endif var rawList = GetRawList(name, storagesList, weightedInheritanceItems); #if DEBUG //Log($"rawList = {rawList.WriteListToString()}"); #endif var filteredList = Filter(rawList); #if DEBUG //Log($"filteredList = {filteredList.WriteListToString()}"); #endif var targetChannel = ChooseTargetItem(filteredList); return(targetChannel); }
private FuzzyLogicNonNumericValue GetTargetFuzzyLogicNonNumericValue(StrongIdentifierValue name, NumberValue value, ReasonOfFuzzyLogicResolving reason, LocalCodeExecutionContext localCodeExecutionContext, ResolverOptions options) { var storage = localCodeExecutionContext.Storage; var storagesList = GetStoragesList(storage); #if DEBUG //Log($"name = {name}"); //Log($"value = {value}"); //Log($"reason = {reason}"); //Log($"localCodeExecutionContext = {localCodeExecutionContext}"); //Log($"storagesList.Count = {storagesList.Count}"); //foreach (var tmpStorage in storagesList) //{ // Log($"tmpStorage.Key = {tmpStorage.Key}; tmpStorage.Value.Kind = '{tmpStorage.Value.Kind}'"); //} #endif var inheritanceResolver = _context.DataResolversFactory.GetInheritanceResolver(); var optionsForInheritanceResolver = options.Clone(); optionsForInheritanceResolver.AddSelf = true; if (reason != null && reason.Kind == KindOfReasonOfFuzzyLogicResolving.Inheritance) { #if DEBUG //Log("^%^%^%^%^%^% reason != null && reason.Kind == KindOfReasonOfFuzzyLogicResolving.Inheritance"); #endif optionsForInheritanceResolver.SkipRealSearching = true; optionsForInheritanceResolver.AddSelf = false; } var weightedInheritanceItems = inheritanceResolver.GetWeightedInheritanceItems(localCodeExecutionContext, optionsForInheritanceResolver); #if DEBUG //Log($"weightedInheritanceItems = {weightedInheritanceItems.WriteListToString()}"); #endif var rawList = GetRawList(name, storagesList, weightedInheritanceItems); #if DEBUG //Log($"rawList = {rawList.WriteListToString()}"); #endif if (!rawList.Any()) { return(null); } var filteredList = Filter(rawList); #if DEBUG //Log($"filteredList = {filteredList.WriteListToString()}"); #endif if (!filteredList.Any()) { return(null); } if ((reason == null || reason.Kind != KindOfReasonOfFuzzyLogicResolving.Inheritance) && value != null) { filteredList = filteredList.Where(p => p.ResultItem.Parent.IsFitByRange(value)).ToList(); #if DEBUG //Log($"filteredList (2) = {filteredList.WriteListToString()}"); #endif if (!filteredList.Any()) { return(null); } } if (reason != null) { filteredList = filteredList.Where(p => p.ResultItem.Parent.IsFitByСonstraintOrDontHasСonstraint(reason)).ToList(); #if DEBUG //Log($"filteredList (3) = {filteredList.WriteListToString()}"); #endif if (!filteredList.Any()) { return(null); } } return(GetTargetFuzzyLogicNonNumericValueFromList(filteredList, reason)); }
public uint?GetDistance(StrongIdentifierValue typeName, Value value, LocalCodeExecutionContext localCodeExecutionContext, ResolverOptions options) { #if DEBUG //Log($"typeName = {typeName}"); //Log($"value = {value}"); //if(value.KindOfValue == KindOfValue.StrongIdentifierValue) //{ // throw new NotImplementedException(); //} #endif var biltInSuperTypesList = value.BuiltInSuperTypes; #if DEBUG //Log($"biltInSuperTypesList = {biltInSuperTypesList.WriteListToString()}"); #endif if (biltInSuperTypesList.Contains(typeName)) { return(0u); } var distancesList = new List <uint>(); var newOptions = options.Clone(); newOptions.AddTopType = false; newOptions.AddSelf = false; foreach (var buildInSuperType in biltInSuperTypesList) { #if DEBUG //Log($"typeName = {typeName}"); //Log($"buildInSuperType = {buildInSuperType}"); #endif #if DEBUG //Log($"options = {options}"); #endif var weightedInheritanceItemsList = GetWeightedInheritanceItems(buildInSuperType, localCodeExecutionContext, newOptions); #if DEBUG //Log($"weightedInheritanceItemsList = {weightedInheritanceItemsList.WriteListToString()}"); #endif if (!weightedInheritanceItemsList.Any()) { return(null); } var targetWeightedInheritanceItemsList = weightedInheritanceItemsList.Where(p => p.SuperName.Equals(typeName)).ToList(); #if DEBUG //Log($"targetWeightedInheritanceItemsList = {targetWeightedInheritanceItemsList.WriteListToString()}"); #endif if (!targetWeightedInheritanceItemsList.Any()) { return(null); } throw new NotImplementedException(); } throw new NotImplementedException(); }
public NamedFunction Resolve(StrongIdentifierValue name, LocalCodeExecutionContext localCodeExecutionContext, ResolverOptions options) { #if DEBUG //Log($"name = {name}"); #endif var storage = localCodeExecutionContext.Storage; var storagesList = GetStoragesList(storage); #if DEBUG //Log($"name = {name}"); //Log($"value = {value}"); //Log($"reason = {reason}"); //Log($"localCodeExecutionContext = {localCodeExecutionContext}"); //Log($"storagesList.Count = {storagesList.Count}"); //foreach (var tmpStorage in storagesList) //{ // Log($"tmpStorage = {tmpStorage}"); //} #endif var inheritanceResolver = _context.DataResolversFactory.GetInheritanceResolver(); var optionsForInheritanceResolver = options.Clone(); optionsForInheritanceResolver.AddSelf = true; var weightedInheritanceItems = inheritanceResolver.GetWeightedInheritanceItems(localCodeExecutionContext, optionsForInheritanceResolver); #if DEBUG //Log($"weightedInheritanceItems = {weightedInheritanceItems.WriteListToString()}"); #endif var rawList = GetRawList(name, 0, storagesList, weightedInheritanceItems); #if DEBUG //Log($"rawList = {rawList.WriteListToString()}"); #endif if (!rawList.Any()) { return(null); } var filteredList = Filter(rawList); #if DEBUG Log($"filteredList = {filteredList.WriteListToString()}"); #endif if (!filteredList.Any()) { return(null); } if (filteredList.Count == 1) { return(filteredList.Single().ResultItem); } return(GetTargetValueFromList(filteredList, 0, localCodeExecutionContext, options)); }