Пример #1
0
        private void button2_Click(object sender, EventArgs e)
        {
            button2.Enabled = false;
            string strR = "";

            DataBaseIO.DataBaseManager dbm = DataBaseIO.DataBaseManager.GetDataBaseManager();
            DataTable dt = dbm.GetScriptInformation();

            foreach (FileInfo fi in new DirectoryInfo(@"d:\xxx").GetFiles("*.*", SearchOption.AllDirectories))
            {
                string strName = fi.FullName.Replace(@"d:\xxx", @"scripts\Map");
                string strCode = Helper.FileToString(fi.FullName);
                if (dt.Select("path='" + strName.ToLower() + "'").Length > 0 ||
                    dt.Select("path='" + strName.ToUpper() + "'").Length > 0)
                {
                    strR += strName + "\r\n";
                    continue;
                }
                //关键部位!!去掉注释就可以导入了
                //dbm.CreateScriptData(strName);
                //string strView = "":
                //bool bret = dbm.SaveScriptData(strName, strCode, out strView);
                //if(bret)
                //    File.Delete(fi.FullName);
            }
            MessageBox.Show("成功");
            button2.Enabled = true;
        }
Пример #2
0
        private void btnReplace_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("替换结果将不直接写入数据库,而且不能恢复,确认继续操作?", "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button2) != DialogResult.Yes)
            {
                return;
            }

            SetControlsEnabled(false);
            if (treePreview.Nodes.Count == 0)
            {
                MessageBox.Show("请先搜索出文件,再针对文件进行替换!");
                SetControlsEnabled(true);
                return;
            }

            DataBaseIO.DataBaseManager dbm = DataBaseIO.DataBaseManager.GetDataBaseManager();

            //第1步 检查锁
            foreach (TreeNode tn_file in treePreview.Nodes)
            {
                if (!tn_file.Checked)
                {
                    continue;
                }
                Hashtable ht_file = tn_file.Tag as Hashtable;
                string    strID   = ht_file["id"].ToString();
                if (dbm.IsScriptLocked(strID))
                {
                    //文件锁了
                    MessageBox.Show("失败:文件[" + tn_file.Text + "]被正在被人编辑,无法启动替换。");
                    SetControlsEnabled(true);
                    return;
                }
            }

            //第2步 检查在选择过程中,选中项的服务器端数据变过没有
            foreach (TreeNode tn_file in treePreview.Nodes)
            {
                if (!tn_file.Checked)
                {
                    continue;
                }
                Hashtable ht_file        = tn_file.Tag as Hashtable;
                string    strFileContent = ht_file["strFileContent"].ToString();
                string    strID          = ht_file["id"].ToString();
                if (strFileContent != dbm.GetScriptData(strID))
                {
                    //服务器端变过了
                    MessageBox.Show("失败:查找之后,替换之前,文件内容已变更,所以无法替换,请重新启动替换程序!");
                    SetControlsEnabled(true);
                    return;
                }
            }

            //第3步 锁定选择项
            foreach (TreeNode tn_file in treePreview.Nodes)
            {
                if (!tn_file.Checked)
                {
                    continue;
                }
                Hashtable ht_file = tn_file.Tag as Hashtable;
                string    strID   = ht_file["id"].ToString();
                if (!dbm.LockScript(strID))
                {
                    MessageBox.Show("失败:检查一致性的过程中有人锁定了脚本,请迅速保存所有文件后重新运行脚本编辑器再次替换。");
                    SetControlsEnabled(true);
                    return;
                }
            }

            //第4步 替换选择项
            string strResult  = "";
            string strFind    = findTextBox.Text;
            string strReplace = replaceTextBox.Text;

            foreach (TreeNode tn_file in treePreview.Nodes)
            {
                if (!tn_file.Checked)
                {
                    continue;
                }
                Hashtable ht_file    = tn_file.Tag as Hashtable;
                string    strContent = "";
                foreach (TreeNode tnz in tn_file.Nodes)
                {
                    Hashtable ht_nodez = tnz.Tag as Hashtable;
                    strContent += ht_nodez["line_before"].ToString();
                    if (!tnz.Checked)
                    {
                        strContent += strFind;
                    }
                    else
                    {
                        strContent += strReplace;
                    }
                }
                strContent += ht_file["line_last"].ToString();
                string strView = "";
                bool   ret     = dbm.SaveScriptData(tn_file.Text, strContent, out strView);
                strResult += tn_file.Text + (ret ? "...OK\n" : "...NG\n");
            }

            //第5步 解锁选择项
            foreach (TreeNode tn_file in treePreview.Nodes)
            {
                if (!tn_file.Checked)
                {
                    continue;
                }
                Hashtable ht_file = tn_file.Tag as Hashtable;
                string    strID   = ht_file["id"].ToString();
                if (!dbm.UnLockScript(strID))
                {
                    MessageBox.Show(strResult + "成功:替换完成后解锁失败,原因不明,请联系管理员");
                    SetControlsEnabled(true);
                    return;
                }
            }

            MessageBox.Show("替换完成!");//\n" + strResult);
            treePreview.Nodes.Clear();
            wbPriview.DocumentText = "";
            SetControlsEnabled(true);
        }