Example #1
0
        public override bool Check(ref List <Error> checkResult)
        {
            try
            {
                List <Error> pResult = new List <Error>();
                checkResult = pResult;

                IFeatureWorkspace ipFtWS = (IFeatureWorkspace)m_BaseWorkspace;

                IWorkspace       ipWks          = (IWorkspace)ipFtWS;
                IEnumDatasetName ipDatasetNames = ipWks.get_DatasetNames(esriDatasetType.esriDTFeatureDataset);
                IDatasetName     ipDatasetName  = ipDatasetNames.Next();
                IFeatureDataset  ipDataset      = null;
                if (ipDatasetName != null)
                {
                    ipDataset = ipFtWS.OpenFeatureDataset(ipDatasetName.Name);
                }

                List <IFeatureLayer> listFtLayer = new List <IFeatureLayer>();
                Hy.Common.Utility.Esri.FeatClsOperAPI.GetFeatLayerInDs(ipDataset, ref listFtLayer);

                //二次for循环迭代控制器,add by wangxiang 20111201
                int flag = 0;
                foreach (DataRow drLayer in dtLayer.Rows)
                {
                    if (drLayer != null)
                    {
                        string        strLayer     = drLayer["AttrTableName"].ToString();
                        string        strLayerName = drLayer["LayerName"].ToString();
                        IFeatureClass pFtCls       = null;
                        int           i            = 0;
                        for (i = 0; i < listFtLayer.Count && flag < listFtLayer.Count; i++)
                        {
                            IFeatureLayer pFtLayer = listFtLayer[i];
                            //IDataset pDs = (IDataset) pFtLayer.FeatureClass;

                            if (strLayerName == pFtLayer.Name)
                            {
                                try
                                {
                                    pFtCls = ipFtWS.OpenFeatureClass(strLayer);
                                }
                                catch
                                {
                                    LayerError LayerErrInfo = new LayerError();
                                    LayerErrInfo.DefectLevel     = this.DefectLevel;
                                    LayerErrInfo.m_strRuleInstID = this.m_InstanceID;
                                    LayerErrInfo.strLayerName    = strLayerName;
                                    //LayerErrInfo.strErrorMsg = "图层名不符合标准(标准:" + strLayer + "(" + strLayerName + "))!";
                                    LayerErrInfo.strErrorMsg = strLayerName + "(" + strLayer + ")层打开失败!";

                                    pResult.Add(LayerErrInfo);
                                }
                                flag++;
                                break;
                            }
                        }

                        if (i >= listFtLayer.Count)
                        {
                            try
                            {
                                pFtCls = ipFtWS.OpenFeatureClass(strLayer);
                            }
                            catch
                            {
                                if (drLayer["LayerOption"].ToString() == "bx")
                                {
                                    LayerError LayerErrInfo = new LayerError();
                                    LayerErrInfo.DefectLevel     = this.DefectLevel;
                                    LayerErrInfo.m_strRuleInstID = this.m_InstanceID;
                                    LayerErrInfo.strLayerName    = strLayerName;
                                    //LayerErrInfo.strErrorMsg = "缺失必选图层:" + strLayer + "(" + strLayerName + ")";
                                    LayerErrInfo.strErrorMsg = string.Format(Helper.ErrMsgFormat.ERR_310100001_1, strLayerName + "(" + strLayer + ")");

                                    pResult.Add(LayerErrInfo);
                                }
                            }
                        }
                        if (pFtCls != null)
                        {
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(pFtCls);
                        }
                    }
                }

                if (ipDataset != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(ipDataset);
                }
            }
            catch (Exception ex)
            {
                SendMessage(enumMessageType.Exception, ex.ToString());
                return(false);
            }

            return(true);
        }
Example #2
0
        public override bool Check(ref List<Error> checkResult)
        {
            try
            {
                List<Error> pResult = new List<Error>();
                checkResult = pResult;

                IFeatureWorkspace ipFtWS = (IFeatureWorkspace) m_BaseWorkspace;

                IWorkspace ipWks = (IWorkspace) ipFtWS;
                IEnumDatasetName ipDatasetNames = ipWks.get_DatasetNames(esriDatasetType.esriDTFeatureDataset);
                IDatasetName ipDatasetName = ipDatasetNames.Next();
                IFeatureDataset ipDataset = null;
                if (ipDatasetName != null)
                {
                    ipDataset = ipFtWS.OpenFeatureDataset(ipDatasetName.Name);
                }

                List<IFeatureLayer> listFtLayer = new List<IFeatureLayer>();
                Hy.Common.Utility.Esri.FeatClsOperAPI.GetFeatLayerInDs(ipDataset, ref listFtLayer);

                //����forѭ��������������add by wangxiang 20111201
                int flag = 0;
                foreach (DataRow drLayer in dtLayer.Rows)
                {
                    if (drLayer != null)
                    {
                        string strLayer = drLayer["AttrTableName"].ToString();
                        string strLayerName = drLayer["LayerName"].ToString();
                        IFeatureClass pFtCls = null;
                        int i = 0;
                        for (i = 0; i < listFtLayer.Count && flag < listFtLayer.Count; i++)
                        {
                            IFeatureLayer pFtLayer = listFtLayer[i];
                            //IDataset pDs = (IDataset) pFtLayer.FeatureClass;

                            if (strLayerName == pFtLayer.Name)
                            {
                                try
                                {
                                    pFtCls = ipFtWS.OpenFeatureClass(strLayer);
                                }
                                catch
                                {
                                    LayerError LayerErrInfo = new LayerError();
                                    LayerErrInfo.DefectLevel = this.DefectLevel;
                                    LayerErrInfo.m_strRuleInstID = this.m_InstanceID;
                                    LayerErrInfo.strLayerName = strLayerName;
                                    //LayerErrInfo.strErrorMsg = "ͼ���������ϱ�׼(��׼��" + strLayer + "(" + strLayerName + "))��";
                                    LayerErrInfo.strErrorMsg = strLayerName + "(" + strLayer + ")���ʧ�ܣ�";

                                    pResult.Add(LayerErrInfo);
                                }
                                flag++;
                                break;
                            }
                        }

                        if (i >= listFtLayer.Count)
                        {
                            try
                            {
                                pFtCls = ipFtWS.OpenFeatureClass(strLayer);
                            }
                            catch
                            {
                                if (drLayer["LayerOption"].ToString() == "bx")
                                {
                                    LayerError LayerErrInfo = new LayerError();
                                    LayerErrInfo.DefectLevel = this.DefectLevel;
                                    LayerErrInfo.m_strRuleInstID = this.m_InstanceID;
                                    LayerErrInfo.strLayerName = strLayerName;
                                    //LayerErrInfo.strErrorMsg = "ȱʧ��ѡͼ�㣺" + strLayer + "(" + strLayerName + ")";
                                    LayerErrInfo.strErrorMsg = string.Format(Helper.ErrMsgFormat.ERR_310100001_1,strLayerName + "(" + strLayer + ")");

                                    pResult.Add(LayerErrInfo);
                                }
                            }
                        }
                        if (pFtCls != null)
                        {
                            System.Runtime.InteropServices.Marshal.ReleaseComObject(pFtCls);
                        }
                    }
                }

                if (ipDataset != null)
                {
                    System.Runtime.InteropServices.Marshal.ReleaseComObject(ipDataset);
                }
            }
            catch (Exception ex)
            {
                SendMessage(enumMessageType.Exception, ex.ToString());
                return false;
            }

            return true;
        }