public void Process(dataFieldType dataField, ImportedProject importedProject) { var authorSubfield = dataField.subfield.FirstOrDefault(x => x.code == AuthorCode); if (authorSubfield == null) { return; } var author = authorSubfield.Value; var lastName = author; var firstName = ""; var index = author.IndexOf(','); if (index > 0) { lastName = author.Substring(0, index); if (index + 2 < author.Length) { firstName = author.Substring(index + 2); firstName = firstName.Replace(",", string.Empty); } } importedProject.Authors.Add(new Author(firstName, lastName)); }
public void Process(dataFieldType dataField, ImportedProject importedProject) { var genreSubfield = dataField.subfield.FirstOrDefault(x => x.code == GenreCode); if (genreSubfield != null) { importedProject.LiteraryGenres.Add(genreSubfield.Value); } }
public void Process(dataFieldType dataField, ImportedProject importedProject) { var keywordSubfield = dataField.subfield.FirstOrDefault(x => x.code == KeywordCode); if (keywordSubfield != null) { importedProject.Keywords.Add(keywordSubfield.Value); } }
public void Process(dataFieldType dataField, ImportedProject importedProject) { var publishInfo = dataField.subfield.FirstOrDefault(x => x.code == PublishInfoCode); if (publishInfo == null) { return; } var index = publishInfo.Value.IndexOfAny(new[] { ':', ',' }); if (index <= 0) { return; } var publishPlace = publishInfo.Value.Substring(0, index); importedProject.ProjectMetadata.PublishPlace = publishPlace.RemoveUnnecessaryCharacters(); var rest = publishInfo.Value.Substring(index); if (string.IsNullOrEmpty(rest)) { return; } rest = rest.RemoveUnnecessaryCharacters(); index = rest.LastIndexOf(','); if (index > 0) { var publisherText = rest.Substring(0, index); var publishDate = rest.Substring(index); if (!string.IsNullOrEmpty(publisherText) && publisherText.Length > 1) { importedProject.ProjectMetadata.PublisherText = publisherText.RemoveUnnecessaryCharacters(); } if (!string.IsNullOrEmpty(publishDate) && publishDate.Length > 1) { importedProject.ProjectMetadata.PublishDate = publishDate.RemoveUnnecessaryCharacters(); } } else { if (int.TryParse(rest, out var publishDate)) { importedProject.ProjectMetadata.PublishDate = publishDate.ToString(); } else { importedProject.ProjectMetadata.PublisherText = rest; } } }
public void Process(dataFieldType dataField, ImportedProject importedProject) { var publishPlace = dataField.subfield.FirstOrDefault(x => x.code == PublishPlaceCode); importedProject.ProjectMetadata.PublishPlace = publishPlace?.Value.RemoveUnnecessaryCharacters(); var publisherText = dataField.subfield.FirstOrDefault(x => x.code == PublisherTextCode); importedProject.ProjectMetadata.PublisherText = publisherText?.Value.RemoveUnnecessaryCharacters(); importedProject.ProjectMetadata.PublishDate = dataField.subfield.FirstOrDefault(x => x.code == PublishDateCode)?.Value; }
public void Process(dataFieldType dataField, ImportedProject importedProject) { var projectSubfield = dataField.subfield.FirstOrDefault(x => x.code == ProjectNameFirstLineCode); if (projectSubfield == null) { return; } importedProject.ProjectMetadata.Title = projectSubfield.Value; var nameSecondLine = dataField.subfield.FirstOrDefault(x => x.code == ProjectNameSecondLineCode); if (nameSecondLine != null) { importedProject.ProjectMetadata.Title = string.Concat(importedProject.ProjectMetadata.Title, " ", nameSecondLine.Value); } importedProject.ProjectMetadata.Title = importedProject.ProjectMetadata.Title.RemoveUnnecessaryCharacters(); }
public ImportedRecord AddParsedProject(ImportedRecord importedRecord) { var record = ((string)importedRecord.RawData).XmlDeserializeFromString <MARC21record>(); var project = new ImportedProject(); foreach (var dataField in record.datafield) { m_dataFieldProcessors.TryGetValue(dataField.tag, out var dataFieldProcessor); dataFieldProcessor?.Process(dataField, project); } foreach (var controlField in record.controlfield) { m_controlFieldProcessors.TryGetValue(controlField.tag, out var controlFieldProcessor); controlFieldProcessor?.Process(controlField, project); } importedRecord.ImportedProject = project; return(importedRecord); }
public void Process(dataFieldType dataField, ImportedProject importedProject) { var dateSubfield = dataField.subfield.FirstOrDefault(x => x.code == NotAfterAndNotBeforeCode); if (dateSubfield == null) { return; } importedProject.ProjectMetadata.OriginDate = dateSubfield.Value; var dates = dateSubfield.Value.Split('-'); if (int.TryParse(dates[0], out var year) && year > 0) { importedProject.ProjectMetadata.ManuscriptDescriptionData.NotBefore = new DateTime(year, 1, 1); } if (dates.Length > 1 && dates[1].Length > 0 && int.TryParse(dates[0], out year) && year > 0) { importedProject.ProjectMetadata.ManuscriptDescriptionData.NotAfter = new DateTime(year, 1, 1); } }
public void Process(controlFieldType dataField, ImportedProject importedProject) { importedProject.Id = dataField.Value; }