Esempio n. 1
0
        private void ProcessKeyword(DoingCollection doings, ProcessKeywordMode mode)
        {
            if (doings.Count == 0)
            {
                return;
            }

            KeywordReplaceRegulation keyword = AllSettings.Current.ContentKeywordSettings.ReplaceKeywords;

            bool needProcess = false;

            //更新关键字模式,只在必要的情况下才取恢复信息并处理
            if (mode == ProcessKeywordMode.TryUpdateKeyword)
            {
                needProcess = keyword.NeedUpdate <Doing>(doings);
            }
            //填充原始内容模式,始终都要取恢复信息,但不处理
            else
            {
                needProcess = true;
            }

            if (needProcess)
            {
                RevertableCollection <Doing> doingsWithReverter = DoingDao.Instance.GetDoingsWithReverters(doings.GetKeys());

                if (doingsWithReverter != null)
                {
                    if (keyword.Update(doingsWithReverter))
                    {
                        DoingDao.Instance.UpdateDoingKeywords(doingsWithReverter);
                    }

                    //将新数据填充到旧的列表
                    doingsWithReverter.FillTo(doings);
                }
            }

            if (mode == ProcessKeywordMode.TryUpdateKeyword)
            {
                foreach (Doing doing in doings)
                {
                    CommentBO.Instance.ProcessKeyword(doing.CommentList, mode);
                }
            }
        }