Пример #1
0
        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));
        }
Пример #2
0
        public void Process(dataFieldType dataField, ImportedProject importedProject)
        {
            var genreSubfield = dataField.subfield.FirstOrDefault(x => x.code == GenreCode);

            if (genreSubfield != null)
            {
                importedProject.LiteraryGenres.Add(genreSubfield.Value);
            }
        }
Пример #3
0
        public void Process(dataFieldType dataField, ImportedProject importedProject)
        {
            var keywordSubfield = dataField.subfield.FirstOrDefault(x => x.code == KeywordCode);

            if (keywordSubfield != null)
            {
                importedProject.Keywords.Add(keywordSubfield.Value);
            }
        }
Пример #4
0
        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;
                }
            }
        }
Пример #5
0
        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;
        }
Пример #6
0
        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();
        }
Пример #7
0
        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);
        }
Пример #8
0
        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);
            }
        }
Пример #9
0
 public void Process(controlFieldType dataField, ImportedProject importedProject)
 {
     importedProject.Id = dataField.Value;
 }