private void cboType_SelectedIndexChanged(object sender, EventArgs e) { string type = cboType.SelectedItem.ToString(); Command = UDTCmdProvider.GetCmd(type); xmlEditor1.Text = Command.Sample.OuterXml; btnSave.Enabled = true; }
private void AddCommand(IUDTCommand cmd) { int index = this.dgCommand.Rows.Add(); DataGridViewRow row = dgCommand.Rows[index]; row.Cells[colType.Name].Value = cmd.Type; row.Cells[colDesc.Name].Value = cmd.Description; row.Tag = cmd; }
private void EditAllCmdForm_Load(object sender, EventArgs e) { XmlHelper h = new XmlHelper("<UDT/>"); foreach (DataGridViewRow row in _dgView.Rows) { IUDTCommand cmd = row.Tag as IUDTCommand; h.AddElement(".", cmd.Result); } this.xmlEditor1.Text = h.XmlString; }
private void btnAddCmd_Click(object sender, EventArgs e) { CmdEditorForm cmdForm = new CmdEditorForm(); cmdForm.StartPosition = FormStartPosition.CenterParent; cmdForm.Completed += delegate(object s, EventArgs arg) { IUDTCommand cmd = cmdForm.Command; AddCommand(cmd); }; cmdForm.ShowDialog(); }
private void AddCommand(IUDTCommand cmd) { lblInfo.Text = "增加 Command : " + cmd.Description; int index = _datagrid.Rows.Add(); DataGridViewRow row = _datagrid.Rows[index]; row.Tag = cmd; row.Cells["colType"].Value = cmd.Type; row.Cells["colDesc"].Value = cmd.Description; Application.DoEvents(); }
private XmlElement GetCmdElement() { XmlHelper h = new XmlHelper("<UDT/>"); foreach (DataGridViewRow row in dgCommand.Rows) { IUDTCommand cmd = row.Tag as IUDTCommand; if (cmd == null) { continue; } h.AddElement(".", cmd.Result); } return(h.GetElement(".")); }
private void btnSave_Click(object sender, EventArgs e) { _dgView.Rows.Clear(); XmlHelper h = new XmlHelper(this.xmlEditor1.Text); foreach (XmlElement element in h.GetElements("Command")) { string type = element.GetAttribute("Type"); IUDTCommand cmd = UDTCmdProvider.GetCmd(type); cmd.Result = element; int index = _dgView.Rows.Add(); DataGridViewRow row = _dgView.Rows[index]; row.Tag = cmd; row.Cells["colType"].Value = cmd.Type; row.Cells["colDesc"].Value = cmd.Description; } this.Close(); }
private void btnStart_Click(object sender, EventArgs e) { if (!File.Exists(txtPreVersion.Text)) { MessageBox.Show("指定檔案不存在", "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } XmlDocument doc = new XmlDocument(); try { doc.Load(txtPreVersion.Text); } catch (Exception ex) { MessageBox.Show("載入檔案失敗 : " + ex.Message, "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } _datagrid.Rows.Clear(); //取出目前專案的 UDT 資料表 XmlHelper curHelper = new XmlHelper("<Content />"); foreach (UDTTable table in MainForm.CurrentUDT.Tables) { curHelper.AddElement(".", table.GetContent()); } XmlHelper preHelper = new XmlHelper(doc.DocumentElement); #region 比對欲新增之資料表 foreach (XmlElement curTable in curHelper.GetElements("Table")) { string curTableName = curTable.GetAttribute("Name"); XmlElement preTable = preHelper.GetElement("Table[@Name='" + curTableName + "']"); if (preTable == null) //之前版本無此 table { ImportTableCommand cmd = UDTCmdProvider.LoadXml <ImportTableCommand>(curTable); AddCommand(cmd); continue; } XmlHelper preTableHelper = new XmlHelper(preTable); XmlHelper curTableHelper = new XmlHelper(curTable); XmlElement tableNameElement = GenTableNameElement(curTableName); //比對欄位 #region 比對欄位 foreach (XmlElement curField in curTableHelper.GetElements("Field")) { string curFieldName = curField.GetAttribute("Name"); XmlElement preField = preTableHelper.GetElement("Field[@Name='" + curFieldName + "']"); if (preField == null) { AddFieldCommand cmd = UDTCmdProvider.LoadXml <AddFieldCommand>(tableNameElement, curField); AddCommand(cmd); continue; } string curDataType = curField.GetAttribute("DataType"); string preDataType = preField.GetAttribute("DataType"); XmlElement fieldNameElement = this.GenFieldNameElement(curFieldName); if (curDataType != preDataType) { AlterFieldDataTypeCommand cmd = UDTCmdProvider.LoadXml <AlterFieldDataTypeCommand>(tableNameElement, fieldNameElement, GenElement("DataType", curDataType)); AddCommand(cmd); } XmlHelper curFieldHelper = new XmlHelper(curField); XmlHelper preFieldHelper = new XmlHelper(preField); bool curIndex = curFieldHelper.TryGetBoolean("@Indexed", false); bool preIndex = preFieldHelper.TryGetBoolean("@Indexed", false); if (curIndex != preIndex) { AlterFieldIndexedCommand cmd = UDTCmdProvider.LoadXml <AlterFieldIndexedCommand>(tableNameElement, fieldNameElement, GenElement("Indexed", curIndex.ToString())); AddCommand(cmd); } bool curAllowNull = curFieldHelper.TryGetBoolean("@AllowNull", true); bool preAllowNull = preFieldHelper.TryGetBoolean("@AllowNull", true); if (curAllowNull != preAllowNull) { AlterFieldAllowNullCommand cmd = UDTCmdProvider.LoadXml <AlterFieldAllowNullCommand>(tableNameElement, fieldNameElement, GenElement("AllowNull", curAllowNull.ToString())); AddCommand(cmd); } string curDefault = curField.GetAttribute("Default"); string preDefault = preField.GetAttribute("Default"); if (curDefault != preDefault) { IUDTCommand cmd; if (string.IsNullOrWhiteSpace(curDefault)) { cmd = UDTCmdProvider.LoadXml <AlterFieldDropDefaultCommand>(tableNameElement, fieldNameElement); } else { cmd = UDTCmdProvider.LoadXml <AlterFieldSetDefaultCommand>(tableNameElement, fieldNameElement, GenElement("Default", curDefault)); } AddCommand(cmd); } } #endregion //反過來欄位比對, 之前有現在沒有就刪除 #region 反過來欄位比對, 之前有現在沒有就刪除 foreach (XmlElement preField in preTableHelper.GetElements("Field")) { string preFieldName = preField.GetAttribute("Name"); XmlElement curField = curTableHelper.GetElement("Field[@Name='" + preFieldName + "']"); if (curField == null) { IUDTCommand cmd = UDTCmdProvider.LoadXml <RemoveFieldCommand>(tableNameElement, GenFieldNameElement(preFieldName)); AddCommand(cmd); continue; } } #endregion #region Unique 比較 //比對 Unique 舊版不存在就新增 foreach (XmlElement curUniq in curTableHelper.GetElements("Unique")) { string curUniqName = curUniq.GetAttribute("Name"); XmlElement preUniq = preTableHelper.GetElement("Unique[@Name='" + curUniqName + "']"); if (preUniq == null) { XmlHelper th = XmlHelper.ParseAsHelper("<Table />"); th.SetAttribute(".", "Name", curTableName); th.AddElement(".", curUniq); IUDTCommand cmd = UDTCmdProvider.LoadXml <SetUniqueCommand>(th.GetElement(".")); AddCommand(cmd); } } //反過來比對 Unique 新版不存在就刪除 foreach (XmlElement preUniq in preTableHelper.GetElements("Unique")) { string preUniqName = preUniq.GetAttribute("Name"); XmlElement curUniq = curTableHelper.GetElement("Unique[@Name='" + preUniqName + "']"); if (curUniq == null) { IUDTCommand cmd = UDTCmdProvider.LoadXml <RemoveUniqueCommand>(GenTableNameElement(curTableName), GenElement("UniqueName", preUniqName)); AddCommand(cmd); } } #endregion #region ForeignKey 比較 //比對 Fk, 舊版不存在就新增 foreach (XmlElement curFk in curTableHelper.GetElements("ForeignKey")) { string curFkName = curFk.GetAttribute("Name"); XmlElement preFk = preTableHelper.GetElement("ForeignKey[@Name='" + curFkName + "']"); if (preFk == null) { IUDTCommand cmd = UDTCmdProvider.LoadXml <AddForeignKeyCommand>(curFk); AddCommand(cmd); } } //反過來比對 Fk, 新版不存在就刪除 foreach (XmlElement preFk in preTableHelper.GetElements("ForeignKey")) { string preFkName = preFk.GetAttribute("Name"); XmlElement curFk = curTableHelper.GetElement("ForeignKey[@Name='" + preFkName + "']"); if (curFk == null) { IUDTCommand cmd = UDTCmdProvider.LoadXml <RemoveForeignKeyCommand>(GenTableNameElement(curTableName), GenElement("ForeignKeyName", preFkName)); AddCommand(cmd); } } #endregion } #endregion #region 比對欲刪之資料表 foreach (XmlElement preTable in preHelper.GetElements("Table")) { string preTableName = preTable.GetAttribute("Name"); XmlElement curTable = curHelper.GetElement("Table[@Name='" + preTableName + "']"); if (curTable == null) { IUDTCommand cmd = UDTCmdProvider.LoadXml <DropTableCommand>(GenTableNameElement(preTableName)); AddCommand(cmd); } } #endregion this.Close(); }