Пример #1
0
        private void button1_Click(object sender, EventArgs e)
        {
            err.Clear();
            bool valid = true;

            if (string.IsNullOrWhiteSpace(txtName.Text))
            {
                valid = false;
                err.SetError(txtName, "名稱不可空白");
            }

            if (!valid)
            {
                return;
            }

            UDTHandler udt = UDTNodeHandler.UDTHandler;

            if (udt.Exists(txtName.Text))
            {
                valid = false;
                err.SetError(txtName, "資料表名稱已存在");
            }

            if (!valid)
            {
                return;
            }

            UDTTable table = null;

            try
            {
                table = udt.CreateTable(txtName.Text);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }

            //int nodeIndex = UDTNodeHandler.Node.Nodes.Count - 1;
            //TreeNode newNode = UDTNodeHandler.Node.Nodes.Insert(nodeIndex, txtName.Text.ToLower());
            //newNode.SelectedImageKey = "udt";
            //newNode.ImageKey = "udt";
            //newNode.Tag = new TableNodeHandler(newNode, table);
            //newNode.TreeView.SelectedNode = newNode;

            foreach (TreeNode node in UDTNodeHandler.Node.Nodes)
            {
                if (node.Text == txtName.Text.ToLower())
                {
                    node.TreeView.SelectedNode = node;
                    break;
                }
            }

            this.Close();
        }
        internal void LoadProject(string projectName, DevSiteLoginInfo devSite, bool checkDup, XmlElement source)
        {
            if (this._projects.Contains(projectName))
            {
                throw new Exception("專案已經存在");
            }

            XmlHelper sourceHelper = new XmlHelper(source);

            if (checkDup)
            {
                Connection    devConnection = devSite.TryConnect();
                Envelope      evn           = devConnection.SendRequest("UDSManagerService.ListContracts", new Envelope());
                XmlHelper     rsp           = new XmlHelper(evn.Body);
                StringBuilder contracts     = new StringBuilder();
                foreach (XmlElement contractElement in sourceHelper.GetElements("Property/Contract"))
                {
                    string contractName = contractElement.GetAttribute("Name");
                    if (rsp.GetElement("Contract[@Name='" + contractName + "']") != null)
                    {
                        contracts.Append(contractName).Append("\n");
                    }
                }

                evn = devConnection.SendRequest("UDTService.DDL.ListTables", new Envelope());
                rsp = new XmlHelper(evn.Body);
                StringBuilder tables = new StringBuilder();
                foreach (XmlElement contractElement in rsp.GetElements("Property/Table"))
                {
                    string tableName = contractElement.GetAttribute("Name");
                    if (rsp.GetElement("Table[@Name='" + tableName + "']") != null)
                    {
                        tables.Append(tableName).Append("\n");
                    }
                }
                StringBuilder msg = new StringBuilder();
                if (tables.Length > 0)
                {
                    msg.Append("檢查到重覆資料表 : \n").Append(tables);
                }

                if (contracts.Length > 0)
                {
                    msg.Append("檢查到重覆 Contract : \n").Append(contracts);
                }

                if (msg.Length > 0)
                {
                    throw new Exception(msg.ToString());
                }
            }

            string filepath = MainForm.Storage.GetPropertyValue(LOCAL_FILE_PATH, projectName);

            this.InternalAddProject(projectName, devSite, filepath);

            ProjectHandler ph = this.CreateProjectHandler(projectName, devSite);

            UDSHandler uds = ph.GetUDSHandler();
            XmlElement ce  = sourceHelper.GetElement("Property[@Name='UDS']");

            if (ce != null)
            {
                uds.ImportContracts(ce, true);
            }

            UDTHandler udt = ph.GetUDT();
            XmlElement te  = sourceHelper.GetElement("Property[@Name='UDT']");

            if (te != null)
            {
                udt.SetTables(te, true);
            }

            if (ProjectAdded != null)
            {
                ProjectAdded.Invoke(this, new ProjectEventArgs(projectName, devSite));
            }
        }