//利用计时器刷新mapcontrol private void Timer_Tick(object sender, EventArgs e) { if (m_DataThread.CurrentThread.ThreadState == ThreadState.Stopped) { if (m_DataThread.Res == true) { #region 将界面上的信息写入XML里面保存起来 //XmlDocument ProXMlDoc = new XmlDocument(); //ProXMlDoc.Load(ModData.v_projectXML); XmlNode ProjectNode = v_AppGIS.ProjectTree.SelectedNode.Tag as XmlNode;// ProXMlDoc.SelectSingleNode(".//工程[@名称='" + v_AppGIS.ProjectTree.SelectedNode.Name + "']"); //将界面上的图幅工作库信息写入到XML中 XmlElement workDBElem = ProjectNode.SelectSingleNode(".//内容//图幅工作库//连接信息") as XmlElement; workDBElem.SetAttribute("类型", comboBoxOrgType.Tag.ToString().Trim()); //cyf 20110628 workDBElem.SetAttribute("数据库", textBoxX1.Text.Trim()); //将界面上的现势库信息写入到XML中 XmlElement userDBElem = ProjectNode.SelectSingleNode(".//内容//现势库//连接信息") as XmlElement; userDBElem.SetAttribute("类型", comBoxType.Tag.ToString().Trim()); //cyf 20110628 userDBElem.SetAttribute("服务器", txtServer.Text.Trim()); userDBElem.SetAttribute("服务名", txtInstance.Text.ToString().Trim()); userDBElem.SetAttribute("数据库", txtDB.Text.Trim()); userDBElem.SetAttribute("用户", txtUser.Text.Trim()); userDBElem.SetAttribute("密码", txtPassword.Text.Trim()); userDBElem.SetAttribute("版本", txtVersion.Text.Trim()); //将界面上的历史库信息写入到XML中 XmlElement historyDBElem = ProjectNode.SelectSingleNode(".//内容//历史库//连接信息") as XmlElement; historyDBElem.SetAttribute("类型", cmbHistoType.Tag.ToString().Trim());//cyf 20110628 historyDBElem.SetAttribute("服务器", txtHistoServer.Text.Trim()); historyDBElem.SetAttribute("服务名", txtHistoInstance.Text.ToString().Trim()); historyDBElem.SetAttribute("数据库", txtHistoDB.Text.Trim()); historyDBElem.SetAttribute("用户", txtHistoUser.Text.Trim()); historyDBElem.SetAttribute("密码", txtHistoPassword.Text.Trim()); historyDBElem.SetAttribute("版本", txtHistoVersion.Text.Trim()); //cyf 2011028 //将界面上的FID记录表库体信息写入到XML中 //XmlElement FIDDBElem = ProjectNode.SelectSingleNode(".//内容//FID记录表//连接信息") as XmlElement; //FIDDBElem.SetAttribute("类型", cmbFIDType.Text.ToString().Trim()); //FIDDBElem.SetAttribute("服务名", txtFIDServer.Text.ToString().Trim()); //FIDDBElem.SetAttribute("数据库", txtFIDInstance.Text.Trim()); //FIDDBElem.SetAttribute("用户", txtFIDUser.Text.Trim()); //FIDDBElem.SetAttribute("密码", txtFIDPassword.Text.Trim()); //将映射规则信息写入XML中 //XmlElement ruleElem = ProjectNode.SelectSingleNode(".//内容//数据操作规则//规则[@类型='图幅数据更新入库']") as XmlElement; //ruleElem.SetAttribute("路径", ModData.DBTufuSubmitXml); //ProjectNode.OwnerDocument.Save(ModData.v_projectXML); //end #endregion this.Close(); } else { this.Show(); } m_DataThread = null; _timer.Enabled = false; } }
//利用计时器刷新mapcontrol private void Timer_Tick(object sender, EventArgs e) { if (m_DataThread.CurrentThread.ThreadState == ThreadState.Stopped) { if (m_DataThread.Res == true) { //SaveToXML(); this.Close(); } else { this.Show(); } m_DataThread = null; _timer.Enabled = false; } }
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); }
//确定 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); }