public static bool LoadFromFile(string fileName, out not obj) { System.Exception exception = null; return LoadFromFile(fileName, out obj, out exception); }
/// <summary> /// Deserializes xml markup from file into an not object /// </summary> /// <param name="fileName">string xml file to load and deserialize</param> /// <param name="obj">Output not object</param> /// <param name="exception">output Exception value if deserialize failed</param> /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns> public static bool LoadFromFile(string fileName, out not obj, out System.Exception exception) { exception = null; obj = default(not); try { obj = LoadFromFile(fileName); return true; } catch (System.Exception ex) { exception = ex; return false; } }
/// <summary> /// Deserializes workflow markup into an not object /// </summary> /// <param name="xml">string workflow markup to deserialize</param> /// <param name="obj">Output not object</param> /// <param name="exception">output Exception value if deserialize failed</param> /// <returns>true if this XmlSerializer can deserialize the object; otherwise, false</returns> public static bool Deserialize(string xml, out not obj, out System.Exception exception) { exception = null; obj = default(not); try { obj = Deserialize(xml); return true; } catch (System.Exception ex) { exception = ex; return false; } }
public static bool Deserialize(string xml, out not obj) { System.Exception exception = null; return Deserialize(xml, out obj, out exception); }
private void buildCondition() { ConditionsPartEntry cpe = new ConditionsPartEntry(model); TagData td; if (this.dataGridView.Rows.Count == 2 // auto last row && !this.listBoxGovernor.SelectedItem.ToString().Equals("none") ) // none handled separately { // a simple condition if (this.dataGridView.Rows[0].Cells["Questions"].Value is condition) { // this is just condition re-use! condition cReused = (condition)this.dataGridView.Rows[0].Cells["Questions"].Value; setTag(cc, cReused); cc.Title = cReused.description; // that'll do for now return; } // Usual case Pairing pair = buildXPathRef(this.dataGridView.Rows[0]); cc.Title = restrict64chars(pair.titleText); if (pair.xpathEntry.dataBinding.xpath.Contains("position()")) { // special case. TODO: make this a normal condition! // since this approach won't work if it is in complex condition td = new TagData(""); td.set("od:RptPosCon", pair.xpathEntry.id); cc.Tag = td.asQueryString(); cc.SetPlaceholderText(null, null, "Type the text that'll appear between repeated items."); // that'll only be displayed if the cc is not being wrapped around existing content :-) return; } condition result = cpe.setup(pair.xpathEntry); result.name = this.textBoxName.Text; if (string.IsNullOrWhiteSpace(this.textBoxDescription.Text)) { result.description = pair.titleText; } else { result.description = this.textBoxDescription.Text; } cpe.save(); setTag(cc, result); return; } // multi-row int last = this.dataGridView.Rows.Count - 1; condition outer = new condition(); cc.Title = null; if (this.listBoxGovernor.SelectedItem.ToString().Equals("all")) { // = and and and = new and(); outer.Item = and; foreach (DataGridViewRow row in this.dataGridView.Rows) { // Last row is added automatically if (row == this.dataGridView.Rows[last]) continue; if (row.Cells["Questions"].Value is condition) { // this is just condition re-use! condition cReused = (condition)row.Cells["Questions"].Value; if (cc.Title == null) { cc.Title = this.restrict64chars(cReused.description); // that'll do for now } else { cc.Title = this.restrict64chars(cc.Title + " and " + cReused.description); // that'll do for now } conditionref conditionref = new conditionref(); conditionref.id = cReused.id; and.Items.Add(conditionref); } else { // xpathref Pairing pair = buildXPathRef(row); if (cc.Title == null) { cc.Title = this.restrict64chars(pair.titleText); } else { cc.Title = this.restrict64chars(cc.Title + " and " + pair.titleText); } xpathref xpathref = new xpathref(); xpathref.id = pair.xpathEntry.id; and.Items.Add(xpathref); } } outer.name = this.textBoxName.Text; if (string.IsNullOrWhiteSpace(this.textBoxDescription.Text)) { outer.description = cc.Title; } else { outer.description = this.textBoxDescription.Text; } cpe.add(outer, null); cpe.save(); setTag(cc, outer); return; } if (this.listBoxGovernor.SelectedItem.ToString().Equals("any") ) { // = or or or = new or(); outer.Item = or; foreach (DataGridViewRow row in this.dataGridView.Rows) { // Last row is added automatically if (row == this.dataGridView.Rows[last]) continue; if (row.Cells["Questions"].Value is condition) { // this is just condition re-use! condition cReused = (condition)row.Cells["Questions"].Value; if (cc.Title == null) { cc.Title = this.restrict64chars(cReused.description); // that'll do for now } else { cc.Title = this.restrict64chars(cc.Title + " and " + cReused.description); // that'll do for now } conditionref conditionref = new conditionref(); conditionref.id = cReused.id; or.Items.Add(conditionref); } else { Pairing pair = buildXPathRef(row); if (cc.Title == null) { cc.Title = this.restrict64chars(pair.titleText); } else { cc.Title = this.restrict64chars(cc.Title + " or " + pair.titleText); } xpathref xpathref = new xpathref(); xpathref.id = pair.xpathEntry.id; or.Items.Add(xpathref); } } outer.name = this.textBoxName.Text; if (string.IsNullOrWhiteSpace(this.textBoxDescription.Text)) { outer.description = cc.Title; } else { outer.description = this.textBoxDescription.Text; } cpe.add(outer, null); cpe.save(); setTag(cc, outer); return; } if (this.listBoxGovernor.SelectedItem.ToString().Equals("none")) { // none: not(A || B) = !A && !B not not = new not(); outer.Item = not; or or = new or(); not.Item = or; cc.Title = "NONE OF "; foreach (DataGridViewRow row in this.dataGridView.Rows) { // Last row is added automatically if (row == this.dataGridView.Rows[last]) continue; if (row.Cells["Questions"].Value is condition) { // this is just condition re-use! condition cReused = (condition)row.Cells["Questions"].Value; if (cc.Title == null) { cc.Title = this.restrict64chars(cReused.description); // that'll do for now } else { cc.Title = this.restrict64chars(cc.Title + " and " + cReused.description); // that'll do for now } conditionref conditionref = new conditionref(); conditionref.id = cReused.id; or.Items.Add(conditionref); } else { Pairing pair = buildXPathRef(row); if (cc.Title.Equals("NONE OF ")) { cc.Title = this.restrict64chars(cc.Title + pair.titleText); } else { cc.Title = this.restrict64chars(cc.Title + " or " + pair.titleText); } xpathref xpathref = new xpathref(); xpathref.id = pair.xpathEntry.id; or.Items.Add(xpathref); } } outer.name = this.textBoxName.Text; if (string.IsNullOrWhiteSpace(this.textBoxDescription.Text)) { outer.description = cc.Title; } else { outer.description = this.textBoxDescription.Text; } cpe.add(outer, null); cpe.save(); setTag(cc, outer); return; } //// Make sure this question is allowed here //// ie the it is top level or in a common repeat ancestor. //// We do this last, so this cc has od:condition on it, //// in which case we can re-use existing code to do the check //// TODO: when we support and/or, will need to do this //// for each variable. //ContentControlNewConditionCheck variableRelocator = new ContentControlNewConditionCheck(); //variableRelocator.checkAnswerAncestry(xpathExisting.id); }