コード例 #1
0
        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());
            }
        }
コード例 #2
0
 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);
 }
コード例 #3
0
        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));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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));
        }
コード例 #6
0
 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);
 }
コード例 #7
0
 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);
 }
コード例 #8
0
        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));
        }
コード例 #9
0
        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));
        }
コード例 #10
0
 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;
 }
コード例 #11
0
 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);
 }
コード例 #12
0
 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;
 }