コード例 #1
0
 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;
 }
コード例 #2
0
        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;
        }
コード例 #3
0
        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;
        }
コード例 #4
0
        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;
        }
コード例 #5
0
        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();
        }
コード例 #6
0
        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();
        }
コード例 #7
0
        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("."));
        }
コード例 #8
0
        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();
        }
コード例 #9
0
 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;
 }
コード例 #10
0
        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();
        }
コード例 #11
0
        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();
        }