Example #1
0
        /// <summary>
        /// Populates the RuleSet object from an XML representation
        /// </summary>
        /// <param name="node">The XML representation of the object</param>
        protected override void FromXml(XmlNode node)
        {
            base.FromXml(node);

            XmlAttribute multivalueConditionAttribute = node.Attributes["multivalue-condition"];

            if (multivalueConditionAttribute == null)
            {
                if (MASchema.Attributes[this.AttributeName].IsMultiValued)
                {
                    throw new ArgumentException(string.Format("The rule specifies a multi-valued attribute for evaulation, but does not specify a multivalue-condition operator"));
                }
            }
            else
            {
                if (!MASchema.Attributes[this.AttributeName].IsMultiValued)
                {
                    throw new ArgumentException(string.Format("The rule specifies a multivalued-condition for a single-valued attribute"));
                }

                MultiValueCondition multivalueCondition = MultiValueCondition.Any;
                if (Enum.TryParse(multivalueConditionAttribute.Value, true, out multivalueCondition))
                {
                    this.MultiValueCondition = multivalueCondition;
                }
                else
                {
                    throw new ArgumentException(string.Format("The multivalued-condition operator '{0}' is unknown", multivalueConditionAttribute.Value));
                }
            }
        }
Example #2
0
        private string CompileCondition(MultiValueCondition condition)
        {
            List <string> valueParams = new List <string>();

            foreach (string value in condition.values)
            {
                valueParams.Add(this.traits.markParam(this.paramsholder.Add(value)));
            }

            if (condition.inclusive)
            {
                return(condition.column.compile(this.traits) + " IN (" + string.Join(", ", valueParams.ToArray()) + ")");
            }
            else
            {
                return(condition.column.compile(this.traits) + " IN (" + string.Join(", ", valueParams.ToArray()) + ")");
            }
        }