コード例 #1
0
 //--------------------------------------------------------------------------
 // given a word and document(s), return the exact position of the word
 // in the document(s)
 public bool GetWordLocationDetails(Word word,
                                    List <Document> documents,
                                    GetWordLocationDetailsCallback callback)
 {
     return(_workerThread.PostTask(_ => {
         try {
             WordLocationDetails result =
                 ContainsService.Instance.Query(documents, word);
             callback(result, true, null);
         } catch (Exception e) {
             callback(null, false, e.Message);
         }
     }));
 }
        //--------------------------------------------------------------------------
        private void FillLocationsListOnUIThread(WordLocationDetails locations,
                                                 Word word,
                                                 bool append = false)
        {
            // do we have a documents filter?
            _parentForm.Invoke((MethodInvoker) delegate {
                if (!append)
                {
                    _parentForm.listViewLocations.Items.Clear();
                }

                foreach (LocationDetail item in locations.LocationDetails)
                {
                    ListViewItem listViewItem = new ListViewItem();
                    listViewItem.Text         = item.Document.GutenbergId;
                    listViewItem.SubItems.Add(item.Document.Title);
                    listViewItem.SubItems.Add(word.Value);
                    listViewItem.SubItems.Add((item.Location.Line + 1).ToString(
                                                  "N0",
                                                  CultureInfo.InvariantCulture));
                    listViewItem.SubItems.Add((item.Location.Page + 1).ToString(
                                                  "N0",
                                                  CultureInfo.InvariantCulture));
                    listViewItem.SubItems.Add((item.Location.Sentence + 1).ToString(
                                                  "N0",
                                                  CultureInfo.InvariantCulture));
                    listViewItem.SubItems.Add((item.Location.Paragraph + 1).ToString(
                                                  "N0",
                                                  CultureInfo.InvariantCulture));
                    listViewItem.Tag = item;
                    _parentForm.listViewLocations.Items.Add(listViewItem);
                }

                UpdateLocationsCount();

                // update the title of the form to reflect that currently selected word
                _parentForm.Text = String.Format(
                    "Book Concordance - {0} Inspector",
                    _showGroups ? "Groups" : "Words");
            });
        }
コード例 #3
0
        //-------------------------------------------------------------------------
        public WordLocationDetails Query(List <Document> documents, Word word)
        {
            // query the DB
            List <Contains> contains = ContainsDao.Query(documents, word);

            WordLocationDetails locationDetails = new WordLocationDetails();

            locationDetails.Word            = word;
            locationDetails.LocationDetails = new List <LocationDetail>();

            foreach (Contains item in contains)
            {
                locationDetails.LocationDetails.Add(new LocationDetail()
                {
                    Document = DocumentsService.Instance.GetById(item.DocumentId),
                    Location = item
                });
            }

            return(locationDetails);
        }