/// <summary> /// 如果是文件库则需要创建辅助库体的pdb /// 重载构造函数 /// </summary> /// <param name="MTpath">本地辅助库存放路径</param> public GOFuzingTables(string MTpath) { //创建PDB工作空间 IWorkspaceFactory pWorkspaceFactory = new AccessWorkspaceFactoryClass(); FileInfo finfo = new FileInfo(MTpath); string outputDBPath = finfo.DirectoryName; string outputDBName = finfo.Name; if (finfo.Exists) { SysCommon.Error.frmInformation frmInfo = new SysCommon.Error.frmInformation("是", "否", "存在同名的辅助库,是否进行替代?"); if (frmInfo.ShowDialog() == DialogResult.OK) { finfo.Delete(); } else { return; } } //outputDBName = outputDBName.Substring(0, outputDBName.Length - 4); IWorkspaceName pWorkspaceName = pWorkspaceFactory.Create(outputDBPath, outputDBName, null, 0); ESRI.ArcGIS.esriSystem.IName pName = (ESRI.ArcGIS.esriSystem.IName)pWorkspaceName; this._Workspace = (IWorkspace)pName.Open(); this._TempleteWorkspace = OpenTempleteWorkSpace(); }
public override void OnClick() { SysCommon.Error.frmInformation frmInfo = new SysCommon.Error.frmInformation("是", "否", "是否删除数据库工程节点?"); if (frmInfo.ShowDialog() == DialogResult.OK) { XmlElement aElement = m_Hook.ProjectTree.SelectedNode.Tag as XmlElement; ProjectXml.DelTreeNode(aElement.OwnerDocument, m_Hook.ProjectTree.SelectedNode); } }
private void AdvTreeFeaCls_NodeDoubleClick(object sender, DevComponents.AdvTree.TreeNodeMouseEventArgs e) { try { SysCommon.Error.frmInformation pfrmInformation = new SysCommon.Error.frmInformation("是", "否", "是否进行要素融合!"); if (pfrmInformation.ShowDialog() == DialogResult.OK) { int pNewOID = int.Parse(e.Node.Text.Trim()); IDataset pDS = m_FeaCLs as IDataset; IWorkspace pWs = pDS.Workspace as IWorkspace; IWorkspaceEdit pWSE = pWs as IWorkspaceEdit; if (!pWSE.IsBeingEdited()) { pWSE.StartEditing(false); } clsMergeFeatures pclsMergeFeatures = new clsMergeFeatures(); pclsMergeFeatures.MergeFeatures(e.Node.Parent.Tag as IFeatureClass, pNewOID, m_LstOID); pWSE.StopEditing(true); this.Close(); //刷新图面 IActiveView pActiveView = m_hook.MapControl.Map as IActiveView; pActiveView.PartialRefresh(esriViewDrawPhase.esriViewGeography, null, null); } } 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); } //******************************************************************** } }
/// <summary> /// 构造函数 /// </summary> /// <param name="MTpath">保存的连接设置</param> /// <param name="DBType">目标的类型(PDB、SDE、GDB)</param> /// <param name="pDesProperty">目标的连接设置</param> public GOFuzingSpatialTables(string MTpath, string DBType, IPropertySet pDesProperty) { this._DesDBType = DBType; this._PropertySet = pDesProperty; IWorkspaceFactory pWorkspaceFactory = null; //if (DBType == "PDB") //{ // //创建PDB工作空间 // pWorkspaceFactory = new AccessWorkspaceFactoryClass(); //} //else if (DBType == "GDB") //{ pWorkspaceFactory = new FileGDBWorkspaceFactoryClass(); //} FileInfo finfo = new FileInfo(MTpath); string outputDBPath = finfo.DirectoryName; string outputDBName = finfo.Name; if (Directory.Exists(MTpath)) { SysCommon.Error.frmInformation frmInfo = new SysCommon.Error.frmInformation("是", "否", "存在同名的工作库实例,是否进行替代?"); if (frmInfo.ShowDialog() == DialogResult.OK) { Directory.Delete(MTpath, true); } else { return; } } //outputDBName = outputDBName.Substring(0, outputDBName.Length - 4); IWorkspaceName pWorkspaceName = pWorkspaceFactory.Create(outputDBPath, outputDBName, null, 0); ESRI.ArcGIS.esriSystem.IName pName = (ESRI.ArcGIS.esriSystem.IName)pWorkspaceName; this._Workspace = (IWorkspace)pName.Open(); this._TempleteWorkspace = OpenTempleteWorkSpace(); }
public override void OnClick() { SysCommon.Error.frmInformation eerorFrm = new SysCommon.Error.frmInformation("是", "否", "删除产品将删除产品下的所有数据文件,确定吗?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } //执行删除产品操作 Exception ex = null; ModDBOperator.DelProduct(m_Hook.ProjectTree.SelectedNode, out ex); if (null != ex) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误提示!", ex.Message); return; } else { m_Hook.ProjectTree.SelectedNode.Remove(); m_Hook.DataInfoGrid.DataSource = null; } }
public override void OnClick() { SysCommon.Error.frmInformation eerorFrm = new SysCommon.Error.frmInformation("是", "否", "删除数据将无法恢复,确定吗?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } //执行成果数据删除操作(在列表中选中要删除的数据项,进行删除) Exception ex = null; #region 获取连接信息 DevComponents.AdvTree.Node mDBNode = m_Hook.ProjectTree.SelectedNode; DevComponents.AdvTree.Node Deltreenode = null; string ipStr = ""; string ip = ""; string id = ""; string password = ""; string ConnStr = ""; int datatype = -1; SysCommon.DataBase.SysTable pSysDB = new SysCommon.DataBase.SysTable(); //属性库连接类 while (mDBNode.Parent != null) { mDBNode = mDBNode.Parent; } if (mDBNode.Name == "文件连接") { Deltreenode = mDBNode; System.Xml.XmlElement dbElem = mDBNode.Tag as System.Xml.XmlElement; if (dbElem == null) { return; } ipStr = dbElem.GetAttribute("MetaDBConn"); ip = dbElem.GetAttribute("服务器"); id = dbElem.GetAttribute("用户"); password = dbElem.GetAttribute("密码"); //ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ipStr + ";Persist Security Info=True";//元数据连接字符串 ConnStr = ipStr; pSysDB.SetDbConnection(ConnStr, SysCommon.enumDBConType.ORACLE, SysCommon.enumDBType.ORACLE, out ex); } else { return; } #endregion if (EnumTreeNodeType.DATAITEM.ToString() == m_Hook.ProjectTree.SelectedNode.DataKey.ToString()) { #region 在树节点上选择要删除的数据 if (m_Hook.ProjectTree.SelectedNode.Tag == null) { return; } if (m_Hook.ProjectTree.SelectedNode.Tag.ToString() == "") { return; } long dataID = int.Parse(m_Hook.ProjectTree.SelectedNode.Tag.ToString());//数据 string DataType = m_Hook.ProjectTree.SelectedNode.Parent.Tag.ToString();; try { datatype = Convert.ToInt32(DataType); } catch { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误提示!", "获取数据类型失败!"); return; } if (2 != datatype)////数据类型不为控制点控制点数据 { string FilePath = m_Hook.ProjectTree.SelectedNode.Name; string FileName = m_Hook.ProjectTree.SelectedNode.Text.Trim(); bool Delstate = ModDBOperator.DelDataItem(FilePath, FileName, ip, id, password, out ex); if (!Delstate) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "文件库中删除文件:" + FilePath + "/" + FileName + "失败!" + "\n请确认文件是否存在或是否为占用状态!"); return; } m_Hook.ProjectTree.SelectedNode.Remove(); ModDBOperator.DelDataItem(dataID, datatype, pSysDB, out ex); if (null != ex) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "元信息数据库中删除数据文件记录失败!"); return; } } else/////数据类型为控制点数据 { ModDBOperator.DelDataItem(dataID, datatype, pSysDB, out ex); if (null != ex) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "元信息数据库中删除数据文件记录失败!"); return; } m_Hook.ProjectTree.SelectedNode.Remove(); } #endregion } else if (m_Hook.DataInfoGrid.Rows.Count > 0) { #region 其他所有节点 DevComponents.AdvTree.Node Selnode = m_Hook.ProjectTree.SelectedNode; if (null == Selnode.DataKey) { return; } string ID = ""; long lid = -1; string FileName = ""; string FilePath = ""; string type = ""; FrmProcessBar frmbar = new FrmProcessBar(); frmbar.SetFrmProcessBarText("删除操作:"); frmbar.Show(); List <int> delrowlist = new List <int>(); if (EnumTreeNodeType.PRODUCTPYPE.ToString() == Selnode.DataKey.ToString()) { #region 中的是产品类型节点(标准、非标准、控制点数据) type = Selnode.Text; switch (type) { case "标准图幅": datatype = 0; break; case "非标准图幅": datatype = 1; break; case "控制点数据": datatype = 2; break; default: datatype = -1; break; } if (datatype == -1) { return; } frmbar.SetFrmProcessBarMax((long)m_Hook.DataInfoGrid.Rows.Count); for (int i = 0; i < m_Hook.DataInfoGrid.Rows.Count; i++) { frmbar.SetFrmProcessBarValue((long)i); Application.DoEvents(); if (false == m_Hook.DataInfoGrid.Rows[i].Selected) { continue; } try { ID = m_Hook.DataInfoGrid.Rows[i].Cells["ID"].FormattedValue.ToString().Trim(); if (string.IsNullOrEmpty(ID)) { continue; } lid = Convert.ToInt64(ID); FileName = m_Hook.DataInfoGrid.Rows[i].Cells["数据文件名"].FormattedValue.ToString().Trim(); FilePath = m_Hook.DataInfoGrid.Rows[i].Cells["存储位置"].FormattedValue.ToString().Trim(); } catch { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "数据文件:" + FileName + "删除失败,是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } #region 在文件库中删除数据文件 //////////////////在文件库中删除数据文件//////////////////////////////// frmbar.SetFrmProcessBarText("正在删除文件:" + FileName); Application.DoEvents(); if (2 != datatype)////数据类型为控制点控制点数据不执行文件的删除操作 { bool Delstate = ModDBOperator.DelDataItem(FilePath, FileName, ip, id, password, out ex); if (!Delstate) { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "数据文件\n'" + FilePath + "/" + FileName + "'\n删除失败。\n" + "请确认文件是否存在或是否为占用状态" + "!\n是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } } #endregion #region 在元数据表中删除成果信息 ///////////////////在元数据表中删除成果信息///////////////////////// ModDBOperator.DelDataItem(lid, datatype, pSysDB, out ex); if (null != ex) { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "数据文件\n'" + FileName + "'\n元信息删除失败。\n" + "请确认元信息库的连接信息。" + "!\n是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } // m_Hook.DataInfoGrid.Rows.Remove(m_Hook.DataInfoGrid.Rows[i]); // i = i - 1; delrowlist.Add(i); #endregion #region 在树节点中删除文件节点 /////////////////////在树节点中删除文件节点/////////////////////////// ModDBOperator.DelNodeByNameAndText(Deltreenode, FilePath, FileName, out ex); if (null != ex) { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "树节点删除失败。原因为:\n" + ex.Message + "!\n是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() != System.Windows.Forms.DialogResult.OK) { frmbar.Close(); return; } //else // return; } #endregion } #endregion } else //除产品类型节点以外的所有节点 { frmbar.SetFrmProcessBarMax((long)m_Hook.DataInfoGrid.Rows.Count); for (int i = 0; i < m_Hook.DataInfoGrid.Rows.Count; i++) { #region 获取必要信息 if (false == m_Hook.DataInfoGrid.Rows[i].Selected) { continue; } frmbar.SetFrmProcessBarValue((long)i); int DataType = -1;//产品的类型(标准,非标准,属性) try { ID = m_Hook.DataInfoGrid.Rows[i].Cells["ID"].FormattedValue.ToString().Trim(); if (string.IsNullOrEmpty(ID)) { continue; } lid = Convert.ToInt64(ID); FileName = m_Hook.DataInfoGrid.Rows[i].Cells["数据文件名"].FormattedValue.ToString().Trim(); FilePath = m_Hook.DataInfoGrid.Rows[i].Cells["存储位置"].FormattedValue.ToString().Trim(); type = m_Hook.DataInfoGrid.Rows[i].Cells["数据类型"].FormattedValue.ToString().Trim(); if ("标准图幅数据" == type) { datatype = EnumDataType.标准图幅.GetHashCode(); } else if ("非标准图幅数据" == type) { datatype = EnumDataType.非标准图幅.GetHashCode(); } else if ("控制点数据" == type) { datatype = EnumDataType.控制点数据.GetHashCode(); } } catch { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "数据文件:" + FileName + "删除失败。原因为:数据文件的ID获取失败\n" + "是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } #endregion #region 在元信息表中删除 frmbar.SetFrmProcessBarText("正在删除文件:" + FileName); if (ex != null) { ex = new Exception("连接元数据库失败!连接地址为:" + ConnStr); pSysDB.CloseDbConnection(); return; } if (lid != -1 && datatype != -1) { ModDBOperator.DelDataItem(lid, datatype, pSysDB, out ex); if (null != ex) { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "数据文件元信息删除失败。\n" + "请检查元信息库连接信息" + "!\n是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } } #endregion #region 在文件库中删除 if (2 != datatype)////数据类型为控制点控制点数据则不进行文件的删除操作 { bool Delstate = ModDBOperator.DelDataItem(FilePath, FileName, ip, id, password, out ex); if (!Delstate) { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "数据文件\n'" + FilePath + "/" + FileName + "'\n删除失败。\n" + " 请确认文件是否存在或是否为占用状态。" + "\n是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } } #endregion #region 记录DataGrid中要删除的行 delrowlist.Add(i); #endregion #region 在树节点中删除文件节点 ModDBOperator.DelNodeByNameAndText(Deltreenode, FilePath, FileName, out ex); if (null != ex) { eerorFrm = new SysCommon.Error.frmInformation("是", "否", "树节点删除失败。原因为:\n" + ex.Message + "!\n是否继续删除?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == System.Windows.Forms.DialogResult.OK) { continue; } else { frmbar.Close(); return; } } #endregion } } /////数据列表中移除相应的行 if (null != delrowlist) { for (int j = 0; j < delrowlist.Count; j++) { m_Hook.DataInfoGrid.Rows.Remove(m_Hook.DataInfoGrid.Rows[delrowlist[j] - j]); } } frmbar.Close(); #endregion } #region 图层处理 if (ModData.v_AppFileDB.MapControl.LayerCount > 0 && datatype != 2) { IGroupLayer Glayer = null; for (int i = 0; i < ModData.v_AppFileDB.MapControl.LayerCount; i++) { ILayer getlayer = ModData.v_AppFileDB.MapControl.get_Layer(i); if (getlayer.Name == "项目范围图") { Glayer = getlayer as IGroupLayer; } } if (null != Glayer) { ICompositeLayer comlayer = Glayer as ICompositeLayer; string layername = null; switch (datatype) { case 0: layername = "MapFrame_"; break; case 1: layername = "Range_"; break; default: layername = "_"; break; } if (comlayer != null) { for (int i = 0; i < comlayer.Count; i++) { ILayer orglayer = comlayer.get_Layer(i); string lname = orglayer.Name; if (lname.Contains(layername)) { Glayer.Delete(orglayer); ModData.v_AppFileDB.TOCControl.Update(); ModData.v_AppFileDB.MapControl.ActiveView.Refresh(); } } } } } if (datatype == EnumDataType.控制点数据.GetHashCode()) { IGraphicsContainer pGra = ModData.v_AppFileDB.MapControl.Map as IGraphicsContainer; pGra.DeleteAllElements(); ModData.v_AppFileDB.MapControl.ActiveView.Refresh(); } #endregion //刷新时间列表框 ModDBOperator.LoadComboxTime(ConnStr, out ex); if (ex != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "加载时间列表框失败," + ex.Message); return; } }
public override void OnClick() { //执行删除项目操作 SysCommon.Error.frmInformation eerorFrm = new SysCommon.Error.frmInformation("是", "否", "删除项目将删除项目下的所有产品和数据文件,\n 确定吗?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() != System.Windows.Forms.DialogResult.OK) { return; } ///////////////////////// 删除服务器上所有的文件夹目录//////////////////// DevComponents.AdvTree.Node SelNode = m_Hook.ProjectTree.SelectedNode; DevComponents.AdvTree.Node ConNode = m_Hook.ProjectTree.SelectedNode.Parent; if (null == ConNode) { return; } string DelProName = SelNode.Text; System.Xml.XmlElement Ele = ConNode.Tag as System.Xml.XmlElement; if (null == Ele) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误提示", "获取工程元信息失败!"); return; } string ip = Ele.GetAttribute("服务器"); string id = Ele.GetAttribute("用户"); string password = Ele.GetAttribute("密码"); long ProjectID = int.Parse(m_Hook.ProjectTree.SelectedNode.Tag.ToString());//项目的ID string ipStr = Ele.GetAttribute("MetaDBConn"); //string ConnStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + ipStr + ";Persist Security Info=True";//元数据连接字符串 string ConnStr = ipStr; clsProject DelPro = new clsProject(DelProName, ip, id, password); string error = ""; bool DelState = DelPro.DeleteProject(SelNode, ConnStr, ProjectID, out error); if (!DelState) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误提示", error); return; } ///////////////////////// 删除元信息表中记录信息//////////////////// Exception ex = null; ModDBOperator.DelProject(ProjectID, ConnStr, out ex); if (null != ex) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误提示", ex.Message); } else { m_Hook.ProjectTree.SelectedNode.Remove(); SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "项目删除成功"); } m_Hook.DataInfoGrid.DataSource = null; m_Hook.MetaDataGrid.DataSource = null; //刷新时间列表框 Exception eError = null; ModDBOperator.LoadComboxTime(ConnStr, out eError); if (eError != null) { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("错误", "加载时间列表框失败," + eError.Message); return; } }
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); }
public override void OnClick() { if (m_Hook.DataInfoGrid.Rows.Count <= 0) { return; } FolderBrowserDialog GetFileInfo = new FolderBrowserDialog(); if (GetFileInfo.ShowDialog() == DialogResult.OK) { //System.IO.FileInfo fileinfo = new System.IO.FileInfo(GetFileInfo.FileName); string FileSavePath = GetFileInfo.SelectedPath; FileSavePath = FileSavePath.Replace("\\", "/");//文件保存路径 //string FileSaveName = fileinfo.Name; //文件保存名 string serverStr = ""; //服务器 string user = ""; //用户 string password = ""; //密码 #region 通过树节点获取IP地址 DevComponents.AdvTree.Node DBNode = null; string treeNodeType = m_Hook.ProjectTree.SelectedNode.DataKey.ToString(); if (treeNodeType == "") { return; } DBNode = m_Hook.ProjectTree.SelectedNode;//数据库节点,根节点 while (DBNode.Parent != null) { DBNode = DBNode.Parent; } if (DBNode == null) { return; } if (DBNode.DataKey.ToString() != EnumTreeNodeType.DATABASE.ToString()) { return; } if (DBNode.Name != "文件连接") { return; } XmlElement connElem = DBNode.Tag as XmlElement; if (connElem == null) { return; } serverStr = connElem.GetAttribute("服务器"); user = connElem.GetAttribute("用户"); password = connElem.GetAttribute("密码"); if (serverStr == "" || user == "" || password == "") { return; } //string conStr = connElem.GetAttribute("MetaDBConn");//元数据库连接信息 #endregion for (int i = 0; i < m_Hook.DataInfoGrid.RowCount; i++) { if (false == m_Hook.DataInfoGrid.Rows[i].Selected) { continue; } string fileName = ""; //文件名 string filePath = ""; //文件FTP路径 fileName = m_Hook.DataInfoGrid.Rows[i].Cells["数据文件名"].FormattedValue.ToString().Trim(); filePath = m_Hook.DataInfoGrid.Rows[i].Cells["存储位置"].FormattedValue.ToString().Trim(); if (fileName == "" || filePath == "") { return; } string error = ""; //执行下载数据 FTP_Class clsFtp = new FTP_Class(serverStr, user, password); string[] fNameArr = clsFtp.GetFileList(filePath, out error); if (error != "Succeed") { SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "获取文件列表失败!"); return; } if (fNameArr == null) { //控制点数据导出,特殊处理 continue; } else { #region 其他数据下载 for (int j = 0; j < fNameArr.Length; j++) { string ttName = fNameArr[j]; if (ttName.Contains(fileName.Substring(0, fileName.LastIndexOf('.')))) { if (File.Exists(FileSavePath + "/" + ttName)) { if (SysCommon.Error.ErrorHandle.ShowFrmInformation("确定", "取消", "存在同名文件,是否替换?")) { File.Delete(FileSavePath + "/" + ttName); } else { return; } } bool state = ModDBOperator.DownloadFile(serverStr, user, password, filePath, ttName, ttName, FileSavePath, out error); if (!state) { SysCommon.Error.frmInformation eerorFrm = new SysCommon.Error.frmInformation("是", "否", "数据文件\n'" + filePath + "\\" + ttName + "'\n下载失败。原因为:\n" + error + "!\n是否继续下载?"); eerorFrm.Owner = (m_Hook as Plugin.Application.IAppFormRef).MainForm; if (eerorFrm.ShowDialog() == DialogResult.OK) { continue; } else { return; } } } } #endregion } } SysCommon.Error.ErrorHandle.ShowFrmErrorHandle("提示", "下载完成!"); } }