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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        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;
        }
Esempio n. 7
0
        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;
        }
Esempio n. 8
0
        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;
        }
Esempio n. 9
0
 /// <summary>
 /// 更新关键字
 /// </summary>
 /// <param name="processlist">要处理的列表</param>
 public abstract void UpdateBlogCategoryKeywords(RevertableCollection <BlogCategory> processlist);
Esempio n. 10
0
 public abstract void UpdateThreadKeywords(RevertableCollection <BasicThread> processlist);
Esempio n. 11
0
        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;
        }
Esempio n. 12
0
        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();
            }
        }
Esempio n. 13
0
        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;
        }
Esempio n. 14
0
        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;
        }
Esempio n. 15
0
 public abstract void UpdateImpressionRecordKeywords(RevertableCollection <ImpressionRecord> processlist);
Esempio n. 16
0
 /// <summary>
 /// 更新关键字
 /// </summary>
 /// <param name="processlist">要处理的列表</param>
 public abstract void UpdateShareKeywords1(RevertableCollection <Share> processlist);
Esempio n. 17
0
 public abstract void UpdateUserKeywords(RevertableCollection <User> processlist);
Esempio n. 18
0
 public abstract void UpdateChatMessageKeywords(RevertableCollection <ChatMessage> processlist);
Esempio n. 19
0
 public abstract void UpdateDoingKeywords(RevertableCollection <Doing> processlist);
Esempio n. 20
0
        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;
        }
Esempio n. 21
0
        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();
            }
        }
Esempio n. 22
0
 /// <summary>
 /// 更新关键字
 /// </summary>
 /// <param name="processlist">要处理的列表</param>
 public abstract void UpdateCommentKeywords(RevertableCollection <Comment> processlist);