/// <summary> /// 新增一篇文章 /// </summary> /// <param name="parentId">上级id</param> /// <param name="name">文章的名字</param> /// <returns>新增的文章的唯一标识符</returns> public string AddArticle(string parentId, string name) { if (parentId.StartsWith("HBook")) { parentId = this.BookVector.Find(t => t.BookRef.Id == parentId).BookRef.HomePage.Id; } var parent = this.ArticleDict[parentId]; // 记录时间戳 var createTime = DateTime.Now; // 构造主页文章 FlowDocument flowDoc = new FlowDocument(); TextRange st = new TextRange(flowDoc.ContentStart, flowDoc.ContentEnd); MemoryStream metadata = new MemoryStream(); st.Save(metadata, System.Windows.DataFormats.XamlPackage); HArticle ao = new HArticle() { Id = "HArticle#" + Guid.NewGuid(), ParentId = parentId, Name = name, CreateTimeStamp = createTime, LastEditTimeStamp = createTime, DocumentMetadata = metadata, BookId = parent.BookId }; this.ArticleDict[ao.Id] = ao; parent.ChildrenList.Add(ao); // 提交到稳定储存器 this.BookCommit(parent.BookId); return(ao.Id); }
internal static int GetSimpleWordCountByMetadata(HArticle ao) { var dict = StatisticsWindow.core.mainWndRef.RTBPageCacheDict; if (dict.ContainsKey(ao.Id)) { return(StatisticsWindow.GetSimpleWordCount(dict[ao.Id].GetText())); } else { RTBPage np = new RTBPage() { ArticalRef = ao }; TextRange t = new TextRange(np.RichTextBox_TextArea.Document.ContentStart, np.RichTextBox_TextArea.Document.ContentEnd); t.Load(ao.DocumentMetadata, DataFormats.XamlPackage); np.UpdateRTBStyle(); dict[ao.Id] = np; return(StatisticsWindow.GetSimpleWordCount(np.GetText())); } }
/// <summary> /// 添加一本书籍 /// </summary> /// <param name="bookName">书籍的名字</param> /// <returns>所添加的书籍的唯一标识符</returns> public string AddBook(string bookName) { // 记录时间戳 var createTime = DateTime.Now; // 构造主页文章 FlowDocument flowDoc = new FlowDocument(); TextRange st = new TextRange(flowDoc.ContentStart, flowDoc.ContentEnd); MemoryStream metadata = new MemoryStream(); st.Save(metadata, System.Windows.DataFormats.XamlPackage); HArticle homePage = new HArticle() { Id = "HArticle#" + Guid.NewGuid(), ParentId = "HArticle#ROOT", Name = bookName, CreateTimeStamp = createTime, LastEditTimeStamp = createTime, DocumentMetadata = metadata }; this.ArticleDict[homePage.Id] = homePage; // 构造书籍对象 var bookId = "HBook#" + Guid.NewGuid(); HBook hb = new HBook() { Id = bookId, Name = bookName, HomePage = homePage, CreateTimeStamp = createTime, LastEditTimeStamp = createTime, FileName = $"{bookId}.{App.AppBookDataExtension}" }; this.BookVector.Add(new BookCacheDescriptor(hb, true)); homePage.BookId = bookId; // 提交到稳定储存器 this.FullCommit(); return(bookId); }