private bool isTemplateRule(Rule r, System.Data.DataTable dataTable) { if(dataTable != null) { foreach(System.Data.DataColumn col in dataTable.Columns) { //check the rule name if(r.Name.ToLower().IndexOf("#" + col.ColumnName) != -1) return true; //check the inputs foreach(Input i in r.Inputs) { if(i.Text.ToLower().IndexOf("#" + col.ColumnName) != -1) return true; } //check the outputs and commands foreach(Output o in r.Outputs) { if(o.Text.ToLower().IndexOf("#" + col.ColumnName) != -1) return true; if(o.Cmd.ToLower().IndexOf("#" + col.ColumnName) != -1) return true; } }//foreach column }//if(dataTable != null) return false; }
private void deleteRule(Rule ruleToDelete, List<Rule> rules) { if(rules.Contains(ruleToDelete)) { rules.Remove(ruleToDelete); } else { foreach(Rule r in rules) { deleteRule(ruleToDelete, r.Children); } } }
private bool isDescendant(Rule rParent, Rule rChild, List<Rule> children) { if(rParent.Children.Contains(rChild)) return true; foreach(Rule r in children) return isDescendant(r, rChild, r.Children); return false; }
public Rule createRuleFromTemplateRow(Rule baseRule, System.Data.DataColumnCollection columns, System.Data.DataRow row, int index) { Rule newRule = new Rule(); newRule.Id = baseRule.Id + "_" + index; newRule.Name = this.replaceTemplateData(baseRule.Name, columns, row); foreach(Input i in baseRule.Inputs) { Input newInput = new Input(); newInput.Id = i.Id + "_" + index; newInput.Text = this.replaceTemplateData(i.Text, columns, row); newInput.Condition = this.replaceTemplateData(i.Condition, columns, row); newRule.Inputs.Add(newInput); } foreach(Output o in baseRule.Outputs) { Output newOutput = new Output(); newOutput.Id = o.Id + "_" + index; newOutput.Text = this.replaceTemplateData(o.Text, columns, row); newOutput.Cmd = this.replaceTemplateData(o.Cmd, columns, row); newOutput.Condition = this.replaceTemplateData(o.Condition, columns, row); newRule.Outputs.Add(newOutput); } foreach(Rule child in baseRule.Children) { newRule.Children.Add(this.createRuleFromTemplateRow(child, columns, row, index)); } newRule.VirtualParents = baseRule.VirtualParents; return newRule; }
/* * Accessor Methods * */ public bool IsDescendant(Rule rParent, Rule rChild) { return this.isDescendant(rParent, rChild, rParent.Children); }
public Rule CloneRule(Rule r) { Rule rClone = new Rule(); rClone.Name = r.Name; rClone.Id = this.GetNewRuleId(); foreach(Input i in r.Inputs) rClone.Inputs.Add(this.CloneInput(i, r)); foreach(Output o in r.Outputs) rClone.Outputs.Add(this.CloneOutput(o, r)); foreach(string id in r.VirtualParents) rClone.VirtualParents.Add(id); foreach(Rule rRecursive in r.Children) rClone.Children.Add(this.CloneRule(rRecursive)); return rClone; }
public Output CloneOutput(Output o, Rule r) { Output oClone = new Output(); oClone.Text = o.Text; oClone.Cmd = o.Cmd; oClone.Condition = o.Condition; oClone.Id = r.GetNewOutputId(); return oClone; }
public Input CloneInput(Input i, Rule r) { Input iClone = new Input(); iClone.Text = i.Text; iClone.Condition = i.Condition; iClone.Id = r.GetNewInputId(); return iClone; }
public string AddRuleChild(Rule parent, string ruleName) { if(parent != null) { Rule ruleNew = new Rule(); ruleNew.Id = GetNewRuleId(); ruleNew.Name = ruleName; parent.Children.Add(ruleNew); return ruleNew.Id; } else return AddRule(ruleName); }
/* * Modifier Methods */ public Rule AddRule() { Rule ruleNew = new Rule(); ruleNew.Id = GetNewRuleId(); this.Rules.Add(ruleNew); return ruleNew; }