Example #1
0
        private IEnumerable <RuleCompareNode> CompareFile(Office.Excel.ForwardExcelReader oldWorkbook, Office.Excel.ForwardExcelReader newWorkbook)
        {
            string[] sheets = oldWorkbook == null?new string[0] : oldWorkbook.GetSheetsName();
            int      index;

            for (index = 0; index < sheets.Length; index++)
            {
                RuleCompareNode node = new RuleCompareNode();
                node.Header = sheets[index];
                PageGroup group = new PageGroup(sheets[index], oldWorkbook, newWorkbook);
                group.Parent = node;
                node.Content = group;
                group.ReadRules();
                group.Compare();
                yield return(node);
            }
            sheets = newWorkbook.GetSheetsName();
            for (; index < sheets.Length; index++)
            {
                RuleCompareNode node = new RuleCompareNode();
                node.Header = sheets[index];
                PageGroup group = new PageGroup(sheets[index], oldWorkbook, newWorkbook);
                group.Parent = node;
                node.Content = group;
                group.ReadRules();
                group.Compare();
                yield return(node);
            }
        }
Example #2
0
        private void ChildNotifyIsChecked(bool?oldValue, bool?newValue)
        {
            if (oldValue == false)
            {
                CheckedCount++;
            }
            else if (oldValue == null)
            {
                if (newValue == false)
                {
                    CheckedCount--;
                }
                _nullCount--;
            }
            else
            {
                if (newValue == false)
                {
                    CheckedCount--;
                }
            }
            if (newValue == null)
            {
                _nullCount++;
            }
            bool?value = _nullCount == 0 ? (_CheckedCount == 0 ? false : _CheckedCount == base.Children.Count ? true : (bool?)null) : null;

            if (_IsChecked != value)
            {
                RuleCompareNode node = base.Parent as RuleCompareNode;
                if (node != null)
                {
                    node.ChildNotifyIsChecked(_IsChecked, value);
                }
                _IsChecked = value;
                OnPropertyChanged(IsCheckedChanged);
            }
        }
Example #3
0
 public RuleComparer(RuleCompareNode root, WebBrowserUtils.ExtendWebBrowser.WebBrowser2 webBrowser)
 {
     _root       = root;
     _webBrowser = webBrowser;
 }
Example #4
0
        private void CompareInner(RuleCompareNode standard, RuleCompareNode parent,
                                  string path, string type, KeyValuePair <string, string>?appendix)
        {
            string uri         = fillManager.StartPageUri;
            string appendixKey = appendix == null ? "" : appendix.Value.Key;

            foreach (RuleCompareNode child in standard.Children)
            {
                if (child.IsChecked != true)
                {
                    continue;
                }
                this.UpdateDetectRule(type, standard.Content as string, child.Header);
                fillManager.Browser.Navigate(uri);
                RuleCompareNode resultChildItem = new RuleCompareNode()
                {
                    Header = child.Header
                };
                parent.AddChild(resultChildItem);
                // 车辆类型
                _webBrowser.Invoke((Action)(() => { fillManager.BeginFill(); }));
                fillManager.Standard       = standard.Content as string;
                fillManager.CarType        = child.Header;
                fillManager.Data["选择底盘类型"] = appendix == null ? "" : appendix.Value.Value;
                string fileName = GetCompareRuleFileName(type, fillManager.Standard, fillManager.CarType, appendixKey);
                fileName = string.Format("{0}\\{1}", path, fileName);
                FileInfo info = new FileInfo(fileName);
                if (info.Directory.Exists == false)
                {
                    info.Directory.Create();
                }
                _asyncHandler.Reset();
                _asyncHandler.Wait();
                string detectedFileName  = "";
                GHComparerFillManager gh = fillManager as GHComparerFillManager;
                BHComparerFillManager bh = null;
                if (gh != null)
                {
                    detectedFileName = gh.DetectedFileName;
                }
                else
                {
                    bh = fillManager as BHComparerFillManager;
                }
                if (bh != null)
                {
                    detectedFileName = bh.DetectedFileName;
                }
                if (bh == null && gh == null)
                {
                    return;
                }
                else if (bh != null)
                {
                    bh.Reset();
                }
                else
                {
                    gh.Reset();
                }
                if (File.Exists(fileName))
                {
                    File.Delete(fileName);
                }
                File.Move(detectedFileName, fileName);
                string oldFile = GetServerFile(fillManager.Standard, fillManager.CarType, type, appendixKey);
                string newFile = fileName;
                if (File.Exists(oldFile) == false)
                {
                    using (Office.Excel.ForwardExcelReader newWorkbook = new Office.Excel.ForwardExcelReader(newFile))
                    {
                        newWorkbook.Open();
                        foreach (var node in CompareFile(null, newWorkbook))
                        {
                            resultChildItem.AddChild(node);
                            if (node.HasChange)
                            {
                                resultChildItem.HasChange = node.HasChange;
                            }
                        }
                    }
                }
                else
                {
                    using (Office.Excel.ForwardExcelReader newWorkbook = new Office.Excel.ForwardExcelReader(newFile))
                    {
                        using (Office.Excel.ForwardExcelReader oldWorkbook = new Office.Excel.ForwardExcelReader(oldFile))
                        {
                            oldWorkbook.Open();
                            newWorkbook.Open();
                            foreach (var node in CompareFile(oldWorkbook, newWorkbook))
                            {
                                resultChildItem.AddChild(node);
                                if (node.HasChange)
                                {
                                    resultChildItem.HasChange = node.HasChange;
                                }
                            }
                        }
                    }
                }
            }
        }
Example #5
0
 private void CompareWorker(object state)
 {
     try
     {
         TreeModel       result = new TreeModel();
         string          type   = _root.Header;
         RuleCompareNode root   = new RuleCompareNode()
         {
             Header = _root.Header, IsExpanded = true
         };
         result.AddChild(root);
         RuleCompareNode resultItem;
         string          path = state as string;
         if (type == "国环")
         {
             _asyncHandler = new FillAsyncHandler();
             List <KeyValuePair <string, string> > appendixes = FileHelper.GetAppendixes(type);
             foreach (RuleCompareNode item in _root.Children)
             {
                 if (item.IsChecked == false)
                 {
                     continue;
                 }
                 // 排放标准
                 resultItem = new RuleCompareNode()
                 {
                     Header = item.Header
                 };
                 root.AddChild(resultItem);
                 foreach (var appendix in appendixes)
                 {
                     RuleCompareNode appendixNode = new RuleCompareNode()
                     {
                         Header = appendix.Key
                     };
                     resultItem.AddChild(appendixNode);
                     CompareInner(item, appendixNode, path, type, appendix);
                 }
             }
         }
         else if (type == "北环")
         {
             _asyncHandler = new FillAsyncHandler();
             foreach (RuleCompareNode item in _root.Children)
             {
                 if (item.IsChecked == false)
                 {
                     continue;
                 }
                 // 排放标准
                 resultItem = new RuleCompareNode()
                 {
                     Header = item.Header
                 };
                 root.AddChild(resultItem);
                 CompareInner(item, resultItem, path, type, null);
             }
         }
         this.Result = result;
         this.fillManager.EndFill();
         OnFinished(EventArgs.Empty);
         this.fillManager = null;
     }
     catch (Exception ex)
     {
         WebFillManager.ShowMessageBox(ex.Message, "错误", System.Windows.Forms.MessageBoxButtons.OK,
                                       System.Windows.Forms.MessageBoxIcon.Error);
     }
     finally
     {
         if (this.fillManager != null)
         {
             this.fillManager.EndFill();
             this.fillManager = null;
         }
     }
 }