Пример #1
0
        WordSemanticBranch GetSemanticLink(SearchRun searchRun)
        {
            Options opt = new Options();

            opt.ForceSearch = searchRun.ForceSearch;
            opt.DeepSearch  = searchRun.DeepSearch;

            searchRun.WordLink.Children = m_SemanticHelper.GetSemanticLink(searchRun.WordToSearch, opt).Children;//, searchRun.Granny);
            return(searchRun.WordLink);
        }
Пример #2
0
        public void StartSearch(object searchRun)
        {
            try
            {
                SearchRun curRun = (SearchRun)searchRun;

                //if (!curRun.ForceSearch)
                //{
                //    lnk = m_SemanticHelper. GetSemanticLinkFromDB(sWord);

                //    if (lnk != null)
                //    {
                //        lock (m_dbHelper)
                //        {

                //            //lnk.Granny = new RegistryWord(m_dbHelper.GetWord(sParent));
                //        }
                //        if (lnk.ParentWord.Status != WordStatus.eNotProcessed)
                //            return lnk;
                //        else
                //            UpdateWordStatus(lnk.ParentWord, WordStatus.eInProgress);
                //    }
                //}

                //m_SemanticHelper.UpdateWordStatus(curRun.WordLink.ParentWord, WordStatus.eNotProcessed);//WordStatus.eInProgress);
                //OnExplProcessed(new ExplProcessedEventArgs(curRun, false));
                if (curRun.DeepSearch <= 0)
                {
                    //if( curRun.WordLink.ParentWord.Status
                    //m_SemanticHelper.UpdateWordStatus(curRun.WordLink.ParentWord, WordStatus.eNotProcessed);
                    //OnExplProcessed(new ExplProcessedEventArgs(curRun, true));
                }
                else
                {
                    Search(curRun);
                    m_SemanticHelper.UpdateWordStatus(curRun.WordLink.ParentWord, WordStatus.eCompleted);
                    OnExplProcessed(new ExplProcessedEventArgs(curRun, false));
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(string.Format("{0}\n{1}", "CLientLogic.StartSearch", ex.Message));
            }
        }
Пример #3
0
        private void Edit_HandlerRuns(object sender, EventArgs e)
        {
            WordSemanticBranch aLink = null;

            SearchRun selectedRun = (SearchRun)lvRuns.SelectedItem;

            if (selectedRun != null)
            {
                aLink = selectedRun.WordLink;
            }

            if (aLink == null)
            {
                return;
            }

            EditRelationsWindow wnd = new EditRelationsWindow(aLink);
            bool?bRes = wnd.ShowDialog();

            if (bRes != null && bRes == true)
            {
                CollectionViewSource.GetDefaultView(SearchLogic.ListWords).Refresh();
            }
        }
Пример #4
0
 public ExplProcessedEventArgs(SearchRun aRun, bool bUpdate)
 {
     CurrentRun = aRun;
     Update     = bUpdate;
 }
Пример #5
0
        public void Search(SearchRun searchRun)
        {
            try
            {
                WordSemanticBranch lnk = null;

                if (!searchRun.ForceSearch)
                {
                    lnk = m_SemanticHelper.GetSemanticLinkFromDB(searchRun.WordLink.ParentWord.Word);

                    if (lnk != null)
                    {
                        if (lnk.ParentWord.Status == WordStatus.eNotProcessed)
                        {
                            lnk = null;
                        }
                    }
                }

                if (lnk == null)
                {
                    m_SemanticHelper.UpdateWordStatus(searchRun.WordLink.ParentWord, WordStatus.eInProgress);
                    OnExplProcessed(new ExplProcessedEventArgs(searchRun, false));
                    GetSemanticLink(searchRun);
                }
                else
                {
                    //searchRun.WordLink = lnk;
                }

                //m_SemanticHelper.UpdateWordStatus(curRun.WordLink.ParentWord, WordStatus.eNotProcessed);//WordStatus.eInProgress);
                //OnExplProcessed(new ExplProcessedEventArgs(curRun, false));

                //searchRun.WordLink =
                //GetSemanticLink(searchRun);
                //WordSemanticLink link = GetSemanticLink(searchRun);
                //if (!m_ListLinks.Keys.Contains(searchRun.WordToSearch))
                //{
                //    m_ListLinks.Add(link.ParentWord.Word, link);
                //    OnExplProcessed(new ExplProcessedEventArgs(searchRun, true));
                //}

                int nNewDeepSearch = searchRun.DeepSearch - 1;
                foreach (WordLink aLink in searchRun.WordLink.Children)
                {
                    if (aLink.RelationType == WordLinkType.eNormal ||
                        aLink.RelationType == WordLinkType.eTentative)
                    {
                        WordSemanticBranch childLink = m_SemanticHelper.GetSemanticLinkFromDB(aLink.Child.Word);
                        if (childLink == null)
                        {
                            m_SemanticHelper.UpdateWordStatus(aLink.Child, WordStatus.eNotProcessed);
                            childLink            = new WordSemanticBranch();
                            childLink.ParentWord = aLink.Child;
                            m_SemanticHelper.AddDictionaryWord(childLink);
                        }
                        OnExplProcessed(new ExplProcessedEventArgs(new SearchRun(childLink, 0, false, 0), true));

                        ThreadPool.QueueUserWorkItem(new WaitCallback(this.StartSearch), new SearchRun(childLink, searchRun.DeepSearch - 1, searchRun.ForceSearch, searchRun.CurDeep + 1));
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(string.Format("{0}\n{1}", "CLientLogic.Search", ex.Message));
            }
        }