/// <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)); } } }
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()) + ")"); } }