Esempio n. 1
0
        //public FilterViewModel()
        //{

        //}

        private static string GetEnumDescription(ConditionValue value)
        {
            // Get the Description attribute value for the enum value
            FieldInfo fi = value.GetType().GetField(value.ToString());

            DescriptionAttribute[] attributes = (DescriptionAttribute[])fi.GetCustomAttributes(typeof(DescriptionAttribute), false);

            if (attributes.Length > 0)
            {
                return(attributes[0].Description);
            }
            else
            {
                return(value.ToString());
            }
        }
Esempio n. 2
0
        private void saveToXml(XmlNode nodeFunctions)
        {
            var nodeFunction = Calculator.InsertNodeToXml(nodeFunctions, IsLimitation ? "limitation-function" : "function");
            var nodeElements = Calculator.InsertNodeToXml(nodeFunction, "elements");

            foreach (var element in Elements)
            {
                var nodeElement = Calculator.InsertNodeToXml(nodeElements, "element");

                var nodeOperator = Calculator.InsertNodeToXml(nodeElement, "operator");
                nodeOperator.InnerText = element.Operator == FunctionOperator.Addition ? "+" : "-";

                var nodeValue = Calculator.InsertNodeToXml(nodeElement, "value");
                nodeValue.InnerText = element.Value.ToString();
            }

            if (IsLimitation)
            {
                var nodeLimitation = Calculator.InsertNodeToXml(nodeFunction, "limitation");

                var nodeCondition = Calculator.InsertNodeToXml(nodeLimitation, "condition");
                nodeCondition.InnerText = Condition.ToString();

                var nodeValue = Calculator.InsertNodeToXml(nodeLimitation, "value");
                nodeValue.InnerText = ConditionValue.ToString();
            }
        }
        public override IEnumerable <(string filedName, string value)> GetStringFields()
        {
            yield return("IfKeywordStr", IfKeywordStr);

            yield return("ConditionStr", ConditionStr);

            yield return("ConditionValue", ConditionValue.ToString());

            yield return("BranchTaken", BranchTaken.ToString());

            yield return("DirectiveNameTokenStr", DirectiveNameTokenStr);

            yield return("HashTokenStr", HashTokenStr);

            yield return("EndOfDirectiveTokenStr", EndOfDirectiveTokenStr);

            yield return("IsActive", IsActive.ToString());
        }
        /// <summary>
        ///     Metoda vrsi evaluaciju po principu definisanim XACML standardom
        /// </summary>
        /// <param name="request"></param>
        /// <param name="rule"></param>
        /// <returns></returns>
        public static DecisionType RuleEvaluate(RequestType request, RuleType rule)
        {
            DecisionType Effect = DecisionType.Permit;

            if (rule.Effect.Equals(EffectType.Permit))
            {
                Effect = DecisionType.Permit;
            }
            else if (rule.Effect.Equals(EffectType.Deny))
            {
                Effect = DecisionType.Deny;
            }

            string AllOfValue = string.Empty;
            string AnyOfValue = string.Empty;

            TargetType Target = rule.Target;

            ConditionType Condition = rule.Condition;

            try
            {
                TargetResult TargetValue = TargetEvaluate.CheckTarget(Target, request);

                ConditionResult ConditionValue;

                if (TargetValue == TargetResult.NoMatch)
                {
                    ConditionValue = ConditionResult.DontCare;
                }
                else
                {
                    ConditionValue = ConditionEvaluate.CheckCondition(Condition, request);
                }

                Console.WriteLine("\nTarget evaluation: {0}", TargetValue.ToString());
                Console.WriteLine("Condition evaluation: {0}", ConditionValue.ToString());

                // RULE EVALUACIJA

                if (TargetValue == TargetResult.Match && ConditionValue == ConditionResult.True)
                {
                    return(Effect);
                }
                else if (TargetValue == TargetResult.Match && ConditionValue == ConditionResult.False)
                {
                    return(DecisionType.NotApplicable);
                }
                else if (TargetValue == TargetResult.Match && ConditionValue == ConditionResult.Indeterminate)
                {
                    return(DecisionType.Indeterminate);
                }
                else if (TargetValue == TargetResult.NoMatch && ConditionValue == ConditionResult.DontCare)
                {
                    return(DecisionType.NotApplicable);
                }
                else if (TargetValue == TargetResult.Indeterminate && ConditionValue == ConditionResult.DontCare)
                {
                    return(DecisionType.Indeterminate);
                }
                else
                {
                    return(DecisionType.Indeterminate);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: {0}", e.Message);
                return(DecisionType.Indeterminate);
            }
        }