public virtual ConditionalObjectAccessPermission FilterUnfitItems(object contextObject) { try { Type objectType = contextObject.GetType(); //IObjectSpace objectSpace = ObjectSpace.FindObjectSpace(contextObject); IObjectSpace objectSpace = ObjectSpace.FindObjectSpaceByObject(contextObject); EvaluatorContextDescriptor descriptor = objectSpace != null?objectSpace.GetEvaluatorContextDescriptor(objectType) : new EvaluatorContextDescriptorDefault(objectType); ConditionalObjectAccessPermission result = new ConditionalObjectAccessPermission(); foreach (ConditionalParticularAccessItem item in AccessItemList) { bool itemFits = string.IsNullOrEmpty(item.Condition); if (!itemFits && item.ObjectType == objectType) { LocalizedCriteriaWrapper wrapper = new LocalizedCriteriaWrapper(objectType, item.Condition); wrapper.UpdateParametersValues(contextObject); ExpressionEvaluator evaluator = new ExpressionEvaluator(descriptor, wrapper.CriteriaOperator); itemFits = evaluator.Fit(contextObject); } if (itemFits) { result.AccessItemList.Add(item); } } return(result); } catch (Exception ex) { throw new Exception(ex.ToString()); } }
internal IList<IConditionalAppearanceItem> Validate(object[] contextObjects, EvaluatorContextDescriptor evaluatorContextDescriptor) { var ruleValid = (bool)this.CallMethod("GetRuleValid", new[] { typeof(object[]), typeof(EvaluatorContextDescriptor) }, new object[] { contextObjects, evaluatorContextDescriptor }); var result = new List<IConditionalAppearanceItem>(); AppearanceState state = ruleValid ? AppearanceState.CustomValue : AppearanceState.ResetValue; if (Properties.Properties.HasValue(typeof(IModelAppearanceFont))) { result.Add(new AppearanceItemFont(state, Properties.Priority, Properties.Properties)); } return result; }
public FilterEvaluator(EvaluatorContextDescriptor descriptor, CriteriaOperator filterCriteria) { this.evaluatorCore = new ExpressionEvaluatorCore(true); this.descriptor = descriptor; this.filterCriteria = filterCriteria; this.contexts = typeof (ExpressionEvaluatorCore).GetField("contexts", BindingFlags.Instance | BindingFlags.NonPublic); FieldInfo fieldInfo = typeof(ExpressionEvaluatorCore).GetField("LikeDataCache", BindingFlags.Instance | BindingFlags.NonPublic); likeDataCache = (LikeDataCache) fieldInfo.GetValue(this.evaluatorCore); }
static bool Fit(object targetObject, string criteria) { Type objectType = targetObject.GetType(); var wrapper = new LocalizedCriteriaWrapper(objectType, criteria); wrapper.UpdateParametersValues(targetObject); var objectSpace = XPObjectSpace.FindObjectSpaceByObject(targetObject); EvaluatorContextDescriptor descriptor = objectSpace != null?objectSpace.GetEvaluatorContextDescriptor(objectType) : new EvaluatorContextDescriptorDefault(objectType); var evaluator = new ExpressionEvaluator(descriptor, wrapper.CriteriaOperator, XpandModuleBase.Dictiorary.CustomFunctionOperators); return(evaluator.Fit(targetObject)); }
public static bool Fit(this CriteriaOperator criteriaOperator, object targetObject) { if (ReferenceEquals(criteriaOperator, null)) { return(true); } Type objectType = targetObject.GetType(); var wrapper = new LocalizedCriteriaWrapper(objectType, criteriaOperator); wrapper.UpdateParametersValues(targetObject); var objectSpace = XPObjectSpace.FindObjectSpaceByObject(targetObject); EvaluatorContextDescriptor descriptor = objectSpace != null?objectSpace.GetEvaluatorContextDescriptor(objectType) : new EvaluatorContextDescriptorDefault(objectType); var evaluator = new ExpressionEvaluator(descriptor, wrapper.CriteriaOperator, XpoTypesInfoHelper.GetXpoTypeInfoSource().XPDictionary.CustomFunctionOperators); return(evaluator.Fit(targetObject)); }
public FilterEvaluator(EvaluatorContextDescriptor descriptor, string filterCriteria) : this(descriptor, CriteriaOperator.Parse(filterCriteria, new object[0])) { }
internal IList <IConditionalAppearanceItem> Validate(object[] contextObjects, EvaluatorContextDescriptor evaluatorContextDescriptor) { var ruleValid = (bool)this.CallMethod("GetRuleValid", new[] { typeof(object[]), typeof(EvaluatorContextDescriptor) }, new object[] { contextObjects, evaluatorContextDescriptor }); var result = new List <IConditionalAppearanceItem>(); AppearanceState state = ruleValid ? AppearanceState.CustomValue : AppearanceState.ResetValue; if (Properties.Properties.HasValue(typeof(IModelAppearanceFont))) { result.Add(new AppearanceItemFont(state, Properties.Priority, Properties.Properties)); } return(result); }