private void UpdateListOfHeader(Clipping clipping) { ClippingsHeader header = FindClippingsHeader(clipping.Author, clipping.Title); if(header == null) { header = new ClippingsHeader(clipping.Author, clipping.Title); m_ListOfHeaders.Add(header); } header.ListOfClippings.Add(clipping); }
private void ParseMyClippingsFile() { using (StreamReader sr = new StreamReader(m_PathToClippingsFile)) { StringBuilder stringBuilder = new StringBuilder(); string currentLine = sr.ReadLine(); stringBuilder.AppendLine(currentLine); while (!sr.EndOfStream && !string.IsNullOrEmpty(currentLine)) { string title = string.Empty; string author = string.Empty; SeparateTitleFromAuthor(currentLine, out title, out author); currentLine = sr.ReadLine(); stringBuilder.AppendLine(currentLine); string ts = TryExtractTimeStampFromLineOfText(currentLine); currentLine = sr.ReadLine(); //skip empty line stringBuilder.AppendLine(currentLine); if (!string.IsNullOrEmpty(currentLine)) { throw (new Exception(string.Format("{0} Empty line after timestamp was not found. {1}{2} {3}", UNEXPECTED_FILE_STRUCTURE, Environment.NewLine, CURRENT_LINE_TEXT, currentLine))); } currentLine = sr.ReadLine(); //read clipping text stringBuilder.AppendLine(currentLine); Clipping newClipping = new Clipping(title, author, ts, currentLine); m_ListOfMyClippings.Add(newClipping); UpdateListOfHeader(newClipping); currentLine = sr.ReadLine(); //skip clippings separator stringBuilder.AppendLine(currentLine); if (!string.Equals(currentLine, CLIPPINGS_SEPARATOR)) { throw (new Exception(string.Format("{0} Clippings separator was not found. {1}{2} {3}", UNEXPECTED_FILE_STRUCTURE, Environment.NewLine, CURRENT_LINE_TEXT, currentLine))); } currentLine = sr.ReadLine(); //read next line stringBuilder.AppendLine(currentLine); } m_OriginalMyClippingsFileText = stringBuilder.ToString(); } PopulateListsOfAllAuthorsAndTitles(); }