コード例 #1
0
ファイル: frmDataSubmit.cs プロジェクト: siszoey/geosufan
        private void btnOk_Click(object sender, EventArgs e)
        {
            Exception eError = null;

            SysCommon.Gis.SysGisDataSet pHistoSysGisDT = new SysCommon.Gis.SysGisDataSet();//历史库连接
            //判断源数据是否连接
            if (comboBoxOrgType.Text == "ESRI文件数据库(*.gdb)")
            {
                if (this.textBoxX1.Text == "")
                {
                    SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "请设置源数据连接");
                    return;
                }
            }

            else if (comBoxType.Text == "ArcSDE(For Oracle)")
            {
                if (txtServer.Text == "" || txtInstance.Text == "" || txtDB.Text == "" || txtVersion.Text == "" || txtUser.Text == "" || txtPassword.Text == "")
                {
                    SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "请设置目标数据连接!");
                    return;
                }
            }
            else
            {
                if (txtDB.Text == "")
                {
                    SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "请设置目标数据连接!");
                    return;
                }
            }

            string fileXml = "";

            if (v_OpeType == EnumOperateType.Submit)
            {
                //图幅数据提交
                fileXml = ModData.DBTufuInputXml;
            }
            if (!File.Exists(fileXml))
            {
                SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "对照关系文件不存在!\n" + fileXml);
                return;
            }

            //判断历史库是否连接成功
            bool isConSucc = true;

            if (cmbHistoType.Text == "ArcSDE(For Oracle)")
            {
                if (txtHistoServer.Text.Trim() == "" || txtHistoUser.Text.Trim() == "" || txtHistoPassword.Text.Trim() == "")
                {
                    isConSucc = false;
                }
                else
                {
                    pHistoSysGisDT.SetWorkspace(txtHistoServer.Text.Trim(), txtHistoInstance.Text.Trim(), txtHistoDB.Text.Trim(), txtHistoUser.Text.Trim(), txtHistoPassword.Text.Trim(), txtHistoVersion.Text.Trim(), out eError);
                    if (eError != null)
                    {
                        isConSucc = false;
                    }
                }
            }
            else if (cmbHistoType.Text.Trim() == "ESRI文件数据库(*.gdb)")
            {
                if (txtHistoDB.Text.Trim() == "")
                {
                    isConSucc = false;
                }
                else
                {
                    pHistoSysGisDT.SetWorkspace(txtHistoDB.Text.Trim(), SysCommon.enumWSType.GDB, out eError);
                    if (eError != null)
                    {
                        isConSucc = false;
                    }
                }
            }
            else
            {
                if (txtHistoDB.Text.Trim() == "")
                {
                    isConSucc = false;
                }
                else
                {
                    pHistoSysGisDT.SetWorkspace(txtHistoDB.Text.Trim(), SysCommon.enumWSType.PDB, out eError);
                    if (eError != null)
                    {
                        isConSucc = false;
                    }
                }
            }
            if (!isConSucc)
            {
                //若历史库连接不成功
                SysCommon.Error.frmInformation InfoDial = new SysCommon.Error.frmInformation("是", "否", "是否将数据置为历史?");
                if (InfoDial.ShowDialog() == DialogResult.OK)
                {
                    SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "历史库连接失败,请重新选择历史库!");
                    return;
                }
            }
            #region FID记录表是否连接成功
            //SysCommon.DataBase.SysDataBase pSysDB = new SysCommon.DataBase.SysDataBase();
            //string connectionStr = "";
            //switch (cmbFIDType.Text.ToUpper())
            //{
            //    case "ORACLE":
            //        connectionStr = "Data Source=" + txtFIDInstance.Text + ";Persist Security Info=True;User ID=" + txtFIDUser.Text + ";Password="******";Unicode=True";
            //        pSysDB.SetDbConnection(connectionStr, SysCommon.enumDBConType.ORACLE, SysCommon.enumDBType.ORACLE, out eError);
            //        break;
            //    case "ACCESS":
            //        connectionStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +txtFIDInstance.Text + ";Mode=Share Deny None;Persist Security Info=False";
            //        pSysDB.SetDbConnection(connectionStr, SysCommon.enumDBConType.OLEDB, SysCommon.enumDBType.ACCESS, out eError);
            //        break;
            //    case "SQL":
            //        connectionStr = "Data Source=" + txtFIDInstance.Text + ";Initial Catalog=" + txtFIDServer.Text + ";User ID=" + txtFIDUser.Text + ";Password="******"提示", "FID记录表库连接失败!");
            //    return;
            //}
            #endregion

            //获得图幅总范围
            XmlNode    ProNode    = v_AppGIS.ProjectTree.SelectedNode.Tag as XmlNode;
            XmlElement workDBElem = ProNode.SelectSingleNode(".//内容//图幅工作库//范围信息") as XmlElement;
            string     rangeStr   = workDBElem.GetAttribute("范围").Trim();
            byte[]     xmlByte    = Convert.FromBase64String(rangeStr);
            object     pGeo       = new PolygonClass();
            if (XmlDeSerializer(xmlByte, pGeo) == false)
            {
                SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "几何范围解析出错!");
                return;
            }
            m_Geometry = pGeo as IGeometry;
            if (m_Geometry == null)
            {
                SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "图幅范围为空!");
                return;
            }

            string pDateTimeStr = DateTime.Now.ToString("u");

            Plugin.Application.IAppFormRef pAppFormRef = v_AppGIS as Plugin.Application.IAppFormRef;
            pAppFormRef.OperatorTips = "获取数据信息...";

            //根据窗体设置形成数据操作xml内容
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.LoadXml("<数据移植></数据移植>");
            XmlNode sourceNode = ModDBOperator.SelectNode(xmlDoc.DocumentElement as XmlNode, "源数据连接");

            XmlElement dataElement = xmlDoc.CreateElement("源数据");
            dataElement.SetAttribute("类型", comboBoxOrgType.Tag.ToString().Trim());
            if (comboBoxOrgType.Text.Trim() == "ESRI文件数据库(*.gdb)")
            {
                dataElement.SetAttribute("服务器", "");
                dataElement.SetAttribute("服务名", "");
                dataElement.SetAttribute("数据库", this.textBoxX1.Text);
                dataElement.SetAttribute("用户", "");
                dataElement.SetAttribute("密码", "");
                dataElement.SetAttribute("版本", "");
            }
            sourceNode.AppendChild((XmlNode)dataElement);

            XmlElement objElementTemp = ModDBOperator.SelectNode(xmlDoc.DocumentElement as XmlNode, "目标数据连接") as XmlElement;
            objElementTemp.SetAttribute("类型", comBoxType.Tag.ToString().Trim());
            objElementTemp.SetAttribute("服务器", txtServer.Text.Trim());
            objElementTemp.SetAttribute("服务名", txtInstance.Text.Trim());
            objElementTemp.SetAttribute("数据库", txtDB.Text.Trim());
            objElementTemp.SetAttribute("用户", txtUser.Text.Trim());
            objElementTemp.SetAttribute("密码", txtPassword.Text.Trim());
            objElementTemp.SetAttribute("版本", txtVersion.Text.Trim());

            XmlElement RuleElement = ModDBOperator.SelectNode(xmlDoc.DocumentElement as XmlNode, "规则") as XmlElement;
            RuleElement.SetAttribute("路径", fileXml);

            pAppFormRef.OperatorTips = "初始化数据处理树图...";
            //初始化数据处理树图
            InitialDBTree newInitialDBTree = new InitialDBTree();
            newInitialDBTree.OnCreateDataTree(v_AppGIS.DataTree, xmlDoc);
            if ((bool)v_AppGIS.DataTree.Tag == false)
            {
                return;
            }

            //进行数据移植
            this.Hide();
            pAppFormRef.OperatorTips = "进行图幅数据提交...";
            esriSpatialRelEnum RelEnum = esriSpatialRelEnum.esriSpatialRelIntersects;
            if (m_DataThread == null)
            {
                m_DataThread = new clsDataThread(v_AppGIS, m_Geometry, RelEnum, true, null, null, v_OpeType, pHistoSysGisDT, pDateTimeStr);
            }
            Thread aThread = new Thread(new ThreadStart(m_DataThread.DoBatchWorks));
            m_DataThread.CurrentThread = aThread;
            m_DataThread.UserName      = txtHistoUser.Text; //历史库用户名  xisheng 2011.07.15
            m_DataThread.UserNameNow   = txtUser.Text;      //现实库用户名  xisheng 2011.07.15
            v_AppGIS.CurrentThread     = aThread;
            aThread.Start();

            //利用计时器刷新mapcontrol
            if (_timer == null)
            {
                _timer = new System.Windows.Forms.Timer();
            }
            _timer.Interval = 800;
            _timer.Enabled  = true;
            _timer.Tick    += new EventHandler(Timer_Tick);
        }
コード例 #2
0
ファイル: FrmImportData.cs プロジェクト: siszoey/geosufan
        //确定
        private void btnOk_Click(object sender, EventArgs e)
        {
            //Exception err = null;
            DataTable pDataTable = null;

            SysCommon.DataBase.SysDataBase pSysDB = null;
            string pObjDBType   = "";                            //目标数据库类型
            string pObjServer   = "";                            //目标服务器
            string pObjInstance = "";                            //目标实例名
            string pObjDataBase = "";                            //目标数据库
            string pObjUser     = "";                            //用户
            string pObjPassword = "";                            //密码
            string pObjVersion  = "";                            //版本


            //源数据连接设置检查
            if (listViewEx.Items.Count == 0)
            {
                SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "请设置源数据连接!");
                return;
            }
            //cyf 20110625 modify:根据数据集节点获得数据库节点
            //DevComponents.AdvTree.Node pDtNode = m_AppGIS.ProjectTree.SelectedNode;      //数据集树节点
            //string pFeaDtName = pDtNode.Text;                      //数据集名称
            //try { m_DbProjectElement = pDtNode.Parent.Tag as XmlElement; }     //数据库节点
            //catch { }
            //if (m_DbProjectElement == null) return;
            //end
            //目标数据库连接信息
            if (m_DbProjectElement != null)
            {
                try
                {
                    //cyf 20110625 modify:改为从数据库节点读取连接信息(以前是从数据库工程节点读取连接信息)
                    XmlElement aElement = m_DbProjectElement.SelectSingleNode(".//连接信息") as XmlElement;
                    pObjDBType   = aElement.GetAttribute("类型");
                    pObjServer   = aElement.GetAttribute("服务器");
                    pObjInstance = aElement.GetAttribute("服务名");
                    pObjDataBase = aElement.GetAttribute("数据库");
                    pObjVersion  = aElement.GetAttribute("版本");
                    pObjUser     = aElement.GetAttribute("用户");
                    pObjPassword = aElement.GetAttribute("密码");
                }
                catch (Exception er)
                {
                    //*******************************************************************
                    //guozheng added
                    if (ModData.SysLog != null)
                    {
                        ModData.SysLog.Write(er, null, DateTime.Now);
                    }
                    else
                    {
                        ModData.SysLog = new SysCommon.Log.clsWriteSystemFunctionLog();
                        ModData.SysLog.Write(er, null, DateTime.Now);
                    }
                    //********************************************************************

                    SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "系统数据库工程XML内容破坏,请检查!");
                    return;
                }
            }

            //目标数据库连接设置检查
            if (pObjDBType.ToUpper().Trim() == "SDE")
            {
                if (pObjUser.Trim() == "" || pObjPassword.Trim() == "")
                {
                    SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "请设置目标数据连接!");
                    return;
                }
            }
            else
            {
                if (pObjDataBase.Trim() == "")
                {
                    SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "请设置目标数据连接!");
                    return;
                }
                if (pObjDBType.ToUpper().Trim() == "GDB")
                {
                    if (!pObjDataBase.Trim().Contains(".gdb"))
                    {
                        SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "目标数据连接,请选择ESRI文件数据库!");
                        return;
                    }
                }
            }

            //映射规则文件检查
            if (!File.Exists(ModData.DBImportPath))
            {
                SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "映射关系文件‘批量数据入库.xml’不存在,请检查!");
                return;
            }


            Plugin.Application.IAppFormRef pAppFormRef = m_AppGIS as Plugin.Application.IAppFormRef;
            pAppFormRef.OperatorTips = "获取数据信息...";

            //根据窗体设置形成数据操作xml内容
            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.LoadXml("<数据移植></数据移植>");
            XmlNode sourceNode = ModDBOperator.SelectNode(xmlDoc.DocumentElement as XmlNode, "源数据连接");

            foreach (ListViewItem aItem in listViewEx.Items)
            {
                if (aItem.Checked)
                {
                    XmlElement dataElement = xmlDoc.CreateElement("源数据");
                    dataElement.SetAttribute("类型", aItem.Tag.ToString());
                    if (aItem.Tag.ToString() != "SDE")
                    {
                        dataElement.SetAttribute("服务器", "");
                        dataElement.SetAttribute("服务名", "");
                        dataElement.SetAttribute("数据库", aItem.Text);
                        dataElement.SetAttribute("用户", "");
                        dataElement.SetAttribute("密码", "");
                        dataElement.SetAttribute("版本", "");
                    }
                    else
                    {
                        string[] strTemp = aItem.Text.Split('|');
                        dataElement.SetAttribute("服务器", strTemp[0]);
                        dataElement.SetAttribute("服务名", strTemp[1]);
                        dataElement.SetAttribute("数据库", strTemp[2]);
                        dataElement.SetAttribute("用户", strTemp[3]);
                        dataElement.SetAttribute("密码", strTemp[4]);
                        dataElement.SetAttribute("版本", strTemp[5]);
                    }
                    sourceNode.AppendChild((XmlNode)dataElement);
                }
            }
            //设置目标数据连接xml
            XmlElement objElementTemp = ModDBOperator.SelectNode(xmlDoc.DocumentElement as XmlNode, "目标数据连接") as XmlElement;

            objElementTemp.SetAttribute("类型", pObjDBType.Trim());
            objElementTemp.SetAttribute("服务器", pObjServer.Trim());
            objElementTemp.SetAttribute("服务名", pObjInstance.Trim());
            objElementTemp.SetAttribute("数据库", pObjDataBase.Trim());
            objElementTemp.SetAttribute("用户", pObjUser.Trim());
            objElementTemp.SetAttribute("密码", pObjPassword.Trim());
            objElementTemp.SetAttribute("版本", pObjVersion.Trim());
            //设置映射规则XML
            XmlElement RuleElement = ModDBOperator.SelectNode(xmlDoc.DocumentElement as XmlNode, "规则") as XmlElement;

            RuleElement.SetAttribute("路径", ModData.DBImportPath);

            //初始化数据处理树图
            pAppFormRef.OperatorTips = "初始化数据处理树图...";
            InitialDBTree newInitialDBTree = new InitialDBTree();

            newInitialDBTree.OnCreateDataTree(m_AppGIS.DataTree, xmlDoc);
            if ((bool)m_AppGIS.DataTree.Tag == false)
            {
                return;
            }

            //*******************************************************************
            //guozheng added  数据入库系统运行日志
            List <string> Pra = new List <string>();

            Pra.Add(" Target: " + pObjDBType.ToUpper().Trim());
            if (pObjDBType.ToUpper().Trim() == "SDE")
            {
                Pra.Add(pObjServer.Trim());
                Pra.Add(pObjInstance.Trim());
                Pra.Add(pObjDataBase.Trim());
                Pra.Add(pObjUser.Trim());
                Pra.Add(pObjVersion.Trim());
            }
            else
            {
                Pra.Add(pObjDataBase.Trim());
            }
            for (int i = 0; i < this.listViewEx.Items.Count; i++)
            {
                if (this.listViewEx.Items[i].Checked)
                {
                    Pra.Add(" Source: " + this.listViewEx.Items[i].ToolTipText);
                }
            }
            if (ModData.SysLog != null)
            {
                ModData.SysLog.Write("矢量数据入库", Pra, DateTime.Now);
            }
            else
            {
                ModData.SysLog = new SysCommon.Log.clsWriteSystemFunctionLog();
                ModData.SysLog.Write("矢量数据入库", Pra, DateTime.Now);
            }
            //********************************************************************


            //进行数据移植
            this.Visible = false;
            this.Hide();
            pAppFormRef.OperatorTips = "进行" + this.Text + "...";
            //--------------------------------------------------

            m_DataThread = new clsDataThread(m_AppGIS, null, "", true, pDataTable, pSysDB, m_OpeType);

            Thread aThread = new Thread(new ThreadStart(m_DataThread.DoBatchWorks));

            m_DataThread.CurrentThread = aThread;
            m_AppGIS.CurrentThread     = aThread;
            aThread.Start();

            //利用计时器刷新mapcontrol
            _timer          = new System.Windows.Forms.Timer();
            _timer.Interval = 800;
            _timer.Enabled  = true;
            _timer.Tick    += new EventHandler(Timer_Tick);
        }