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()); } }
public static ExpressionEvaluator NewExpressionEvaluator(this CriteriaOperator criteriaOperator, object targetObject){ var objectType = targetObject.GetType(); var wrapper = new LocalizedCriteriaWrapper(objectType, criteriaOperator); wrapper.UpdateParametersValues(targetObject); var descriptor = GetEvaluatorContextDescriptor(objectType, targetObject); return new ExpressionEvaluator(descriptor, wrapper.CriteriaOperator, XpoTypesInfoHelper.GetXpoTypeInfoSource().XPDictionary.CustomFunctionOperators); }
private bool ValidByCriteria(string criteria, object obj) { var descriptor = ObjectSpace.GetEvaluatorContextDescriptor(obj.GetType()); var criteriaOperator = ObjectSpace.ParseCriteria(criteria); var wrapper = new LocalizedCriteriaWrapper(obj.GetType(), criteriaOperator); wrapper.UpdateParametersValues(obj); return(ObjectSpace.GetExpressionEvaluator(descriptor, wrapper.CriteriaOperator).Fit(obj)); }
public static ExpressionEvaluator NewExpressionEvaluator(this CriteriaOperator criteriaOperator, object targetObject) { var objectType = targetObject.GetType(); var wrapper = new LocalizedCriteriaWrapper(objectType, criteriaOperator); wrapper.UpdateParametersValues(targetObject); var descriptor = GetEvaluatorContextDescriptor(objectType, targetObject); return(new ExpressionEvaluator(descriptor, wrapper.CriteriaOperator, XpoTypesInfoHelper.GetXpoTypeInfoSource().XPDictionary.CustomFunctionOperators)); }
private static bool fit(object targetObject, string criteria) { Type objectType = targetObject.GetType(); var wrapper = new LocalizedCriteriaWrapper(objectType, criteria); wrapper.UpdateParametersValues(); var descriptor = new EvaluatorContextDescriptorDefault(objectType); var evaluator = new ExpressionEvaluator(descriptor, wrapper.CriteriaOperator); 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); }
private string GetHintPanelText(FiltersByCollectionWrapper filtersByCollectionWrapper, CriteriaOperator criteriaOperator) { if (!(ReferenceEquals(criteriaOperator, null))) { var wrapper = new LocalizedCriteriaWrapper(filtersByCollectionWrapper.BinaryOperatorLastMemberClassType, criteriaOperator); wrapper.UpdateParametersValues(); CriteriaOperator userFriendlyFilter = CriteriaOperator.Clone(wrapper.CriteriaOperator); new FilterWithObjectsUserFrendlyStringProcessor(filtersByCollectionWrapper.BinaryOperatorLastMemberClassType).Process(userFriendlyFilter); return(userFriendlyFilter.ToString()); } return(null); }
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)); }
private string GetHintPanelText(FiltersByCollectionWrapper filtersByCollectionWrapper, CriteriaOperator criteriaOperator) { if (criteriaOperator != null) { var wrapper = new LocalizedCriteriaWrapper(filtersByCollectionWrapper.BinaryOperatorLastMemberClassType, criteriaOperator); wrapper.UpdateParametersValues(); CriteriaOperator userFriendlyFilter = CriteriaOperator.Clone(wrapper.CriteriaOperator); new FilterWithObjectsUserFrendlyStringProcessor(filtersByCollectionWrapper.BinaryOperatorLastMemberClassType).Process(userFriendlyFilter); return userFriendlyFilter.ToString(); } return null; }
private static bool fit(object targetObject, string criteria) { Type objectType = targetObject.GetType(); var wrapper = new LocalizedCriteriaWrapper(objectType, criteria); wrapper.UpdateParametersValues(); var descriptor = new EvaluatorContextDescriptorDefault(objectType); var evaluator = new ExpressionEvaluator(descriptor, wrapper.CriteriaOperator); return evaluator.Fit(targetObject); }
public override void Execute(SingleChoiceActionExecuteEventArgs args) { base.Execute(args); if (this.shortcut == null) { return; } View view = args.Action.Application.ProcessShortcut(this.shortcut); ListView listView = view as ListView; if (listView != null) { string backFilterCriteria = ((ViewMenuItem)args.SelectedChoiceActionItem).Model.BackFilterCriteria; if (!string.IsNullOrEmpty(backFilterCriteria) && listView.CollectionSource.CanApplyCriteria) { CriteriaOperator criteriaOperator = CriteriaOperator.Parse(backFilterCriteria, new object[0]); LocalizedCriteriaWrapper localizedCriteriaWrapper = new LocalizedCriteriaWrapper(listView.ObjectTypeInfo.Type, criteriaOperator); if (localizedCriteriaWrapper.EditableParameters.Count > 0) { string message = localizedCriteriaWrapper.EditableParameters.Keys.Aggregate("Cannot process editable parameters:\n", (string current, string parameterName) => current + string.Format("'@{0}'\n", parameterName)); throw new InvalidOperationException(message); } localizedCriteriaWrapper.UpdateParametersValues(); listView.CollectionSource.Criteria["BackFilterCriteria"] = criteriaOperator; } } args.ShowViewParameters.CreatedView = view; args.ShowViewParameters.TargetWindow = TargetWindow.Current; }