public static IReadingTemplatePart CreateTemplatePart(string templateName, string startString = null, string endString = null, int numOfStrings = 0) { if (string.IsNullOrEmpty(templateName)) { throw new ArgumentNullException("Наименование части шаблона не может быть пустым"); } IReadingTemplatePart readingTemplatePart = null; ReadingTemplateEnum readingTemplate; readingTemplate = chooseReadingPattern(templateName, startString, endString, numOfStrings); switch (readingTemplate) { case ReadingTemplateEnum.StartEnd: readingTemplatePart = new TemplatePartStartEnd(templateName, startString, endString); break; case ReadingTemplateEnum.StartAndNum: readingTemplatePart = new TemplatePartStartAndNum(templateName, startString, numOfStrings); break; case ReadingTemplateEnum.Auto: readingTemplatePart = new TemplatePartAuto(templateName); break; default: break; } return(readingTemplatePart); }
public void AddTemplatePart(IReadingTemplatePart templatePart) { if (templatePart == null) { throw new ArgumentNullException(nameof(templatePart)); } _templatePartsLinkedList.AddLast(templatePart); }
private Dictionary <string, List <ExceptionInfo> > extractTemplateObjects(string fileString, string copyFileString) { ///Надо ли делать проверку на пути к файлам //Список ошибок, разложеный по имени шаблона, применяемого для их считывания Dictionary <string, List <ExceptionInfo> > exceptionInfosDic = new Dictionary <string, List <ExceptionInfo> >(); //Первые части шаблонов Dictionary <string, IReadingTemplatePart> FirstTemplatePartsDic; //считываемый на данный момент шаблон ExceptionBodyTemplate readingExceptionBodyTemplate = null; //считывается ли сейчас шаблон bool exceptionBodyTemplateIsReading = false; //считываемая на данный момент часть шаблона IReadingTemplatePart readingTemplatePart = null; //Объект, содержащий в себе список Шаблонов Частей Шаблона и их текстовое содержание ExceptionInfo exceptionInfo = null; FirstTemplatePartsDic = getFirstsTemplateParts(); using (StreamReader streamReader = new StreamReader(copyFileString)) { while (!streamReader.EndOfStream) { fileString = streamReader.ReadLine(); #region Поиск совбадения первой части шаблона //если шаблон ещё не считывается if (!exceptionBodyTemplateIsReading) { exceptionInfo = new ExceptionInfo(); //для каждой части из списка первых частей шаблонов foreach (var templatePart in FirstTemplatePartsDic) { //Проверка на совпадение с улсовием первой Части шаблона if (templatePart.Value.CheckConditionMatch(fileString)) { exceptionBodyTemplateIsReading = true; //нахождение шаблона, первая часть которого начала считываться readingExceptionBodyTemplate = _exceptionBodyTemplatesDict[templatePart.Key]; exceptionInfo.ExcceptionBodyTemplate = readingExceptionBodyTemplate; readingTemplatePart = templatePart.Value; break; } } } #endregion #region Чтение шаблона else { LinkedListNode <IReadingTemplatePart> FirstNode = readingExceptionBodyTemplate.TemplatePartsLinkedList.First; //while (exceptionBodyTemplateIsReading) //{ // if (readingTemplatePart.IsReading) // { // readingTemplatePart.LineProcessing(fileString, ref exceptionInfo); // } // else // { // //конец считывания ЧАСТИ шаблона // if (readingExceptionBodyTemplate.TemplatePartsLinkedList.GetEnumerator().MoveNext()) // { // } // else // { // //зафигачить Null-ы или обновить значения во всех необходимых переменных // exceptionBodyTemplateIsReading = false; // exceptionInfosDic.ContainsKey(readingExceptionBodyTemplate.TemplateName) ? exceptionInfosDic[readingExceptionBodyTemplate.TemplateName].Add(readingExceptionBodyTemplate); // } // } //} } #endregion } } return(exceptionInfosDic); }