/// <summary> Constructor for a new instance of the SobekCM_Item class, which imports values from a OAI record </summary> public SobekCM_Item(OAI_Repository_DublinCore_Record OAI_Record) { metsInfo = new METS_Header_Info(); behaviorInfo = new Behaviors_Info(); divInfo = new Division_Info(); BIBInfo = new Bibliographic_Info(); web = new Web_Info(behaviorInfo); analyzed_for_complex_content = false; contains_complex_content = false; using_complex_template = false; DiskSize_KB = 0; // Copy over all the data if (OAI_Record.hasCreators) { foreach (string thisCreator in OAI_Record.Creators) { Bib_Info.Add_Named_Entity(thisCreator); } } if (OAI_Record.hasContributors) { foreach (string thisContributor in OAI_Record.Contributors) { Bib_Info.Add_Named_Entity(thisContributor, "Contributor"); } } if (OAI_Record.hasCoverages) { foreach (string thisCoverage in OAI_Record.Coverages) { Subject_Info_Standard thisSubject = new Subject_Info_Standard(); thisSubject.Add_Geographic(thisCoverage); Bib_Info.Add_Subject(thisSubject); } } if (OAI_Record.hasDates) { foreach (string thisDate in OAI_Record.Dates) { Bib_Info.Origin_Info.Date_Issued = thisDate; } } if (OAI_Record.hasDescriptions) { foreach (string thisDescription in OAI_Record.Descriptions) { Bib_Info.Add_Note(thisDescription); } } if (OAI_Record.hasFormats) { foreach (string thisFormat in OAI_Record.Formats) { Bib_Info.Original_Description.Extent = thisFormat; } } if (OAI_Record.hasIdentifiers) { foreach (string thisIdentifier in OAI_Record.Identifiers) { if (thisIdentifier.IndexOf("http://") == 0) { Bib_Info.Location.Other_URL = thisIdentifier; } else { Bib_Info.Add_Identifier(thisIdentifier); } } } if (OAI_Record.hasLanguages) { foreach (string thisLanguage in OAI_Record.Languages) { Bib_Info.Add_Language(thisLanguage); } } if (OAI_Record.hasPublishers) { foreach (string thisPublisher in OAI_Record.Publishers) { Bib_Info.Add_Publisher(thisPublisher); } } if (OAI_Record.hasRelations) { foreach (string thisRelation in OAI_Record.Relations) { Related_Item_Info newRelatedItem = new Related_Item_Info(); newRelatedItem.Main_Title.Title = thisRelation; Bib_Info.Add_Related_Item(newRelatedItem); } } if (OAI_Record.hasRights) { foreach (string thisRights in OAI_Record.Rights) { Bib_Info.Access_Condition.Text = thisRights; } } //if (OAI_Record.hasSources) //{ // foreach (string thisSource in OAI_Record.Sources) // { // this.Bib_Info.Source.Statement = r.Value.Trim() = thisSource; // } //} if (OAI_Record.hasSubjects) { foreach (string thisSubject in OAI_Record.Subjects) { if (thisSubject.IndexOf(";") > 0) { string[] splitter = thisSubject.Split(";".ToCharArray()); foreach (string thisSplit in splitter) { Bib_Info.Add_Subject(thisSplit.Trim(), String.Empty); } } else { Bib_Info.Add_Subject(thisSubject, String.Empty); } } } if (OAI_Record.hasTitles) { foreach (string thistitle in OAI_Record.Titles) { if (Bib_Info.Main_Title.ToString().Length > 0) { Bib_Info.Add_Other_Title(thistitle, Title_Type_Enum.Alternative); } else { Bib_Info.Main_Title.Clear(); Bib_Info.Main_Title.Title = thistitle; } } } if (OAI_Record.hasTypes) { foreach (string thisType in OAI_Record.Types) { Bib_Info.SobekCM_Type_String = thisType; } } // If there is a metadata configuration which calls for a metadata // extension module to always be used, add it now if (Metadata_Configuration.Metadata_Modules_To_Include.Count > 0) { foreach (Additional_Metadata_Module_Config thisConfig in Metadata_Configuration.Metadata_Modules_To_Include) { iMetadata_Module toInclude = thisConfig.Get_Module(); if (toInclude != null) { Add_Metadata_Module(thisConfig.Key, toInclude); } } } }
/// <summary> Adds a record to the collection of records </summary> /// <param name="New_Record"> New record to add </param> public void Add_Record(OAI_Repository_DublinCore_Record New_Record) { records.Add(New_Record); }
private static void read_list_of_records(Stream ResStream, OAI_Repository_Records_List ReturnValue) { // Try to read the XML XmlTextReader r = new XmlTextReader(ResStream); bool inRecord = false; OAI_Repository_DublinCore_Record thisRecord = new OAI_Repository_DublinCore_Record(); while (r.Read()) { if (inRecord) { if (r.NodeType == XmlNodeType.Element) { switch (r.Name) { case "identifier": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.OAI_Identifier = r.Value.Trim(); } break; case "datestamp": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Datestamp = r.Value.Trim(); } break; case "dc:title": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Title(r.Value.Trim()); } break; case "dc:creator": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Creator(r.Value.Trim()); } break; case "dc:subject": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Subject(r.Value.Trim()); } break; case "dc:description": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Description(r.Value.Trim()); } break; case "dc:publisher": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Publisher(r.Value.Trim()); } break; case "dc:contributor": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Contributor(r.Value.Trim()); } break; case "dc:date": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Date(r.Value.Trim()); } break; case "dc:type": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Type(r.Value.Trim()); } break; case "dc:format": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Format(r.Value.Trim()); } break; case "dc:source": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Source(r.Value.Trim()); } break; case "dc:identifier": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Identifier(r.Value.Trim()); } break; case "dc:language": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Language(r.Value.Trim()); } break; case "dc:relation": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Relation(r.Value.Trim()); } break; case "dc:coverage": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Coverage(r.Value.Trim()); } break; case "dc:rights": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Rights(r.Value.Trim()); } break; } } else if ((r.NodeType == XmlNodeType.EndElement) && (r.Name == "record")) { inRecord = false; ReturnValue.Add_Record(thisRecord); } } else { if ((r.NodeType == XmlNodeType.Element) && (r.Name == "record")) { inRecord = true; thisRecord = new OAI_Repository_DublinCore_Record(); } if ((r.NodeType == XmlNodeType.Element) && (r.Name == "resumptionToken")) { r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { ReturnValue.Resumption_Token = r.Value; } break; } } } }
/// <summary> Adds a record to the collection of records </summary> /// <param name="New_Record"> New record to add </param> public void Add_Record(OAI_Repository_DublinCore_Record New_Record) { records.Add(New_Record); }
private static void read_list_of_records(Stream ResStream, OAI_Repository_Records_List ReturnValue) { // Try to read the XML XmlTextReader r = new XmlTextReader(ResStream); bool inRecord = false; OAI_Repository_DublinCore_Record thisRecord = new OAI_Repository_DublinCore_Record(); while (r.Read()) { if (inRecord) { if (r.NodeType == XmlNodeType.Element) { switch (r.Name) { case "identifier": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.OAI_Identifier = r.Value.Trim(); } break; case "datestamp": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Datestamp = r.Value.Trim(); } break; case "dc:title": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Title(r.Value.Trim()); } break; case "dc:creator": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Creator(r.Value.Trim()); } break; case "dc:subject": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Subject(r.Value.Trim()); } break; case "dc:description": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Description(r.Value.Trim()); } break; case "dc:publisher": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Publisher(r.Value.Trim()); } break; case "dc:contributor": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Contributor(r.Value.Trim()); } break; case "dc:date": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Date(r.Value.Trim()); } break; case "dc:type": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Type(r.Value.Trim()); } break; case "dc:format": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Format(r.Value.Trim()); } break; case "dc:source": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Source(r.Value.Trim()); } break; case "dc:identifier": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Identifier(r.Value.Trim()); } break; case "dc:language": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Language(r.Value.Trim()); } break; case "dc:relation": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Relation(r.Value.Trim()); } break; case "dc:coverage": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Coverage(r.Value.Trim()); } break; case "dc:rights": r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { thisRecord.Add_Rights(r.Value.Trim()); } break; } } else if ((r.NodeType == XmlNodeType.EndElement) && (r.Name == "record")) { inRecord = false; ReturnValue.Add_Record(thisRecord); } } else { if ((r.NodeType == XmlNodeType.Element) && (r.Name == "record")) { inRecord = true; thisRecord = new OAI_Repository_DublinCore_Record(); } if ((r.NodeType == XmlNodeType.Element) && (r.Name == "resumptionToken")) { r.Read(); if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0)) { ReturnValue.Resumption_Token = r.Value; } break; } } } }