示例#1
0
        /// <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();
        }
示例#2
0
 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);
     }
 }
示例#3
0
        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);
                }
                //********************************************************************
            }
        }
示例#4
0
        /// <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();
        }
示例#5
0
        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;
            }
        }
示例#6
0
        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;
            }
        }
示例#7
0
        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;
            }
        }
示例#8
0
        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);
        }
示例#9
0
        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("提示", "下载完成!");
            }
        }