Exemplo n.º 1
0
        public void Should_return_true_if_template_view_name_is_valid(string viewName)
        {
            var sut    = new TemplateRules(new Mock <ITemplateRepository>().Object);
            var actual = sut.IsTemplateViewNameValid(viewName);

            Assert.AreEqual(true, actual);
        }
Exemplo n.º 2
0
        public override void OnClick()
        {
            Hy.Check.Task.Task task = Hy.Check.Command.CheckApplication.CurrentTask;
            if (task == null)
            {
                return;
            }

            if (task.State != Hy.Check.Task.enumTaskState.Created)
            {
                if (DevExpress.XtraEditors.XtraMessageBox.Show("当前任务已经执行过检查,您确定要覆盖之前的检查结果吗?", "提示", System.Windows.Forms.MessageBoxButtons.YesNo) == System.Windows.Forms.DialogResult.No)
                {
                    return;
                }
            }

            task.ReadyForCheck(true);
            TemplateRules templateRules = new TemplateRules(task.SchemaID);

            CheckApplication.TaskChanged(null);

            Hy.Check.UI.Forms.FrmTaskCheck frmCheck = new Hy.Check.UI.Forms.FrmTaskCheck(task, templateRules.CurrentSchemaRules);
            frmCheck.CheckTask();
            //if (frmCheck.DialogResult == System.Windows.Forms.DialogResult.Abort)
            //    return;

            CheckApplication.TaskChanged(task);
        }
Exemplo n.º 3
0
        private void Check()
        {
            if (m_Task == null)
                return;

            Checker checker = new Checker();
            checker.CheckingRuleChanged += new DealingRuleChangedHandler(checker_PretreatingRuleChanged);
            checker.PretreatingRuleChanged += new DealingRuleChangedHandler(checker_PretreatingRuleChanged);
            checker.VerifyedComplete += new VerifyedCompleteHandler(checker_VerifyedComplete);
            checker.VerifyingRuleChanged += new DealingRuleChangedHandler(checker_PretreatingRuleChanged);
            checker.PretreatComplete += new CheckEventHandler(checker_PretreatComplete);

            checker.BaseWorkspace = m_Task.BaseWorkspace;
            checker.QueryConnection = m_Task.QueryConnection;
            checker.QueryWorkspace = m_Task.QueryWorkspace;
            checker.ResultPath = m_Task.GetResultDBPath();
            TemplateRules templateRules = new TemplateRules(m_Task.SchemaID);
            checker.RuleInfos = templateRules.CurrentSchemaRules; //Helper.RuleInfoHelper.GetRuleInfos(m_Task.SchemaID);
            checker.SchemaID = m_Task.SchemaID;
            checker.TopoDBPath = m_Task.GetTaskFolder();
            checker.TopoTolerance = m_Task.TopoTolerance;

            Common.Utility.Log.TaskLogManager.SetLogFile("f:\\CheckLog.log");
            checker.Messager = LogDeal;
            if (checker.Check())
            {
                MessageBox.Show("成功");
            }
            else
            {
                MessageBox.Show("失败");
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Loads the rules tree.
        /// </summary>
        public void LoadRulesTree()
        {
            this.treeListRule.BeginUnboundLoad();
            this.treeListRule.BeginUpdate();
            this.treeListRule.ClearNodes();
            try
            {
                if (m_CurrTemplateRules == null)
                {
                    m_CurrTemplateRules = new TemplateRules(CurrentSchemaId);
                }
                RulesDt           = m_CurrTemplateRules.CurrentSchemaRulesDt;
                m_TempScheamRules = m_CurrTemplateRules.CurrentSchemaRules;
                bool NodeChecked = false;

                //创建一个副本
                if (TreeShowType == RuleTreeShowType.ViewRulesAndSelection)
                {
                    //创建一个副本
                    if (RulesSelection == null)
                    {
                        SchemaRuleEx[] ex = new SchemaRuleEx[m_TempScheamRules.Count];
                        m_CurrTemplateRules.CurrentSchemaRules.CopyTo(ex, 0);
                        RulesSelection = new List <SchemaRuleEx>();
                        RulesSelection.AddRange(ex);
                    }
                }
                //增加根节点
                int          count    = m_CurrTemplateRules.CalculateRulesCount(m_CurrTemplateRules.ClassifyRules);
                TreeListNode rootNode = treeListRule.AppendNode(new object[] { string.Format("{0} ({1})", CurrentTaskName, count), 0, "0", count }, null);
                //rootNode.StateImageIndex = 0;

                if (RulesSelection != null)
                {
                    SetRulesHistoryState(Convert.ToInt32(rootNode["ruleBM"]), RulesSelection);
                }
                //GetRulesHistoryState(rootNode["RuleName"].ToString(), ref NodeChecked);

                rootNode.Checked = RulesSelection == null ? treeListRule.OptionsView.ShowCheckBoxes : NodeChecked;

                //SetRulesHistoryState(rootNode["RuleName"].ToString(), rootNode.Checked);

                //增加一级、二级节点
                AppendTreeNodes(m_CurrTemplateRules.ClassifyRules, rootNode);
            }
            catch
            {
            }
            finally
            {
                treeListRule.Columns[0].Width = 280;
                //treeListRule.BestFitColumns();
                this.treeListRule.EndUpdate();
                this.treeListRule.EndUnboundLoad();
                this.treeListRule.ExpandAll();
            }
        }
Exemplo n.º 5
0
        public void Should_return_true_if_template_name_is_unique()
        {
            var name = "My Template";

            var repositoryMock = new Mock <ITemplateRepository>();

            repositoryMock.Setup(x => x.GetByName(name)).Returns((Template)null);

            var sut = new TemplateRules(repositoryMock.Object);

            var actual = sut.IsTemplateNameUnique(name);

            Assert.AreEqual(true, actual);
        }
Exemplo n.º 6
0
        public void Should_return_true_if_template_id_is_unique()
        {
            var id = Guid.NewGuid();

            var repositoryMock = new Mock <ITemplateRepository>();

            repositoryMock.Setup(x => x.GetById(id)).Returns((Template)null);

            var sut = new TemplateRules(repositoryMock.Object);

            var actual = sut.IsTemplateIdUnique(id);

            Assert.AreEqual(true, actual);
        }
Exemplo n.º 7
0
        public void Should_return_false_if_template_view_name_is_not_unique()
        {
            var viewName = "my-template";

            var repositoryMock = new Mock <ITemplateRepository>();

            repositoryMock.Setup(x => x.GetByViewName(viewName)).Returns(new Template());

            var sut = new TemplateRules(repositoryMock.Object);

            var actual = sut.IsTemplateViewNameUnique(viewName);

            Assert.AreEqual(false, actual);
        }
Exemplo n.º 8
0
        /// <summary>
        /// 根据方案id初始化当前任务所需的规则类
        /// </summary>
        /// <returns></returns>
        public static TemplateRules InitCurrentTemplateRules()
        {
            if (m_CurrentTemplateRules == null)
            {
                if (CurrentTask == null)
                {
                    return(null);
                }

                if (string.IsNullOrEmpty(CurrentTask.SchemaID))
                {
                    return(null);
                }

                m_CurrentTemplateRules = new TemplateRules(CurrentTask.SchemaID);
            }
            return(m_CurrentTemplateRules);
        }
Exemplo n.º 9
0
        private void Check()
        {
            if (m_Task == null)
            {
                return;
            }

            Checker checker = new Checker();

            checker.CheckingRuleChanged    += new DealingRuleChangedHandler(checker_PretreatingRuleChanged);
            checker.PretreatingRuleChanged += new DealingRuleChangedHandler(checker_PretreatingRuleChanged);
            checker.VerifyedComplete       += new VerifyedCompleteHandler(checker_VerifyedComplete);
            checker.VerifyingRuleChanged   += new DealingRuleChangedHandler(checker_PretreatingRuleChanged);
            checker.PretreatComplete       += new CheckEventHandler(checker_PretreatComplete);


            checker.BaseWorkspace   = m_Task.BaseWorkspace;
            checker.QueryConnection = m_Task.QueryConnection;
            checker.QueryWorkspace  = m_Task.QueryWorkspace;
            checker.ResultPath      = m_Task.GetResultDBPath();
            TemplateRules templateRules = new TemplateRules(m_Task.SchemaID);

            checker.RuleInfos     = templateRules.CurrentSchemaRules; //Helper.RuleInfoHelper.GetRuleInfos(m_Task.SchemaID);
            checker.SchemaID      = m_Task.SchemaID;
            checker.TopoDBPath    = m_Task.GetTaskFolder();
            checker.TopoTolerance = m_Task.TopoTolerance;

            Common.Utility.Log.TaskLogManager.SetLogFile("f:\\CheckLog.log");
            checker.Messager = LogDeal;
            if (checker.Check())
            {
                MessageBox.Show("成功");
            }
            else
            {
                MessageBox.Show("失败");
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// Loads the results tree.
        /// </summary>
        public void LoadResultsTree()
        {
            this.treeListRule.BeginUnboundLoad();
            this.treeListRule.BeginUpdate();
            this.treeListRule.ClearNodes();
            try
            {
                if (m_CurrTemplateRules == null)
                {
                    m_CurrTemplateRules = new TemplateRules(CurrentSchemaId);
                    RulesDt             = m_CurrTemplateRules.CurrentSchemaRulesDt;
                }

                //增加根节点
                TreeListNode rootNode = treeListRule.AppendNode(new object[] { string.Format("{0} ({1})", CurrentTaskName, this.CheckResultsCount), 0, "0", this.CheckResultsCount }, null);
                //rootNode.StateImageIndex = 0;
                rootNode.Checked = treeListRule.OptionsView.ShowCheckBoxes;
                if (m_RuleType == RuleShowType.DefualtType)
                {
                    //增加一级、二级节点
                    AppendResultsNodes(m_CurrTemplateRules.ClassifyRules, rootNode);
                }
                else
                {
                    AppendLayersResultNodes(rootNode);
                }
            }
            catch
            {
            }
            finally
            {
                this.treeListRule.EndUpdate();
                this.treeListRule.EndUnboundLoad();
                this.treeListRule.ExpandAll();
                treeListRule.BestFitColumns();
            }
        }
Exemplo n.º 11
0
        /// <summary>
        /// 执行
        /// 指创建任务[并执行检查]
        /// </summary>
        /// <returns>返回【至少创建成功了的】任务列表</returns>
        public bool Excute(ref List <Task> availableTasks)
        {
            try
            {
                availableTasks = new List <Task>();

                this.m_SucceedCount = 0;
                this.m_PromptMsg    = "";
                if (this.m_TaskList == null || this.m_TaskList.Count == 0)
                {
                    m_PromptMsg = "任务列表为空!无法创建质检任务!";
                    return(false);
                }


                int count        = this.m_TaskList.Count;
                int succeedCount = 0;
                int excuteCount  = 0;
                for (int i = 0; i < count; i++)
                {
                    ExtendTask curTask = this.m_TaskList[i] as ExtendTask;
                    if (curTask == null)
                    {
                        continue;
                    }

                    // 创建
                    if (this.CreatingTaskChanged != null)
                    {
                        this.CreatingTaskChanged.Invoke(curTask);
                    }

                    bool isSucceed = curTask.Create();
                    isSucceed = curTask.CreateMXD();

                    if (this.TaskCreated != null)
                    {
                        this.TaskCreated.Invoke(curTask);
                    }

                    if (!isSucceed)
                    {
                        SendMessage(enumMessageType.Exception, string.Format("任务:{0}创建失败", curTask.Name));
                        continue;
                    }
                    availableTasks.Add(curTask);

                    ////执行质检
                    if (curTask.CheckMode != enumCheckMode.CreateOnly)
                    {
                        Checker m_TaskChecker = new Checker();

                        if (this.CheckingTaskChanged != null)
                        {
                            this.CheckingTaskChanged.Invoke(m_TaskChecker, curTask);
                        }

                        curTask.ReadyForCheck();
                        m_TaskChecker.BaseWorkspace   = curTask.BaseWorkspace;
                        m_TaskChecker.QueryConnection = curTask.QueryConnection;
                        m_TaskChecker.QueryWorkspace  = curTask.QueryWorkspace;
                        m_TaskChecker.ResultPath      = curTask.GetResultDBPath();
                        if (curTask.CheckMode == enumCheckMode.CheckAll)
                        {
                            TemplateRules tempRules = new TemplateRules(curTask.SchemaID);
                            m_TaskChecker.RuleInfos = tempRules.CurrentSchemaRules;
                        }
                        else
                        {
                            m_TaskChecker.RuleInfos = curTask.RuleInfos;
                        }
                        m_TaskChecker.SchemaID      = curTask.SchemaID;
                        m_TaskChecker.TopoDBPath    = curTask.GetResultDBPath();
                        m_TaskChecker.TopoTolerance = curTask.TopoTolerance;
                        COMMONCONST.TOPOTOLORANCE   = curTask.TopoTolerance;
                        COMMONCONST.dAreaThread     = curTask.MapScale * 0.04;
                        COMMONCONST.dLengthThread   = curTask.MapScale * 0.2 / 10000;

                        m_TaskChecker.Check();

                        if (this.TaskChecked != null)
                        {
                            this.TaskChecked.Invoke(m_TaskChecker, curTask);
                        }

                        excuteCount++;
                    }

                    succeedCount++;
                }

                if (succeedCount == count)
                {
                    if (excuteCount == 0)
                    {
                        m_PromptMsg = string.Format("{0}个任务全部创建完成!", count);
                    }
                    else
                    {
                        m_PromptMsg = string.Format("{0}个任务全部创建完成,{1}个任务检查完成!", count, excuteCount);
                    }
                }
                else
                {
                    if (excuteCount == 0)
                    {
                        m_PromptMsg = string.Format("{0}质检任务创建完成,其余质检任务执行失败", succeedCount);
                    }
                    else
                    {
                        m_PromptMsg = string.Format("{0}质检任务创建完成({1}个任务检查完成),其余质检任务执行失败", succeedCount, excuteCount);
                    }
                }
            }
            catch (Exception ex)
            {
                SendMessage(enumMessageType.Exception, "创建任务过程中出现错误,错误原因:" + ex.ToString());
                return(false);
            }
            finally
            {
            }

            return(true);
        }
Exemplo n.º 12
0
        /// <summary>
        /// 使用统一入口进行质检
        /// </summary>
        /// <param name="dsTarget">可以是IWorkspace,IFeatureClass或ITable</param>
        /// <returns></returns>
        public DataTable Check(IDataset dsTarget)
        {
            // 数据导入
            string       strBaseName  = "Base.gdb";
            string       strQueryDB   = "Base.mdb";
            bool         ready        = false;
            enumDataType baseDataType = enumDataType.FileGDB;

            SendCheckingMessage("正在进行数据导入…");

            try
            {
                Clear();
                if (dsTarget is IWorkspace)
                {
                    ready = PrepareForWorkspace(dsTarget as IWorkspace, out strBaseName, out strQueryDB, out baseDataType);
                }
                else if (dsTarget is IFeatureClass)
                {
                    ready        = PrepareForFeatureClass(dsTarget, out strBaseName, out strQueryDB);
                    baseDataType = enumDataType.PGDB;
                }
                else if (dsTarget is ITable)
                {
                    ready        = PrepareForTable(dsTarget, out strBaseName, out strQueryDB);
                    baseDataType = enumDataType.PGDB;
                }


                if (!ready)
                {
                }

                // 开始准备检查

                string        strBaseFullName  = string.Format("{0}\\{1}", TempPath, strBaseName);
                string        strQueryFullName = string.Format("{0}\\{1}", TempPath, strQueryDB);
                IWorkspace    wsBase           = AEAccessFactory.OpenWorkspace(baseDataType, strBaseFullName);
                IWorkspace    wsQuery          = AEAccessFactory.OpenWorkspace(enumDataType.PGDB, strQueryFullName);
                IDbConnection queryConnection  = AdoDbHelper.GetDbConnection(strQueryFullName);

                // 开始执行检查
                Checker curChecker = new Checker();
                curChecker.VerifyingRuleChanged   += new DealingRuleChangedHandler(VerifyingRuleChanged);
                curChecker.VerifyedComplete       += new VerifyedCompleteHandler(VerifyedComplete);
                curChecker.PretreatingRuleChanged += new DealingRuleChangedHandler(PretreatingRuleChanged);
                curChecker.PretreatComplete       += new CheckEventHandler(PretreatComplete);
                curChecker.CheckingRuleChanged    += new DealingRuleChangedHandler(CheckingRuleChanged);
                curChecker.CheckComplete          += new CheckEventHandler(CheckComplete);
                curChecker.RuleChecked            += new RuleCheckedHandler(RuleChecked);
                curChecker.TopoRuleCheckBegin     += new CheckEventHandler(TopoRuleCheckBegin);

                curChecker.BaseWorkspace   = wsBase;
                curChecker.QueryWorkspace  = wsQuery;
                curChecker.QueryConnection = queryConnection;
                curChecker.ResultPath      = TempPath;
                // 如果没有设置SchemaID,获取第一个
                // 如果没有设置RuleInfo列表,获取所有
                if (string.IsNullOrEmpty(this.SchemaID))
                {
                    Dictionary <int, string> dictStandard = SysDbHelper.GetStandardInfo();
                    if (dictStandard == null || dictStandard.Count == 0)
                    {
                        return(null);
                    }

                    Dictionary <string, string> dictSchema = SysDbHelper.GetSchemasInfo(dictStandard.ElementAt(0).Value);
                    if (dictSchema == null || dictSchema.Count == 0)
                    {
                        return(null);
                    }

                    this.SchemaID = dictSchema.ElementAt(0).Key;
                }
                if (this.RuleInfos == null)
                {
                    TemplateRules templateRule = new TemplateRules(this.SchemaID);
                    this.RuleInfos = templateRule.CurrentSchemaRules;
                }

                curChecker.RuleInfos     = this.RuleInfos;
                curChecker.SchemaID      = this.SchemaID;
                curChecker.TopoDBPath    = TempPath;
                curChecker.TopoTolerance = this.TopoTolerence;

                COMMONCONST.TOPOTOLORANCE = this.TopoTolerence;
                COMMONCONST.dAreaThread   = this.MapScale * 0.04;
                COMMONCONST.dLengthThread = this.MapScale * 0.2 / 10000;

                //SendCheckBeginEvent(curChecker);

                curChecker.Check();            // 检查

                // 获取结果
                string        strResultFullName = string.Format("{0}\\{1}", TempPath, "Result.mdb");
                IDbConnection resultConnection  = AdoDbHelper.GetDbConnection(strResultFullName);

                return(GetErrors(resultConnection));
            }
            catch
            {
                return(null);
            }
            finally
            {
                GC.Collect();

                //Clear();
            }
        }