public bool Update <T>(RevertableCollection <T> revertables) where T : ITextRevertable { if (revertables == null) { return(false); } bool result = false; foreach (Revertable <T> revertable in revertables) { if (revertable == null) { continue; } string text = revertable.Value.Text; string textReverter = revertable.Reverter; string version = revertable.Value.KeywordVersion; string originalText = Revert(text, version, textReverter); revertable.OriginalText = originalText; revertable.Value.SetOriginalText(originalText); //版本不同,确实需要更新 if (StringUtil.EqualsIgnoreCase(version, this.Version) == false) { result = true; //版本肯定发生了变化 revertable.VersionChanged = true; string newReverter, newVersion; string newText = Replace(originalText, out newVersion, out newReverter); //比较恢复信息,如果发生了变化,则给ReverterChanged设置为true; if (newReverter != textReverter) { revertable.ReverterChanged = true; } //比较内容,如果发生了变化,则给TextChanged设置为true; if (newText != text) { revertable.TextChanged = true; } revertable.Reverter = newReverter; revertable.Value.SetNewRevertableText(newText, newVersion); } } return(result); }
public override RevertableCollection <ImpressionRecord> GetImpressionRecordsWithReverters(int[] impressionTypeIDs) { if (ValidateUtil.HasItems(impressionTypeIDs) == false) { return(null); } RevertableCollection <ImpressionRecord> records = new RevertableCollection <ImpressionRecord>(); using (SqlQuery query = new SqlQuery()) { query.CommandText = @" SELECT B.*, A.Text, A.KeywordVersion, TextReverter = ISNULL(R.TextReverter, '') FROM bx_ImpressionRecords AS B LEFT JOIN bx_ImpressionTypes AS A WITH(NOLOCK) ON A.TypeID = B.TypeID LEFT JOIN bx_ImpressionTypeReverters AS R WITH(NOLOCK) ON R.TypeID = A.TypeID WHERE B.TypeID IN (@TypeIDs)" ; query.CreateInParameter <int>("@TypeIDs", impressionTypeIDs); using (XSqlDataReader reader = query.ExecuteReader()) { while (reader.Read()) { string textReverter = reader.Get <string>("TextReverter"); ImpressionRecord record = new ImpressionRecord(reader); records.Add(record, textReverter); } } } return(records); }
public override RevertableCollection <Doing> GetDoingsWithReverters(IEnumerable <int> doingIDs) { if (ValidateUtil.HasItems(doingIDs) == false) { return(null); } RevertableCollection <Doing> doings = new RevertableCollection <Doing>(); using (SqlQuery query = new SqlQuery()) { query.CommandText = @" SELECT A.*, ContentReverter = ISNULL(R.ContentReverter, '') FROM bx_Doings A WITH(NOLOCK) LEFT JOIN bx_DoingReverters R WITH(NOLOCK) ON R.DoingID = A.DoingID WHERE A.DoingID IN (@DoingIDs)" ; query.CreateInParameter <int>("@DoingIDs", doingIDs); using (XSqlDataReader reader = query.ExecuteReader()) { while (reader.Read()) { string contentReverter = reader.Get <string>("ContentReverter"); Doing doing = new Doing(reader); doings.Add(doing, contentReverter); } } } return(doings); }
public override RevertableCollection <Comment> GetCommentsWithReverters(IEnumerable <int> commentIDs) { if (ValidateUtil.HasItems(commentIDs) == false) { return(null); } RevertableCollection <Comment> comments = new RevertableCollection <Comment>(); using (SqlQuery query = new SqlQuery()) { query.CommandText = @" SELECT A.*, ContentReverter = ISNULL(R.ContentReverter, '') FROM bx_Comments A WITH(NOLOCK) LEFT JOIN bx_CommentReverters R WITH(NOLOCK) ON R.CommentID = A.CommentID WHERE A.CommentID IN (@CommentIDs)" ; query.CreateInParameter <int>("@CommentIDs", commentIDs); using (XSqlDataReader reader = query.ExecuteReader()) { while (reader.Read()) { string contentReverter = reader.Get <string>("ContentReverter"); Comment comment = new Comment(reader); comments.Add(comment, contentReverter); } } } return(comments); }
public override RevertableCollection <ChatMessage> GetChatMessageWithReverters(IEnumerable <int> messageIDs) { if (ValidateUtil.HasItems(messageIDs) == false) { return(null); } RevertableCollection <ChatMessage> messages = new RevertableCollection <ChatMessage>(); using (SqlQuery query = new SqlQuery()) { query.CommandText = @" SELECT A.*, [ContentReverter] = ISNULL(R.[ContentReverter], '') FROM [bx_ChatMessages] A WITH(NOLOCK) LEFT JOIN bx_ChatMessageReverters R WITH(NOLOCK) ON R.[MessageID] = A.[MessageID] WHERE A.MessageID IN (@MessageIDs)" ; query.CreateInParameter <int>("@MessageIDs", messageIDs); using (XSqlDataReader reader = query.ExecuteReader()) { while (reader.Read()) { string contentReverter = reader.Get <string>("ContentReverter"); ChatMessage message = new ChatMessage(reader); messages.Add(message, contentReverter); } } } return(messages); }
public override RevertableCollection<BasicThread> GetThreadWithReverters(IEnumerable<int> threadIDs) { if (ValidateUtil.HasItems(threadIDs) == false) return null; RevertableCollection<BasicThread> threads = new RevertableCollection<BasicThread>(); using (SqlQuery query = new SqlQuery()) { query.CommandText = @" SELECT A.*, SubjectReverter = ISNULL(R.SubjectReverter, '') FROM bx_Threads A WITH(NOLOCK) LEFT JOIN bx_ThreadReverters R WITH(NOLOCK) ON R.ThreadID = A.ThreadID WHERE A.ThreadID IN (@ThreadIDs)"; query.CreateInParameter<int>("@ThreadIDs", threadIDs); using (XSqlDataReader reader = query.ExecuteReader()) { while (reader.Read()) { string nameReverter = reader.Get<string>("SubjectReverter"); BasicThread thread = new BasicThread(reader); threads.Add(thread, nameReverter); } } } return threads; }
public override RevertableCollection<Comment> GetCommentsWithReverters(IEnumerable<int> commentIDs) { if (ValidateUtil.HasItems(commentIDs) == false) return null; RevertableCollection<Comment> comments = new RevertableCollection<Comment>(); using (SqlQuery query = new SqlQuery()) { query.CommandText = @" SELECT A.*, ContentReverter = ISNULL(R.ContentReverter, '') FROM bx_Comments A WITH(NOLOCK) LEFT JOIN bx_CommentReverters R WITH(NOLOCK) ON R.CommentID = A.CommentID WHERE A.CommentID IN (@CommentIDs)"; query.CreateInParameter<int>("@CommentIDs", commentIDs); using (XSqlDataReader reader = query.ExecuteReader()) { while (reader.Read()) { string contentReverter = reader.Get<string>("ContentReverter"); Comment comment = new Comment(reader); comments.Add(comment, contentReverter); } } } return comments; }
public override RevertableCollection<ImpressionRecord> GetImpressionRecordsWithReverters(int[] impressionTypeIDs) { if (ValidateUtil.HasItems(impressionTypeIDs) == false) return null; RevertableCollection<ImpressionRecord> records = new RevertableCollection<ImpressionRecord>(); using (SqlQuery query = new SqlQuery()) { query.CommandText = @" SELECT B.*, A.Text, A.KeywordVersion, TextReverter = ISNULL(R.TextReverter, '') FROM bx_ImpressionRecords AS B LEFT JOIN bx_ImpressionTypes AS A WITH(NOLOCK) ON A.TypeID = B.TypeID LEFT JOIN bx_ImpressionTypeReverters AS R WITH(NOLOCK) ON R.TypeID = A.TypeID WHERE B.TypeID IN (@TypeIDs)"; query.CreateInParameter<int>("@TypeIDs", impressionTypeIDs); using (XSqlDataReader reader = query.ExecuteReader()) { while (reader.Read()) { string textReverter = reader.Get<string>("TextReverter"); ImpressionRecord record = new ImpressionRecord(reader); records.Add(record, textReverter); } } } return records; }
/// <summary> /// 更新关键字 /// </summary> /// <param name="processlist">要处理的列表</param> public abstract void UpdateBlogCategoryKeywords(RevertableCollection <BlogCategory> processlist);
public abstract void UpdateThreadKeywords(RevertableCollection <BasicThread> processlist);
public override RevertableCollection<BlogCategory> GetBlogCategoriesWithReverters(IEnumerable<int> categoryIDs) { if (ValidateUtil.HasItems(categoryIDs) == false) return null; RevertableCollection<BlogCategory> categories = new RevertableCollection<BlogCategory>(); using (SqlQuery query = new SqlQuery()) { query.CommandText = @" SELECT A.*, NameReverter = ISNULL(R.NameReverter, '') FROM bx_BlogCategories A WITH(NOLOCK) LEFT JOIN bx_BlogCategoryReverters R WITH(NOLOCK) ON R.CategoryID = A.CategoryID WHERE A.CategoryID IN (@CategoryIDs)"; query.CreateInParameter<int>("@CategoryIDs", categoryIDs); using (XSqlDataReader reader = query.ExecuteReader()) { while (reader.Read()) { string nameReverter = reader.Get<string>("NameReverter"); BlogCategory category = new BlogCategory(reader); categories.Add(category, nameReverter); } } } return categories; }
public override void UpdateImpressionRecordKeywords(RevertableCollection <ImpressionRecord> processlist) { string procedure = "bx_Impression_UpdateImpressionRecordKeywords"; string table = "bx_ImpressionTypes"; string primaryKey = "TypeID"; SqlDbType text_Type = SqlDbType.NVarChar; int text_Size = 100; SqlDbType reve_Type = SqlDbType.NVarChar; int reve_Size = 1000; if (processlist == null || processlist.Count == 0) { return; } //有一部分项是不需要更新文本的(例如:只有版本或恢复信息发生了变化),把这部分的ID取出来,一次性更新以提高性能 List <int> needUpdateButTextNotChangedIds = processlist.GetNeedUpdateButTextNotChangedKeys(); using (SqlQuery query = new SqlQuery()) { StringBuffer sql = new StringBuffer(); //前面取出的可以一次性更新版本而无需更新文本的部分项,在此批量更新 if (needUpdateButTextNotChangedIds.Count > 0) { sql += @"UPDATE " + table + " SET KeywordVersion = @NewVersion WHERE " + primaryKey + " IN (@NeedUpdateButTextNotChangedIds);"; query.CreateParameter <string>("@NewVersion", processlist.Version, SqlDbType.VarChar, 32); query.CreateInParameter("@NeedUpdateButTextNotChangedIds", needUpdateButTextNotChangedIds); } int i = 0; foreach (Revertable <ImpressionRecord> item in processlist) { //此项确实需要更新,且不只是版本发生了变化 if (item.NeedUpdate && item.OnlyVersionChanged == false) { sql.InnerBuilder.AppendFormat(@"EXEC {1} @ID_{0}, @KeywordVersion_{0}, @Text_{0}, @TextReverter_{0};", i, procedure); query.CreateParameter <int>("@ID_" + i, item.Value.GetKey(), SqlDbType.Int); //如果文字发生了变化,更新 if (item.TextChanged) { query.CreateParameter <string>("@KeywordVersion_" + i, item.Value.KeywordVersion, SqlDbType.VarChar, 32); query.CreateParameter <string>("@Text_" + i, item.Value.Text, text_Type, text_Size); } else { query.CreateParameter <string>("@KeywordVersion_" + i, null, SqlDbType.VarChar, 32); query.CreateParameter <string>("@Text_" + i, null, text_Type, text_Size); } //如果恢复信息发生了变化,更新 if (item.ReverterChanged) { query.CreateParameter <string>("@TextReverter_" + i, item.Reverter, reve_Type, reve_Size); } else { query.CreateParameter <string>("@TextReverter_" + i, null, reve_Type, reve_Size); } i++; } } query.CommandText = sql.ToString(); query.ExecuteNonQuery(); } }
public override RevertableCollection<Share> GetSharesWithReverters1(IEnumerable<int> shareIDs) { if (ValidateUtil.HasItems(shareIDs) == false) return null; RevertableCollection<Share> shares = new RevertableCollection<Share>(); using (SqlQuery query = new SqlQuery()) { query.CommandText = @" SELECT A.*, ContentReverter = ISNULL(R.ContentReverter, '') FROM [bx_SharesView] A WITH(NOLOCK) LEFT JOIN bx_ShareReverters R WITH(NOLOCK) ON R.ShareID = A.ShareID WHERE A.ShareID IN (@ShareIDs)"; query.CreateInParameter<int>("@ShareIDs", shareIDs); using (XSqlDataReader reader = query.ExecuteReader()) { while (reader.Read()) { string contentReverter = reader.Get<string>("ContentReverter"); Share share = new Share(reader); shares.Add(share, contentReverter); } } } return shares; }
public override RevertableCollection<Doing> GetDoingsWithReverters(IEnumerable<int> doingIDs) { if (ValidateUtil.HasItems(doingIDs) == false) return null; RevertableCollection<Doing> doings = new RevertableCollection<Doing>(); using (SqlQuery query = new SqlQuery()) { query.CommandText = @" SELECT A.*, ContentReverter = ISNULL(R.ContentReverter, '') FROM bx_Doings A WITH(NOLOCK) LEFT JOIN bx_DoingReverters R WITH(NOLOCK) ON R.DoingID = A.DoingID WHERE A.DoingID IN (@DoingIDs)"; query.CreateInParameter<int>("@DoingIDs", doingIDs); using (XSqlDataReader reader = query.ExecuteReader()) { while (reader.Read()) { string contentReverter = reader.Get<string>("ContentReverter"); Doing doing = new Doing(reader); doings.Add(doing, contentReverter); } } } return doings; }
public abstract void UpdateImpressionRecordKeywords(RevertableCollection <ImpressionRecord> processlist);
/// <summary> /// 更新关键字 /// </summary> /// <param name="processlist">要处理的列表</param> public abstract void UpdateShareKeywords1(RevertableCollection <Share> processlist);
public abstract void UpdateUserKeywords(RevertableCollection <User> processlist);
public abstract void UpdateChatMessageKeywords(RevertableCollection <ChatMessage> processlist);
public abstract void UpdateDoingKeywords(RevertableCollection <Doing> processlist);
public override RevertableCollection<ChatMessage> GetChatMessageWithReverters(IEnumerable<int> messageIDs) { if (ValidateUtil.HasItems(messageIDs) == false) return null; RevertableCollection<ChatMessage> messages = new RevertableCollection<ChatMessage>(); using (SqlQuery query = new SqlQuery()) { query.CommandText = @" SELECT A.*, [ContentReverter] = ISNULL(R.[ContentReverter], '') FROM [bx_ChatMessages] A WITH(NOLOCK) LEFT JOIN bx_ChatMessageReverters R WITH(NOLOCK) ON R.[MessageID] = A.[MessageID] WHERE A.MessageID IN (@MessageIDs)"; query.CreateInParameter<int>("@MessageIDs", messageIDs); using (XSqlDataReader reader = query.ExecuteReader()) { while (reader.Read()) { string contentReverter = reader.Get<string>("ContentReverter"); ChatMessage message = new ChatMessage(reader); messages.Add(message, contentReverter); } } } return messages; }
public override void UpdateBlogCategoryKeywords(RevertableCollection<BlogCategory> processlist) { string procedure = "bx_Blog_UpdateBlogCategoryKeywords"; string table = "bx_BlogCategories"; string primaryKey = "CategoryID"; SqlDbType text_Type = SqlDbType.NVarChar; int text_Size = 50; SqlDbType reve_Type = SqlDbType.NVarChar; int reve_Size = 4000; if (processlist == null || processlist.Count == 0) return; //有一部分项是不需要更新文本的(例如:只有版本或恢复信息发生了变化),把这部分的ID取出来,一次性更新以提高性能 List<int> needUpdateButTextNotChangedIds = processlist.GetNeedUpdateButTextNotChangedKeys(); using (SqlQuery query = new SqlQuery()) { StringBuffer sql = new StringBuffer(); //前面取出的可以一次性更新版本而无需更新文本的部分项,在此批量更新 if (needUpdateButTextNotChangedIds.Count > 0) { sql += @"UPDATE " + table + " SET KeywordVersion = @NewVersion WHERE " + primaryKey + " IN (@NeedUpdateButTextNotChangedIds);"; query.CreateParameter<string>("@NewVersion", processlist.Version, SqlDbType.VarChar, 32); query.CreateInParameter("@NeedUpdateButTextNotChangedIds", needUpdateButTextNotChangedIds); } int i = 0; foreach (Revertable<BlogCategory> item in processlist) { //此项确实需要更新,且不只是版本发生了变化 if (item.NeedUpdate && item.OnlyVersionChanged == false) { sql.InnerBuilder.AppendFormat(@"EXEC {1} @ID_{0}, @KeywordVersion_{0}, @Text_{0}, @TextReverter_{0};", i, procedure); query.CreateParameter<int>("@ID_" + i, item.Value.GetKey(), SqlDbType.Int); //如果文字发生了变化,更新 if (item.TextChanged) { query.CreateParameter<string>("@KeywordVersion_" + i, item.Value.KeywordVersion, SqlDbType.VarChar, 32); query.CreateParameter<string>("@Text_" + i, item.Value.Text, text_Type, text_Size); } else { query.CreateParameter<string>("@KeywordVersion_" + i, null, SqlDbType.VarChar, 32); query.CreateParameter<string>("@Text_" + i, null, text_Type, text_Size); } //如果恢复信息发生了变化,更新 if (item.ReverterChanged) query.CreateParameter<string>("@TextReverter_" + i, item.Reverter, reve_Type, reve_Size); else query.CreateParameter<string>("@TextReverter_" + i, null, reve_Type, reve_Size); i++; } } query.CommandText = sql.ToString(); query.ExecuteNonQuery(); } }
/// <summary> /// 更新关键字 /// </summary> /// <param name="processlist">要处理的列表</param> public abstract void UpdateCommentKeywords(RevertableCollection <Comment> processlist);