コード例 #1
0
 ///<summary>Reloads all data for form.</summary>
 private void RefreshData()
 {
     _listHashes           = BugSubmissionHashes.GetMany(datePicker.GetDateTimeFrom(), datePicker.GetDateTimeTo());
     _dictBugSubsByHashNum = BugSubmissions.GetForHashNums(_listHashes.Select(x => x.BugSubmissionHashNum).ToList());
     _dictBugs             = Bugs.GetMany(_listHashes.Select(x => x.BugId).Where(x => x != 0).ToList()).ToDictionary(key => key.BugId);
     _dictPatients         = RegistrationKeys.GetPatientsByKeys(_dictBugSubsByHashNum.Values.SelectMany(x => x.Select(y => y.RegKey)).ToList());
 }
コード例 #2
0
        ///<summary>When grid is clicked, show bug submissions grouped by version in Hash Data grid.</summary>
        private void gridHashes_CellClick(object sender, UI.ODGridClickEventArgs e)
        {
            Dictionary <string, List <BugSubmission> > dictSubStackTraces;
            object gridTagObj = gridHashes.ListGridRows[e.Row].Tag;

            if (gridTagObj is BugSubmissionHash)            //No Grouping
            {
                dictSubStackTraces = _dictBugSubsByHashNum[(gridTagObj as BugSubmissionHash).BugSubmissionHashNum]
                                     .GroupBy(x => x.ProgramVersion)
                                     .ToDictionary(x => x.Key, x => x.ToList());
            }
            else if (gridTagObj is List <BugSubmissionHash> )
            {
                dictSubStackTraces = new Dictionary <string, List <BugSubmission> >();
                foreach (BugSubmissionHash hash in (gridTagObj as List <BugSubmissionHash>))
                {
                    _dictBugSubsByHashNum[hash.BugSubmissionHashNum]
                    .GroupBy(x => x.ProgramVersion)
                    .ForEach(x => {
                        if (dictSubStackTraces.ContainsKey(x.Key))
                        {
                            dictSubStackTraces[x.Key].AddRange(x.ToList());
                        }
                        else
                        {
                            dictSubStackTraces.Add(x.Key, x.ToList());
                        }
                    });
                }
            }
            else
            {
                MsgBox.Show("Error loading Hash Details: Unknown Tag");
                return;
            }
            gridHashData.BeginUpdate();
            gridHashData.ListGridRows.Clear();
            foreach (string key in dictSubStackTraces.Keys)
            {
                BugSubmission sub = dictSubStackTraces[key].OrderBy(x => new Version(x.ProgramVersion)).Last();              //Most recent version.
                BugSubmissionHashes.ProcessSubmission(sub
                                                      , out long matchedBugId, out string matchedFixedVersions, out long matchedBugSubmissionHashNum
                                                      , useConnectionStore: false
                                                      );
                string versionSubmitted = new Version(sub.ProgramVersion).ToString();
                string countRegKeys     = dictSubStackTraces[key].Select(x => x.RegKey).Distinct().Count().ToString();
                string countTotalSubs   = dictSubStackTraces[key].Count().ToString();
                gridHashData.AddRow(tag: dictSubStackTraces[key], versionSubmitted, countRegKeys, countTotalSubs, (matchedFixedVersions ?? ""));
            }
            gridHashData.EndUpdate();
            gridSubs.BeginUpdate();
            gridSubs.ListGridRows.Clear();
            gridSubs.EndUpdate();
        }
コード例 #3
0
        ///<summary></summary>
        private void gridSubs_RightClickHelper(object sender, EventArgs e)
        {
            int index = gridSubs.GetSelectedIndex();

            if (index == -1)           //Should not happen, menu item is only enabled when exactly 1 row is selected.
            {
                return;
            }
            List <BugSubmission> listSubs;

            switch (((MenuItem)sender).Index)
            {
            case 0:                    //Open Submission
                listSubs = (List <BugSubmission>)gridSubs.ListGridRows[index].Tag;
                FormBugSubmission formBugSub = new FormBugSubmission(listSubs[0], _jobCur);
                formBugSub.Show();
                break;

            case 1:                    //Open Bug
                listSubs = (List <BugSubmission>)gridSubs.ListGridRows[index].Tag;
                OpenBug(listSubs[0]);
                break;

            case 2:                                           //Hide or Unhide submission
                listSubs = gridSubs.SelectedTags <List <BugSubmission> >().SelectMany(x => x.ToList()).ToList();
                bool isHidden = (!listSubs.First().IsHidden); //Flip all grouped submissions based on what the user selected/sees in the grid.
                listSubs.ForEach(x => x.IsHidden = isHidden);
                BugSubmissions.UpdateMany(listSubs, "IsHidden");
                FillSubGrid(true);
                break;

            case 3:                              //Link or Unlink bug
                listSubs = gridSubs.SelectedTags <List <BugSubmission> >().SelectMany(x => x.ToList()).ToList();
                if (listSubs.First().BugId == 0) //Not linked to existing bug, so link
                {
                    FormBugSearch formBS = new FormBugSearch(new Job());
                    if (formBS.ShowDialog() != DialogResult.OK)
                    {
                        return;
                    }
                    listSubs.ForEach(x => x.BugId = formBS.BugCur.BugId);
                    BugSubmissionHashes.UpdateBugIds(listSubs, formBS.BugCur.BugId);
                }
                else                          //Unlink
                {
                    listSubs.ForEach(x => x.BugId = 0);
                    BugSubmissionHashes.UpdateBugIds(listSubs, 0);
                }
                BugSubmissions.UpdateMany(listSubs, "BugId");
                FillSubGrid(true);
                break;
            }
        }
コード例 #4
0
        ///<summary>When clicked, allows user to past stacktrace and enter version to attempt to find hash and matched info.</summary>
        private void butCheckHash_Click(object sender, EventArgs e)
        {
            InputBox input = new InputBox("Please paste a stack trace", true);

            if (input.ShowDialog() != DialogResult.OK)
            {
                return;
            }
            BugSubmission sub = new BugSubmission()
            {
                ExceptionStackTrace = input.textResult.Text.Replace("\r\n", "\n"),
            };

            input = new InputBox("Please enter a version like: 19.2.1.0");
            if (input.ShowDialog() != DialogResult.OK || !Version.TryParse(input.textResult.Text, out Version version))
            {
                return;
            }
            BugSubmissionHashes.ProcessSubmission(sub
                                                  , out long matchedBugId, out string matchedFixedVersions, out long matchedBugSubmissionHashNum
                                                  , version, false
                                                  );
            MsgBox.Show($"MatchedBugId: {matchedBugId}\r\nMatchedFixedVersions: {matchedFixedVersions}\r\nMatchedBugSubmissionHashNum: {matchedBugSubmissionHashNum}");
        }