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());
            }
        }
Exemplo n.º 2
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;
 }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
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));
        }
        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));
        }
Exemplo n.º 6
0
 public FilterEvaluator(EvaluatorContextDescriptor descriptor, string filterCriteria)
     : this(descriptor, CriteriaOperator.Parse(filterCriteria, new object[0]))
 {
 }
Exemplo n.º 7
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);
        }