/// <summary> Renders the HTML for this element </summary> /// <param name="Output"> Textwriter to write the HTML for this element </param> /// <param name="Bib"> Object to populate this element from </param> /// <param name="Skin_Code"> Code for the current skin </param> /// <param name="isMozilla"> Flag indicates if the current browse is Mozilla Firefox (different css choices for some elements)</param> /// <param name="popup_form_builder"> Builder for any related popup forms for this element </param> /// <param name="Current_User"> Current user, who's rights may impact the way an element is rendered </param> /// <param name="CurrentLanguage"> Current user-interface language </param> /// <param name="Translator"> Language support object which handles simple translational duties </param> /// <param name="Base_URL"> Base URL for the current request </param> /// <remarks> This simple element does not append any popup form to the popup_form_builder</remarks> public override void Render_Template_HTML(TextWriter Output, SobekCM_Item Bib, string Skin_Code, bool isMozilla, StringBuilder popup_form_builder, User_Object Current_User, Web_Language_Enum CurrentLanguage, Language_Support_Info Translator, string Base_URL) { // Check that an acronym exists if (Acronym.Length == 0) { Acronym = "Measurement related to this item, whether it is length, volume, duration, weight, etc.."; } List <string> terms = new List <string>(); List <string> schemes = new List <string>(); // Try to get any existing learning object metadata module VRACore_Info vraInfo = Bib.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; if (vraInfo != null) { foreach (VRACore_Measurement_Info thisMeasurement in vraInfo.Measurements) { terms.Add(thisMeasurement.Measurements); schemes.Add(thisMeasurement.Units); } } render_helper(Output, terms, schemes, Skin_Code, Current_User, CurrentLanguage, Translator, Base_URL); }
/// <summary> Renders the HTML for this element </summary> /// <param name="Output"> Textwriter to write the HTML for this element </param> /// <param name="Bib"> Object to populate this element from </param> /// <param name="Skin_Code"> Code for the current skin </param> /// <param name="isMozilla"> Flag indicates if the current browse is Mozilla Firefox (different css choices for some elements)</param> /// <param name="popup_form_builder"> Builder for any related popup forms for this element </param> /// <param name="Current_User"> Current user, who's rights may impact the way an element is rendered </param> /// <param name="CurrentLanguage"> Current user-interface language </param> /// <param name="Translator"> Language support object which handles simple translational duties </param> /// <param name="Base_URL"> Base URL for the current request </param> /// <remarks> This simple element does not append any popup form to the popup_form_builder</remarks> public override void Render_Template_HTML(TextWriter Output, SobekCM_Item Bib, string Skin_Code, bool isMozilla, StringBuilder popup_form_builder, User_Object Current_User, Web_Language_Enum CurrentLanguage, Language_Support_Info Translator, string Base_URL) { // Check that an acronym exists if (Acronym.Length == 0) { Acronym = "Materials out of which this resource, or a portion of this resource, was created."; } List <string> terms = new List <string>(); List <string> schemes = new List <string>(); // Try to get any existing learning object metadata module VRACore_Info vraInfo = Bib.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; if (vraInfo != null) { foreach (VRACore_Materials_Info thisMaterial in vraInfo.Materials) { terms.Add(thisMaterial.Materials); schemes.Add(thisMaterial.Type); } } render_helper(Output, terms, schemes, Skin_Code, Current_User, CurrentLanguage, Translator, Base_URL); }
/// <summary> Prepares the bib object for the save, by clearing any existing data in this element's related field(s) </summary> /// <param name="Bib"> Existing digital resource object which may already have values for this element's data field(s) </param> /// <param name="Current_User"> Current user, who's rights may impact the way an element is rendered </param> /// <remarks> This clears any preexisting resource type values </remarks> public override void Prepare_For_Save(SobekCM_Item Bib, User_Object Current_User) { // Try to get any existing metadata module VRACore_Info vraInfo = Bib.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; if (vraInfo != null) vraInfo.Clear_Cultural_Contexts(); }
/// <summary> Renders the HTML for this element </summary> /// <param name="Output"> Textwriter to write the HTML for this element </param> /// <param name="Bib"> Object to populate this element from </param> /// <param name="Skin_Code"> Code for the current skin </param> /// <param name="IsMozilla"> Flag indicates if the current browse is Mozilla Firefox (different css choices for some elements)</param> /// <param name="PopupFormBuilder"> Builder for any related popup forms for this element </param> /// <param name="Current_User"> Current user, who's rights may impact the way an element is rendered </param> /// <param name="CurrentLanguage"> Current user-interface language </param> /// <param name="Translator"> Language support object which handles simple translational duties </param> /// <param name="Base_URL"> Base URL for the current request </param> /// <remarks> This simple element does not append any popup form to the popup_form_builder</remarks> public override void Render_Template_HTML(TextWriter Output, SobekCM_Item Bib, string Skin_Code, bool IsMozilla, StringBuilder PopupFormBuilder, User_Object Current_User, Web_Language_Enum CurrentLanguage, Language_Support_Info Translator, string Base_URL) { // Check that an acronym exists if (Acronym.Length == 0) { Acronym = "Technique used with this visual resource."; } // Start the list to collect all current instance values List <string> instanceValues = new List <string>(); // Try to get any existing metadata module VRACore_Info vraInfo = Bib.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; if (vraInfo != null) { foreach (string thisValue in vraInfo.Techniques) { instanceValues.Add(thisValue); } } // Add to the current template (stream) render_helper(Output, instanceValues, Skin_Code, Current_User, CurrentLanguage, Translator, Base_URL); }
/// <summary> Saves the data rendered by this element to the provided bibliographic object during postback </summary> /// <param name="Bib"> Object into which to save the user's data, entered into the html rendered by this element </param> public override void Save_To_Bib(SobekCM_Item Bib) { // Try to get any existing metadata module VRACore_Info vraInfo = Bib.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; string[] getKeys = HttpContext.Current.Request.Form.AllKeys; foreach (string thisKey in getKeys.Where(thisKey => thisKey.IndexOf(html_element_name.Replace("_", "")) == 0)) { // Get the value from the form element string value = HttpContext.Current.Request.Form[thisKey].Trim(); if (value.Length > 0) { // There is a value, so ensure metadata does exist if (vraInfo == null) { vraInfo = new VRACore_Info(); Bib.Add_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY, vraInfo); } // Add the value vraInfo.Add_Technique(value); } } }
/// <summary> Map one or more data elements from the original METS-based object to the /// BriefItem object </summary> /// <param name="Original"> Original METS-based object </param> /// <param name="New"> New object to populate some data from the original </param> /// <returns> TRUE if successful, FALSE if an exception is encountered </returns> public bool MapToBriefItem(SobekCM_Item Original, BriefItemInfo New) { // Try to get the VRA Core metadata VRACore_Info vraInfo = Original.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; // Add the learning object metadata if it exists if ((vraInfo != null) && (vraInfo.hasData)) { // Collect the state/edition information if (vraInfo.State_Edition_Count > 0) { New.Add_Description("State / Edition", vraInfo.State_Editions); } // Collect and display all the material information if (vraInfo.Material_Count > 0) { foreach (VRACore_Materials_Info materials in vraInfo.Materials) { New.Add_Description("Materials", materials.Materials); } } // Collect and display all the measurements information if (vraInfo.Measurement_Count > 0) { foreach (VRACore_Measurement_Info measurement in vraInfo.Measurements) { New.Add_Description("Measurements", measurement.Measurements); } } // Display all cultural context information if (vraInfo.Cultural_Context_Count > 0) { New.Add_Description("Cultural Context", vraInfo.Cultural_Contexts); } // Display all style/period information if (vraInfo.Style_Period_Count > 0) { New.Add_Description("Style/Period", vraInfo.Style_Periods); } // Display all technique information if (vraInfo.Technique_Count > 0) { New.Add_Description("Technique", vraInfo.Techniques); } // Add the inscriptions if (vraInfo.Inscription_Count > 0) { New.Add_Description("Inscription", vraInfo.Inscriptions); } } return(true); }
/// <summary> Saves the data stored in this instance of the /// element to the provided bibliographic object </summary> /// <param name="Bib"> Object to populate this element from </param> public override void Populate_From_Bib(SobekCM_Item Bib) { VRACore_Info vraInfo = Bib.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; if ((vraInfo != null) && (base.index < vraInfo.Style_Period_Count)) { base.thisBox.Text = vraInfo.Style_Periods[base.index]; } }
/// <summary> Prepares the bib object for the save, by clearing the /// existing data in this element's related field. </summary> /// <param name="Bib"> Existing Bib object </param> public override void Prepare_For_Save(SobekCM_Item Bib) { VRACore_Info vraInfo = Bib.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; if (vraInfo != null) { vraInfo.Clear_Style_Periods(); } }
/// <summary> Flag indicates if this active reader/writer needs to append schema reference information /// to the METS XML header by analyzing the contents of the digital resource item </summary> /// <param name="METS_Item"> Package with all the metadata to save</param> /// <returns> TRUE if the schema should be attached, otherwise fALSE </returns> public bool Schema_Reference_Required_Package(SobekCM_Item METS_Item) { VRACore_Info vraInfo = METS_Item.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; if (vraInfo == null) { return(false); } return(vraInfo.hasData); }
/// <summary> Flag indicates if this active reader/writer will write a dmdSec </summary> /// <param name="METS_Item"> Package with all the metadata to save</param> /// <returns> TRUE if the package has data to be written, otherwise fALSE </returns> public bool Include_dmdSec(SobekCM_Item METS_Item, Dictionary <string, object> Options) { // Ensure this metadata module extension exists and has data VRACore_Info vraInfo = METS_Item.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; if ((vraInfo == null) || (!vraInfo.hasData)) { return(false); } return(true); }
/// <summary> Saves the data stored in this instance of the /// element to the provided bibliographic object </summary> /// <param name="Bib"> Object to populate this element from </param> public override void Populate_From_Bib(SobekCM_Item Bib) { VRACore_Info vraInfo = Bib.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; if ((vraInfo != null) && (base.index < vraInfo.Material_Count)) { base.thisKeywordBox.Text = vraInfo.Materials[base.index].Materials; base.thisSchemeBox.Text = vraInfo.Materials[base.index].Type; } else { base.thisSchemeBox.Text = "medium"; } }
/// <summary> Saves the data stored in this instance of the /// element to the provided bibliographic object </summary> /// <param name="Bib"> Object into which to save this element's data </param> public override void Save_To_Bib(SobekCM_Item Bib) { if (thisBox.Text.Trim().Length > 0) { VRACore_Info vraInfo = Bib.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; if (vraInfo == null) { vraInfo = new VRACore_Info(); Bib.Add_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY, vraInfo); } vraInfo.Add_Style_Period(thisBox.Text.Trim()); } }
/// <summary> Saves the data rendered by this element to the provided bibliographic object during postback </summary> /// <param name="Bib"> Object into which to save the user's data, entered into the html rendered by this element </param> public override void Save_To_Bib(SobekCM_Item Bib) { // Try to get any existing VRAcore metadata module VRACore_Info vraInfo = Bib.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; Dictionary <string, string> terms = new Dictionary <string, string>(); Dictionary <string, string> schemes = new Dictionary <string, string>(); string[] getKeys = HttpContext.Current.Request.Form.AllKeys; foreach (string thisKey in getKeys) { if (thisKey.IndexOf(html_element_name.Replace("_", "") + "_first") == 0) { string term = HttpContext.Current.Request.Form[thisKey]; string index = thisKey.Replace(html_element_name.Replace("_", "") + "_first", ""); terms[index] = term; } if (thisKey.IndexOf(html_element_name.Replace("_", "") + "_second") == 0) { string scheme = HttpContext.Current.Request.Form[thisKey]; string index = thisKey.Replace(html_element_name.Replace("_", "") + "_second", ""); schemes[index] = scheme; } } // Were values found? if (terms.Count > 0) { // There is a value, so ensure VRAcore metadata does exist if (vraInfo == null) { vraInfo = new VRACore_Info(); Bib.Add_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY, vraInfo); } // Add each value foreach (string index in terms.Keys) { if (!String.IsNullOrEmpty(terms[index])) { vraInfo.Add_Material(terms[index], schemes.ContainsKey(index) ? schemes[index] : String.Empty); } } } }
/// <summary> Saves the data stored in this instance of the /// element to the provided bibliographic object </summary> /// <param name="Bib"> Object into which to save this element's data </param> public override void Save_To_Bib(SobekCM_Item Bib) { if (base.thisKeywordBox.Text.Trim().Length > 0) { VRACore_Info vraInfo = Bib.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; if (vraInfo == null) { vraInfo = new VRACore_Info(); Bib.Add_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY, vraInfo); } if (base.thisSchemeBox.Text.Trim().Length > 0) { vraInfo.Add_Material(base.thisKeywordBox.Text.Trim(), base.thisSchemeBox.Text.ToLower()); } else { vraInfo.Add_Material(base.thisKeywordBox.Text.Trim(), "medium"); } } }
/// <summary> Adds a bit of data to a bibliographic package using the mapping </summary> /// <param name="Package">Bibliographic package to receive the data</param> /// <param name="Data">Text of the data</param> /// <param name="Field">Mapped field</param> /// <returns> TRUE if the field was mapped, FALSE if there was data and no mapping was found </returns> public bool Add_Data(SobekCM_Item Package, string Data, string Field) { // If no field listed, just skip (but not a mapping error, so return TRUE) if (String.IsNullOrEmpty(Field)) { return(true); } // If no data listed, just skip (but not a mapping error, so return TRUE) if (String.IsNullOrWhiteSpace(Data)) { return(true); } // Trim the data Data = Data.Trim(); // Normalize the field name string correctName = Field.ToLower().Replace("(s)", "").Replace("#", "").Replace(" ", "").Replace(".", "").Replace(":", "").Replace("\\", "").Replace("/", "").Replace(")", "").Replace("(", "").Trim(); // Everything depends on the field which is mapped switch (correctName) { case "acknowledgements": case "acknowledgments": Package.Bib_Info.Add_Note(Data, Note_Type_Enum.CreationCredits, "Acknowledgments"); return(true); case "bulletincommitteemembers": Package.Bib_Info.Add_Named_Entity(Data, "Bulletin Committee Member").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "collectionlocation": Package.Bib_Info.Add_Note(Data, Note_Type_Enum.AdditionalPhysicalForm, "Collection Location"); return(true); case "columnist": Package.Bib_Info.Add_Named_Entity(Data, "Columnist").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "contents": Package.Bib_Info.Get_TableOfContents("Contents").Add(Data); return(true); case "contributinginstitution": Package.Bib_Info.Add_Named_Entity(Data, "Contributing Institution").Name_Type = Name_Info_Type_Enum.Corporate; return(true); case "contributor": Package.Bib_Info.Add_Named_Entity(Data, "Contributing Institution").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "coverstories": Package.Bib_Info.Get_TableOfContents("Cover Stories").Add(Data); return(true); case "coverstoriescontents": Package.Bib_Info.Get_TableOfContents("Cover Stories / Contents").Add(Data); return(true); case "covertitle": Package.Bib_Info.Get_TableOfContents("Contents").Add(Data); return(true); case "creator": Package.Bib_Info.Add_Named_Entity(Data, "Creator").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "creator,performer": Package.Bib_Info.Add_Named_Entity(Data, "Creator / Performer").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "date": Package.Bib_Info.Origin_Info.Date_Created = Data; return(true); case "dateoriginal": Package.Bib_Info.Origin_Info.Date_Created = Data; return(true); case "description": Package.Bib_Info.Add_Abstract(new Abstract_Info { Abstract_Text = Data, Type = "Summary", Display_Label = "Description" }); return(true); case "designer": Package.Bib_Info.Add_Named_Entity(Data, "Designer").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "digitalid": Package.Bib_Info.Add_Identifier(Data, "Digital Id"); return(true); case "digitizationspecifications": Package.Bib_Info.Add_Note(Data, Note_Type_Enum.Ownership, "Digitization Specifications"); return(true); case "editing": case "editor": Package.Bib_Info.Add_Named_Entity(Data, "Editor").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "editorwriter": Package.Bib_Info.Add_Named_Entity(Data, "Editor / Writer").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "emcee": Package.Bib_Info.Add_Named_Entity(Data, "Emcee").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "features": Package.Bib_Info.Get_TableOfContents("Features").Add(Data); return(true); case "filesizeandduration": // Get the duration from the parantheses int fsd_start = Data.IndexOf("("); int fsd_end = Data.IndexOf(")"); if ((fsd_start > 0) && (fsd_end > fsd_start)) { string duration_string = Data.Substring(fsd_start + 1, fsd_end - fsd_start - 1); if ((duration_string.IndexOf("second", StringComparison.OrdinalIgnoreCase) > 0) || (duration_string.IndexOf("minute", StringComparison.OrdinalIgnoreCase) > 0)) { Package.Bib_Info.Original_Description.Extent = duration_string; } } return(true); case "founder": Package.Bib_Info.Add_Named_Entity(Data, "Founder").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "frontpageheadlines": Package.Bib_Info.Get_TableOfContents("Front Page Headlines").Add(Data); return(true); case "generalsubjects": split_add_subjects(Package, Data); return(true); case "genre": Package.Bib_Info.Add_Genre(Data); return(true); case "geographiccoverage": Package.Bib_Info.Add_Spatial_Subject(Data); return(true); case "historicalnarrative": Package.Bib_Info.Add_Named_Entity(Data, "Historical Narrative").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "identifiedindividuals": Subject_Info_Name nameSubj = Package.Bib_Info.Add_Name_Subject(); nameSubj.Full_Name = Data; nameSubj.Name_Type = Name_Info_Type_Enum.Personal; nameSubj.Description = "Identified Individuals"; return(true); case "image-specificsubjects": split_add_subjects(Package, Data); return(true); case "internalnote": Package.Bib_Info.Add_Note(Data, Note_Type_Enum.InternalComments, "Acknowledgments"); return(true); case "interviewdate": Package.Bib_Info.Origin_Info.Add_Date_Other(Data, "Interview Date"); return(true); case "interviewlocation": Package.Bib_Info.Origin_Info.Add_Place(Data); return(true); case "interviewee": Package.Bib_Info.Add_Named_Entity(Data, "Interviewee").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "interviewer": Package.Bib_Info.Add_Named_Entity(Data, "Interviewer").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "issue": case "issuenumber": // If there is already an enumberation (1), use (2) if (!String.IsNullOrWhiteSpace(Package.Bib_Info.Series_Part_Info.Enum1)) { int issue_number = -1; if (Int32.TryParse(Data, out issue_number)) { Package.Bib_Info.Series_Part_Info.Enum1 = "Issue " + Data; Package.Bib_Info.Series_Part_Info.Enum1_Index = issue_number; } else { Package.Bib_Info.Series_Part_Info.Enum1 = Data + " Issue"; } } else { int issue_number = -1; if (Int32.TryParse(Data, out issue_number)) { Package.Bib_Info.Series_Part_Info.Enum2 = "Issue " + Data; Package.Bib_Info.Series_Part_Info.Enum2_Index = issue_number; } else { Package.Bib_Info.Series_Part_Info.Enum2 = Data + " Issue"; } } return(true); case "issue-specificsubjects": split_add_subjects(Package, Data); return(true); case "item-specificsubjects": split_add_subjects(Package, Data); return(true); case "language": Package.Bib_Info.Add_Language(Data); return(true); case "layout": Package.Bib_Info.Add_Named_Entity(Data, "Layout").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "location": Package.Bib_Info.Origin_Info.Add_Place(Data); return(true); case "locationdepicted": Package.Bib_Info.Add_Spatial_Subject(Data); return(true); case "monthseason": Package.Bib_Info.Series_Part_Info.Month = Data; return(true); case "monthscovered": Package.Bib_Info.Series_Part_Info.Month = Data; return(true); case "namesorganizations": Package.Bib_Info.Add_Name_Subject().Full_Name = Data; return(true); case "originaldate": Package.Bib_Info.Origin_Info.Date_Issued = Data; return(true); case "originalitemid": Package.Bib_Info.Add_Identifier(Data, "Original ItemID"); return(true); case "originalmedium": VRACore_Info vraCoreInfo2 = Package.Get_Metadata_Module("VRACore") as VRACore_Info; if (vraCoreInfo2 == null) { vraCoreInfo2 = new VRACore_Info(); Package.Add_Metadata_Module("VRACore", vraCoreInfo2); } vraCoreInfo2.Add_Material(Data, "medium"); return(true); case "originalpublisher": Package.Bib_Info.Add_Publisher(Data); return(true); case "photographer": Package.Bib_Info.Add_Named_Entity(Data, "Photographer").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "photographs": Package.Bib_Info.Add_Named_Entity(Data, "Photograph Studio").Name_Type = Name_Info_Type_Enum.Corporate; return(true); case "physicalcollection": Package.Bib_Info.Location.Holding_Name = Data; return(true); case "presentedatboardmeeting": Package.Bib_Info.Origin_Info.Add_Date_Other(Data, "Presented at board meeting"); return(true); case "presenter": Package.Bib_Info.Add_Named_Entity(Data, "Presenter").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "president": Package.Bib_Info.Add_Named_Entity(Data, "President").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "projectcoordinator": Package.Bib_Info.Add_Named_Entity(Data, "Project Coordinator").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "projectcreator": Package.Bib_Info.Add_Named_Entity(Data, "Project Creator").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "publicationdate": Package.Bib_Info.Origin_Info.Date_Issued = Data; return(true); case "publisher": Package.Bib_Info.Add_Publisher(Data); return(true); case "relatedbminewsletter": Related_Item_Info relatedNewsletter = new Related_Item_Info(); relatedNewsletter.Main_Title.Title = Data; relatedNewsletter.Relationship = Related_Item_Type_Enum.UNKNOWN; relatedNewsletter.Add_Note("Related BMI Newsletter"); Package.Bib_Info.Add_Related_Item(relatedNewsletter); return(true); case "relatedbmiphoto": Related_Item_Info relatedPhoto = new Related_Item_Info(); relatedPhoto.Main_Title.Title = Data; relatedPhoto.Relationship = Related_Item_Type_Enum.UNKNOWN; relatedPhoto.Add_Note("Related BMI Photograph"); Package.Bib_Info.Add_Related_Item(relatedPhoto); return(true); case "resourcetype": Package.Bib_Info.Type.Add_Uncontrolled_Type(Data); return(true); case "rightsinformation": Package.Bib_Info.Access_Condition.Text = Data; return(true); case "scrapbook-specificsubjects": split_add_subjects(Package, Data); return(true); case "seasonmonth": Package.Bib_Info.Series_Part_Info.Month = Data; return(true); case "subjects": split_add_subjects(Package, Data); return(true); case "timeperiodcovered": // Was this either a number, or a range? int dash_count = 0; bool isNumbers = true; string dns = Data.Replace(" ", ""); foreach (char thisChar in dns) { if ((!Char.IsNumber(thisChar)) && (thisChar != '-')) { isNumbers = false; break; } if (thisChar == '-') { dash_count++; } } // Just add as is, if not number or range if ((!isNumbers) || (dash_count > 1)) { Package.Bib_Info.Add_Temporal_Subject(-1, -1, Data); } else { int start_year = -1; int end_year = -1; // Was it a range? if (dash_count == 1) { string[] splitter = dns.Split("-".ToCharArray()); if (splitter.Length == 2) { if ((Int32.TryParse(splitter[0], out start_year)) && (Int32.TryParse(splitter[1], out end_year))) { Package.Bib_Info.Add_Temporal_Subject(start_year, end_year, Data); } else { Package.Bib_Info.Add_Temporal_Subject(-1, -1, Data); } } } else { if (Int32.TryParse(Data, out start_year)) { Package.Bib_Info.Add_Temporal_Subject(start_year, -1, Data); } else { Package.Bib_Info.Add_Temporal_Subject(-1, -1, Data); } } } return(true); case "title": Package.Bib_Info.Main_Title.Title = Data; return(true); case "topics": split_add_subjects(Package, Data); return(true); case "transcriptionprovidedby": Package.Bib_Info.Add_Note(Data, Note_Type_Enum.CreationCredits, "Transcription Provided By"); return(true); case "videofilesizeandduration": // Get the duration from the parantheses int vfsd_start = Data.IndexOf("("); int vfsd_end = Data.IndexOf(")"); if ((vfsd_start > 0) && (vfsd_end > vfsd_start)) { string duration_string = Data.Substring(vfsd_start + 1, vfsd_end - vfsd_start - 1); Package.Bib_Info.Original_Description.Extent = duration_string; } return(true); case "videographer": Package.Bib_Info.Add_Named_Entity(Data, "Videographer").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "volume": // If there is already an enumberation (1), move it to (2) if (!String.IsNullOrWhiteSpace(Package.Bib_Info.Series_Part_Info.Enum1)) { Package.Bib_Info.Series_Part_Info.Enum2 = Package.Bib_Info.Series_Part_Info.Enum1; Package.Bib_Info.Series_Part_Info.Enum2_Index = Package.Bib_Info.Series_Part_Info.Enum1_Index; } // Now, add the volume int volume_number = -1; if (Int32.TryParse(Data, out volume_number)) { Package.Bib_Info.Series_Part_Info.Enum1 = "Volume " + Data; Package.Bib_Info.Series_Part_Info.Enum1_Index = volume_number; } else { Package.Bib_Info.Series_Part_Info.Enum1 = Data + " Volume"; Package.Bib_Info.Series_Part_Info.Enum1_Index = -1; } return(true); case "wars": if (Data.IndexOf("World War") >= 0) { Package.Bib_Info.Add_Temporal_Subject(1939, 1945, "World War"); } else if (Data.IndexOf("Vietnam") >= 0) { Package.Bib_Info.Add_Temporal_Subject(1961, 1975, "Vietnam War"); } else if (Data.IndexOf("Korean") >= 0) { Package.Bib_Info.Add_Temporal_Subject(1950, 1953, "Korean War"); } return(true); case "writer": Package.Bib_Info.Add_Named_Entity(Data, "Writer").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "writerscontributors": Package.Bib_Info.Add_Named_Entity(Data, "Writer / Contributor").Name_Type = Name_Info_Type_Enum.Personal; return(true); case "year": Package.Bib_Info.Series_Part_Info.Year = Data; return(true); default: // No mapping exists and this is a non-known no-mapping return(false); } }
/// <summary> Writes the dmdSec for the entire package to the text writer </summary> /// <param name="Output_Stream">Stream to which the formatted text is written </param> /// <param name="METS_Item">Package with all the metadata to save</param> /// <param name="Options"> Dictionary of any options which this METS section writer may utilize</param> /// <returns>TRUE if successful, otherwise FALSE </returns> public bool Write_dmdSec(TextWriter Output_Stream, SobekCM_Item METS_Item, Dictionary <string, object> Options) { // Ensure this metadata module extension exists and has data VRACore_Info vraInfo = METS_Item.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; if ((vraInfo == null) || (!vraInfo.hasData)) { return(false); } Output_Stream.WriteLine("<vra:vra>"); if (vraInfo.Cultural_Context_Count > 0) { foreach (string thisValue in vraInfo.Cultural_Contexts) { Output_Stream.WriteLine("<vra:culturalContext>" + base.Convert_String_To_XML_Safe(thisValue) + "</vra:culturalContext>"); } } if (vraInfo.Inscription_Count > 0) { foreach (string thisValue in vraInfo.Inscriptions) { Output_Stream.WriteLine("<vra:inscription>" + base.Convert_String_To_XML_Safe(thisValue) + "</vra:inscription>"); } } if (vraInfo.Material_Count > 0) { foreach (VRACore_Materials_Info thisValue in vraInfo.Materials) { if (thisValue.Type.Length > 0) { Output_Stream.WriteLine("<vra:material type=\"" + base.Convert_String_To_XML_Safe(thisValue.Type) + "\">" + base.Convert_String_To_XML_Safe(thisValue.Materials) + "</vra:material>"); } else { Output_Stream.WriteLine("<vra:material>" + base.Convert_String_To_XML_Safe(thisValue.Materials) + "</vra:material>"); } } } if (vraInfo.Measurement_Count > 0) { foreach (VRACore_Measurement_Info thisValue in vraInfo.Measurements) { if (thisValue.Units.Length > 0) { Output_Stream.WriteLine("<vra:measurements unit=\"" + base.Convert_String_To_XML_Safe(thisValue.Units) + "\">" + base.Convert_String_To_XML_Safe(thisValue.Measurements) + "</vra:measurements>"); } else { Output_Stream.WriteLine("<vra:measurements>" + base.Convert_String_To_XML_Safe(thisValue.Measurements) + "</vra:measurements>"); } } } if (vraInfo.State_Edition_Count > 0) { foreach (string thisValue in vraInfo.State_Editions) { Output_Stream.WriteLine("<vra:stateEdition>" + base.Convert_String_To_XML_Safe(thisValue) + "</vra:stateEdition>"); } } if (vraInfo.Style_Period_Count > 0) { foreach (string thisValue in vraInfo.Style_Periods) { Output_Stream.WriteLine("<vra:stylePeriod>" + base.Convert_String_To_XML_Safe(thisValue) + "</vra:stylePeriod>"); } } if (vraInfo.Technique_Count > 0) { foreach (string thisValue in vraInfo.Techniques) { Output_Stream.WriteLine("<vra:technique>" + base.Convert_String_To_XML_Safe(thisValue) + "</vra:technique>"); } } Output_Stream.WriteLine("</vra:vra>"); return(true); }
/// <summary> </summary> /// <param name="thisElement"></param> /// <param name="Bib"></param> /// <returns></returns> private int Get_Bib_Element_Count(abstract_Element thisElement, SobekCM_Item Bib) { switch (thisElement.Type) { case Element_Type.Abstract: return(Bib.Bib_Info.Abstracts_Count); case Element_Type.Affiliation: return(Bib.Bib_Info.Affiliations_Count); case Element_Type.Aggregations: return(Bib.Behaviors.Aggregation_Count > 0 ? 1 : 0); case Element_Type.Attribution: return(Bib.Bib_Info.Notes.Count(thisNote => thisNote.Note_Type == Note_Type_Enum.funding)); case Element_Type.BibID: return(1); case Element_Type.Classification: return(Bib.Bib_Info.Classifications_Count); case Element_Type.Contributor: int contributor_count = 0; if ((Bib.Bib_Info.Main_Entity_Name.hasData) && (Bib.Bib_Info.Main_Entity_Name.Roles.Count > 0) && ((Bib.Bib_Info.Main_Entity_Name.Roles[0].Role.ToUpper() == "CONTRIBUTOR") || (Bib.Bib_Info.Main_Entity_Name.Roles[0].Role.ToUpper() == "CTB"))) { contributor_count++; } contributor_count += Bib.Bib_Info.Names.Count(thisName => (thisName.Roles.Count > 0) && ((thisName.Roles[0].Role.ToUpper() == "CONTRIBUTOR") || (thisName.Roles[0].Role.ToUpper() == "CTB"))); return(contributor_count); case Element_Type.Coordinates: GeoSpatial_Information geoInfo = Bib.Get_Metadata_Module(GlobalVar.GEOSPATIAL_METADATA_MODULE_KEY) as GeoSpatial_Information; if (geoInfo == null) { return(0); } return((geoInfo.Point_Count > 0) || (geoInfo.Polygon_Count > 0) ? 1 : 0); case Element_Type.Creator: if ((thisElement.Display_SubType != "simple") || (((Creator_Simple_Element)thisElement).Contributor_Exists == false)) { return(Bib.Bib_Info.Main_Entity_Name.hasData ? Bib.Bib_Info.Names.Count + 1 : Bib.Bib_Info.Names.Count); } int non_contributor_count = 0; if ((Bib.Bib_Info.Main_Entity_Name.hasData) && ((Bib.Bib_Info.Main_Entity_Name.Roles.Count == 0) || ((Bib.Bib_Info.Main_Entity_Name.Roles[0].Role.ToUpper() != "CONTRIBUTOR") && (Bib.Bib_Info.Main_Entity_Name.Roles[0].Role.ToUpper() != "CTB")))) { non_contributor_count++; } non_contributor_count += Bib.Bib_Info.Names.Count(thisName => (thisName.Roles.Count == 0) || ((thisName.Roles[0].Role.ToUpper() != "CONTRIBUTOR") && (thisName.Roles[0].Role.ToUpper() != "CTB"))); return(non_contributor_count); case Element_Type.CreatorNotes: return(Bib.METS_Header.Creator_Individual_Notes_Count > 0 ? 1 : 0); case Element_Type.Date: return(Bib.Bib_Info.Origin_Info.Date_Issued.Length == 0 ? 0 : 1); case Element_Type.DateCopyrighted: return(Bib.Bib_Info.Origin_Info.Date_Copyrighted.Length > 0 ? 1 : 0); case Element_Type.DescriptionStandard: return(Bib.Bib_Info.Record.Description_Standard.Length > 0 ? 1 : 0); case Element_Type.Donor: return(Bib.Bib_Info.Donor.Full_Name.Length > 0 ? 1 : 0); case Element_Type.Edition: return(Bib.Bib_Info.Origin_Info.Edition.Length > 0 ? 1 : 0); case Element_Type.EncodingLevel: return(Bib.Bib_Info.EncodingLevel.Length > 0 ? 1 : 0); case Element_Type.EAD: return((Bib.Bib_Info.Location.EAD_URL.Length > 0) || (Bib.Bib_Info.Location.EAD_Name.Length > 0) ? 1 : 0); case Element_Type.Error: return(0); case Element_Type.ETD_CommitteeChair: Thesis_Dissertation_Info thesisInfo = Bib.Get_Metadata_Module(GlobalVar.THESIS_METADATA_MODULE_KEY) as Thesis_Dissertation_Info; return((thesisInfo != null) && (thesisInfo.Committee_Chair.Length > 0) ? 1 : 0); case Element_Type.ETD_CommitteeCoChair: Thesis_Dissertation_Info thesisInfo2 = Bib.Get_Metadata_Module(GlobalVar.THESIS_METADATA_MODULE_KEY) as Thesis_Dissertation_Info; return((thesisInfo2 != null) && (thesisInfo2.Committee_Co_Chair.Length > 0) ? 1 : 0); case Element_Type.ETD_CommitteeMember: Thesis_Dissertation_Info thesisInfo3 = Bib.Get_Metadata_Module(GlobalVar.THESIS_METADATA_MODULE_KEY) as Thesis_Dissertation_Info; return((thesisInfo3 != null) ? thesisInfo3.Committee_Members_Count : 0); case Element_Type.ETD_Degree: Thesis_Dissertation_Info thesisInfo4 = Bib.Get_Metadata_Module(GlobalVar.THESIS_METADATA_MODULE_KEY) as Thesis_Dissertation_Info; return((thesisInfo4 != null) && (thesisInfo4.Degree.Length > 0) ? 1 : 0); case Element_Type.ETD_DegreeDiscipline: Thesis_Dissertation_Info thesisInfo5 = Bib.Get_Metadata_Module(GlobalVar.THESIS_METADATA_MODULE_KEY) as Thesis_Dissertation_Info; return((thesisInfo5 != null) && (thesisInfo5.Degree_Discipline.Length > 0) ? 1 : 0); case Element_Type.ETD_DegreeGrantor: Thesis_Dissertation_Info thesisInfo6 = Bib.Get_Metadata_Module(GlobalVar.THESIS_METADATA_MODULE_KEY) as Thesis_Dissertation_Info; return((thesisInfo6 != null) && (thesisInfo6.Degree_Grantor.Length > 0) ? 1 : 0); case Element_Type.ETD_DegreeLevel: Thesis_Dissertation_Info thesisInfo7 = Bib.Get_Metadata_Module(GlobalVar.THESIS_METADATA_MODULE_KEY) as Thesis_Dissertation_Info; return((thesisInfo7 != null) && (thesisInfo7.Degree_Level != Thesis_Dissertation_Info.Thesis_Degree_Level_Enum.Unknown) ? 1 : 0); case Element_Type.ETD_GraduationDate: Thesis_Dissertation_Info thesisInfo8 = Bib.Get_Metadata_Module(GlobalVar.THESIS_METADATA_MODULE_KEY) as Thesis_Dissertation_Info; return((thesisInfo8 != null) && (thesisInfo8.Graduation_Date.HasValue) ? 1 : 0); case Element_Type.FCLA_Flags: return(1); case Element_Type.FDA_Account: DAITSS_Info daitssInfo = Bib.Get_Metadata_Module(GlobalVar.DAITSS_METADATA_MODULE_KEY) as DAITSS_Info; return(daitssInfo != null && daitssInfo.Account.Trim().Length > 0 ? 1 : 0); case Element_Type.FDA_SubAccount: DAITSS_Info daitssInfo2 = Bib.Get_Metadata_Module(GlobalVar.DAITSS_METADATA_MODULE_KEY) as DAITSS_Info; return(daitssInfo2 != null && daitssInfo2.SubAccount.Trim().Length > 0 ? 1 : 0); case Element_Type.FDA_Project: DAITSS_Info daitssInfo3 = Bib.Get_Metadata_Module(GlobalVar.DAITSS_METADATA_MODULE_KEY) as DAITSS_Info; return(daitssInfo3 != null && daitssInfo3.Project.Trim().Length > 0 ? 1 : 0); case Element_Type.Format: return(Bib.Bib_Info.Original_Description.Extent.Length > 0 ? 1 : 0); case Element_Type.Frequency: return(Bib.Bib_Info.Origin_Info.Frequencies_Count); case Element_Type.Genre: return(Bib.Bib_Info.Genres_Count); case Element_Type.Holding: return(1); case Element_Type.Wordmark: return(Bib.Behaviors.Wordmark_Count > 0 ? 1 : 0); case Element_Type.Identifier: return(Bib.Bib_Info.Identifiers_Count); case Element_Type.Language: return(Bib.Bib_Info.Languages.Count(thisLanguage => thisLanguage.Language_Text.Length > 0)); case Element_Type.MainThumbnail: return(Bib.Behaviors.Main_Thumbnail.Length > 0 ? 1 : 0); case Element_Type.Manufacturer: return(Bib.Bib_Info.Manufacturers_Count); case Element_Type.Note: return(Bib.Bib_Info.Notes.Count(thisNote => thisNote.Note_Type != Note_Type_Enum.statement_of_responsibility)); case Element_Type.OtherURL: return((Bib.Bib_Info.Location.Other_URL.Length > 0) || (Bib.Bib_Info.Location.Other_URL_Note.Length > 0) ? 1 : 0); case Element_Type.PALMM_Code: return(1); case Element_Type.Publisher: return(Bib.Bib_Info.Publishers_Count); case Element_Type.Publication_Place: if (Bib.Bib_Info.Publishers_Count > 0) { if (Bib.Bib_Info.Publishers.SelectMany(thisName => thisName.Places).Any(thisPlace => thisPlace.Place_Text.Length > 0)) { return(1); } } return(0); case Element_Type.RecordOrigin: return(Bib.Bib_Info.Record.Record_Origin.Length > 0 ? 1 : 0); case Element_Type.RecordStatus: return(1); case Element_Type.RelatedItem: return(Bib.Bib_Info.RelatedItems_Count); case Element_Type.Rights: return(Bib.Bib_Info.Access_Condition.Text.Length > 0 ? 1 : 0); case Element_Type.Scale: if (Bib.Bib_Info.Subjects.Where(thisSubject => thisSubject.Class_Type == Subject_Info_Type.Cartographics).Any(thisSubject => ((Subject_Info_Cartographics)thisSubject).Scale.Length > 0)) { return(1); } return(0); case Element_Type.SerialHierarchy: return(Bib.Behaviors.Serial_Info.Count > 0 ? 1 : 0); case Element_Type.Source_Institution: return(1); case Element_Type.Source_Note: return(Bib.Bib_Info.Notes.Count(thisNote => thisNote.Note_Type == Note_Type_Enum.source)); case Element_Type.Spatial: int hierSubjectCount = 0; if (thisElement.Display_SubType == "dublincore") { foreach (Subject_Info thisSubject in Bib.Bib_Info.Subjects) { if (thisSubject.Class_Type == Subject_Info_Type.Hierarchical_Spatial) { hierSubjectCount++; } else if (thisSubject.Class_Type == Subject_Info_Type.Standard) { Subject_Info_Standard standSubject = (Subject_Info_Standard)thisSubject; if ((standSubject.Genres_Count == 0) && (standSubject.Occupations_Count == 0) && (standSubject.Topics_Count == 0)) { hierSubjectCount++; } } } } else { hierSubjectCount += Bib.Bib_Info.Subjects.Count(thisSubject => thisSubject.Class_Type == Subject_Info_Type.Hierarchical_Spatial); } return(hierSubjectCount); case Element_Type.Structure_Map: return(1); case Element_Type.Subject: bool standard = true; if ((thisElement.Display_SubType == "simple") || (thisElement.Display_SubType == "dublincore")) { if (((Subject_Simple_Element)thisElement).Seperate_Dublin_Core_Spatial_Exists) { standard = false; } } int subjectCount = 0; if (standard) { subjectCount += Bib.Bib_Info.Subjects.Count(thisSubject => (thisSubject.Class_Type == Subject_Info_Type.Standard) || (thisSubject.Class_Type == Subject_Info_Type.TitleInfo) || (thisSubject.Class_Type == Subject_Info_Type.Name)); } else { foreach (Subject_Info thisSubject in Bib.Bib_Info.Subjects) { switch (thisSubject.Class_Type) { case Subject_Info_Type.TitleInfo: subjectCount++; break; case Subject_Info_Type.Name: subjectCount++; break; case Subject_Info_Type.Standard: Subject_Info_Standard standSubject = (Subject_Info_Standard)thisSubject; if ((standSubject.Topics_Count > 0) || (standSubject.Occupations_Count > 0) || (standSubject.Genres_Count > 0)) { subjectCount++; } break; } } } return(subjectCount); case Element_Type.TargetAudience: return(Bib.Bib_Info.Target_Audiences.Any(thisTarget => thisTarget.Authority != "marctarget") ? 1 : 0); case Element_Type.Temporal: return(Bib.Bib_Info.TemporalSubjects_Count); case Element_Type.Title: return(1); case Element_Type.Title_Other: int title_count = 0; if (Bib.Bib_Info.Main_Title.Subtitle.Length > 0) { title_count++; } if ((Bib.Bib_Info.hasSeriesTitle) && (Bib.Bib_Info.SeriesTitle.Title.Length > 0)) { title_count++; } if (Bib.Bib_Info.Other_Titles_Count > 0) { title_count += Bib.Bib_Info.Other_Titles.Count(thisTitle => thisTitle.Title.Length > 0); } return(title_count); case Element_Type.Type: return(1); case Element_Type.VID: return(1); case Element_Type.Viewer: return(Bib.Behaviors.Views_Count); case Element_Type.VRA_CulturalContext: VRACore_Info vraInfo = Bib.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; return(vraInfo != null ? vraInfo.Cultural_Context_Count : 0); case Element_Type.VRA_Inscription: VRACore_Info vraInfo2 = Bib.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; return(vraInfo2 != null ? vraInfo2.Inscription_Count : 0); case Element_Type.VRA_Material: VRACore_Info vraInfo3 = Bib.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; return(vraInfo3 != null ? vraInfo3.Material_Count : 0); case Element_Type.VRA_Measurement: VRACore_Info vraInfo4 = Bib.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; return(vraInfo4 != null ? vraInfo4.Measurement_Count : 0); case Element_Type.VRA_StateEdition: VRACore_Info vraInfo5 = Bib.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; return(vraInfo5 != null ? vraInfo5.State_Edition_Count : 0); case Element_Type.VRA_StylePeriod: VRACore_Info vraInfo6 = Bib.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; return(vraInfo6 != null ? vraInfo6.Style_Period_Count : 0); case Element_Type.VRA_Technique: VRACore_Info vraInfo7 = Bib.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; return(vraInfo7 != null ? vraInfo7.Technique_Count : 0); case Element_Type.Web_Skin: return(Bib.Behaviors.Web_Skin_Count > 0 ? 1 : 0); case Element_Type.ZT_Class: Zoological_Taxonomy_Info darwinCoreInfo = Bib.Get_Metadata_Module(GlobalVar.ZOOLOGICAL_TAXONOMY_METADATA_MODULE_KEY) as Zoological_Taxonomy_Info; return(darwinCoreInfo != null && darwinCoreInfo.Class.Length > 0 ? 1 : 0); case Element_Type.ZT_CommonName: Zoological_Taxonomy_Info darwinCoreInfo2 = Bib.Get_Metadata_Module(GlobalVar.ZOOLOGICAL_TAXONOMY_METADATA_MODULE_KEY) as Zoological_Taxonomy_Info; return(darwinCoreInfo2 != null && darwinCoreInfo2.Common_Name.Length > 0 ? 1 : 0); case Element_Type.ZT_Family: Zoological_Taxonomy_Info darwinCoreInfo3 = Bib.Get_Metadata_Module(GlobalVar.ZOOLOGICAL_TAXONOMY_METADATA_MODULE_KEY) as Zoological_Taxonomy_Info; return(darwinCoreInfo3 != null && darwinCoreInfo3.Family.Length > 0 ? 1 : 0); case Element_Type.ZT_Genus: Zoological_Taxonomy_Info darwinCoreInfo4 = Bib.Get_Metadata_Module(GlobalVar.ZOOLOGICAL_TAXONOMY_METADATA_MODULE_KEY) as Zoological_Taxonomy_Info; return(darwinCoreInfo4 != null && darwinCoreInfo4.Genus.Length > 0 ? 1 : 0); case Element_Type.ZT_HigherClassification: Zoological_Taxonomy_Info darwinCoreInfo5 = Bib.Get_Metadata_Module(GlobalVar.ZOOLOGICAL_TAXONOMY_METADATA_MODULE_KEY) as Zoological_Taxonomy_Info; return(darwinCoreInfo5 != null && darwinCoreInfo5.Higher_Classification.Length > 0 ? 1 : 0); case Element_Type.ZT_Kingdom: Zoological_Taxonomy_Info darwinCoreInfo6 = Bib.Get_Metadata_Module(GlobalVar.ZOOLOGICAL_TAXONOMY_METADATA_MODULE_KEY) as Zoological_Taxonomy_Info; return(darwinCoreInfo6 != null && darwinCoreInfo6.Kingdom.Length > 0 ? 1 : 0); case Element_Type.ZT_Order: Zoological_Taxonomy_Info darwinCoreInfo7 = Bib.Get_Metadata_Module(GlobalVar.ZOOLOGICAL_TAXONOMY_METADATA_MODULE_KEY) as Zoological_Taxonomy_Info; return(darwinCoreInfo7 != null && darwinCoreInfo7.Order.Length > 0 ? 1 : 0); case Element_Type.ZT_Phylum: Zoological_Taxonomy_Info darwinCoreInfo8 = Bib.Get_Metadata_Module(GlobalVar.ZOOLOGICAL_TAXONOMY_METADATA_MODULE_KEY) as Zoological_Taxonomy_Info; return(darwinCoreInfo8 != null && darwinCoreInfo8.Phylum.Length > 0 ? 1 : 0); case Element_Type.ZT_ScientificName: Zoological_Taxonomy_Info darwinCoreInfo9 = Bib.Get_Metadata_Module(GlobalVar.ZOOLOGICAL_TAXONOMY_METADATA_MODULE_KEY) as Zoological_Taxonomy_Info; return(darwinCoreInfo9 != null && darwinCoreInfo9.Scientific_Name.Length > 0 ? 1 : 0); case Element_Type.ZT_SpecificEpithet: Zoological_Taxonomy_Info darwinCoreInfo10 = Bib.Get_Metadata_Module(GlobalVar.ZOOLOGICAL_TAXONOMY_METADATA_MODULE_KEY) as Zoological_Taxonomy_Info; return(darwinCoreInfo10 != null && darwinCoreInfo10.Specific_Epithet.Length > 0 ? 1 : 0); case Element_Type.ZT_TaxonRank: Zoological_Taxonomy_Info darwinCoreInfo11 = Bib.Get_Metadata_Module(GlobalVar.ZOOLOGICAL_TAXONOMY_METADATA_MODULE_KEY) as Zoological_Taxonomy_Info; return(darwinCoreInfo11 != null && darwinCoreInfo11.Taxonomic_Rank.Length > 0 ? 1 : 0); default: return(0); } }
/// <summary> Reads the dmdSec at the current position in the XmlTextReader and associates it with the /// entire package </summary> /// <param name="Input_XmlReader"> Open XmlReader from which to read the metadata </param> /// <param name="Return_Package"> Package into which to read the metadata</param> /// <param name="Options"> Dictionary of any options which this METS section reader may utilize</param> /// <returns> TRUE if successful, otherwise FALSE</returns> public bool Read_dmdSec(XmlReader Input_XmlReader, SobekCM_Item Return_Package, Dictionary <string, object> Options) { // Ensure this metadata module extension exists VRACore_Info vraInfo = Return_Package.Get_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY) as VRACore_Info; if (vraInfo == null) { vraInfo = new VRACore_Info(); Return_Package.Add_Metadata_Module(GlobalVar.VRACORE_METADATA_MODULE_KEY, vraInfo); } // Loop through reading each XML node do { // If this is the end of this section, return if ((Input_XmlReader.NodeType == XmlNodeType.EndElement) && ((Input_XmlReader.Name == "METS:mdWrap") || (Input_XmlReader.Name == "mdWrap"))) { return(true); } // get the right division information based on node type if (Input_XmlReader.NodeType == XmlNodeType.Element) { string name = Input_XmlReader.Name.ToLower(); if (name.IndexOf("vra:") == 0) { name = name.Substring(4); } switch (name) { case "culturalcontext": Input_XmlReader.Read(); if (Input_XmlReader.NodeType == XmlNodeType.Text) { if (Input_XmlReader.Value.Length > 0) { vraInfo.Add_Cultural_Context(Input_XmlReader.Value); } } break; case "inscription": Input_XmlReader.Read(); if (Input_XmlReader.NodeType == XmlNodeType.Text) { if (Input_XmlReader.Value.Length > 0) { vraInfo.Add_Inscription(Input_XmlReader.Value); } } break; case "material": string type = String.Empty; if (Input_XmlReader.HasAttributes) { if (Input_XmlReader.MoveToAttribute("type")) { type = Input_XmlReader.Value; } } Input_XmlReader.Read(); if (Input_XmlReader.NodeType == XmlNodeType.Text) { if (Input_XmlReader.Value.Length > 0) { vraInfo.Add_Material(Input_XmlReader.Value, type); } } break; case "measurements": string units = String.Empty; if (Input_XmlReader.HasAttributes) { if (Input_XmlReader.MoveToAttribute("unit")) { units = Input_XmlReader.Value; } } Input_XmlReader.Read(); if (Input_XmlReader.NodeType == XmlNodeType.Text) { if (Input_XmlReader.Value.Length > 0) { vraInfo.Add_Measurement(Input_XmlReader.Value, units); } } break; case "stateedition": Input_XmlReader.Read(); if (Input_XmlReader.NodeType == XmlNodeType.Text) { if (Input_XmlReader.Value.Length > 0) { vraInfo.Add_State_Edition(Input_XmlReader.Value); } } break; case "styleperiod": Input_XmlReader.Read(); if (Input_XmlReader.NodeType == XmlNodeType.Text) { if (Input_XmlReader.Value.Length > 0) { vraInfo.Add_Style_Period(Input_XmlReader.Value); } } break; case "technique": Input_XmlReader.Read(); if (Input_XmlReader.NodeType == XmlNodeType.Text) { if (Input_XmlReader.Value.Length > 0) { vraInfo.Add_Technique(Input_XmlReader.Value); } } break; } } } while (Input_XmlReader.Read()); return(true); }
/// <summary> Adds a bit of data to a bibliographic package using the mapping </summary> /// <param name="Package">Bibliographic package to receive the data</param> /// <param name="Data">Text of the data</param> /// <param name="Field">Mapped field</param> /// <returns> TRUE if the field was mapped, FALSE if there was data and no mapping was found </returns> public bool Add_Data(SobekCM_Item Package, string Data, string Field) { // If no field listed, just skip (but not a mapping error, so return TRUE) if (String.IsNullOrEmpty(Field)) { return(true); } // If no data listed, just skip (but not a mapping error, so return TRUE) if (String.IsNullOrWhiteSpace(Data)) { return(true); } // Trim the data Data = Data.Trim(); // Normalize the field name string correctName = Field.ToUpper().Replace("#", "").Replace(" ", "").Replace(".", "").Replace(":", "").Replace("\\", "").Replace("/", "").Replace(")", "").Replace("(", "").Trim(); if (correctName.Length == 0) { correctName = "None"; } else { // Find the first number int charIndex = 0; while ((charIndex < correctName.Length) && (!Char.IsNumber(correctName[charIndex]))) { charIndex++; } // If the index stopped before the end (that is, it found a number), // trim the number of the column name if ((charIndex < correctName.Length) && (charIndex > 0)) { correctName = correctName.Substring(0, charIndex); } // If it was all numbers, just assign NONE if (charIndex == 0) { correctName = "None"; } } // Everything depends on the field which is mapped switch (correctName) { case "NONE": // Do nothing, since no mapping exists return(true); case "ABSTRACT": case "SUMMARY": Package.Bib_Info.Add_Abstract(Data, "en"); return(true); case "ACCESSION": case "ACCESSIONNUMBER": Package.Bib_Info.Add_Identifier(Data, "Accession Number"); return(true); case "ALTERNATETITLE": case "ALTTITLE": case "TITLEVARIANT": Package.Bib_Info.Add_Other_Title(Data, Title_Type_Enum.Alternative); return(true); case "ALTERNATETITLELANGUAGE": case "ALTTITLELANGUAGE": List <Title_Info> otherTitles = Package.Bib_Info.Other_Titles.Where(ThisTitle => ThisTitle.Title_Type == Title_Type_Enum.Alternative).ToList(); if (otherTitles.Count > 0) { otherTitles[otherTitles.Count - 1].Language = Data; } return(true); case "TITLETRANSLATION": case "TRANSLATEDTITLE": Package.Bib_Info.Add_Other_Title(Data, Title_Type_Enum.Translated); return(true); case "ATTRIBUTION": Package.Bib_Info.Add_Note(Data, Note_Type_Enum.Funding); return(true); case "COLLECTION": case "COLLECTIONCODE": case "AGGREGATION": case "AGGREGATIONCODE": case "SUBCOLLECTION": case "SUBCOLLECTIONS": Package.Behaviors.Add_Aggregation(Data.ToUpper()); return(true); case "CLASSIFICATION": Package.Bib_Info.Add_Classification(Data); return(true); case "CLASSIFICATIONTYPE": case "CLASSIFICATIONAUTHORITY": if (Package.Bib_Info.Classifications_Count > 0) { Package.Bib_Info.Classifications[Package.Bib_Info.Classifications_Count - 1].Authority = Data; } return(true); case "CONTRIBUTOR": case "CONTRIBUTORS": Package.Bib_Info.Add_Named_Entity(new Name_Info(Data, "contributor")); return(true); case "CREATOR": case "CREATORS": case "AUTHOR": // Ensure it doesn't already exist if (Package.Bib_Info.Names_Count > 0) { foreach (Name_Info thisName in Package.Bib_Info.Names) { if (String.Compare(thisName.Full_Name, Data, StringComparison.OrdinalIgnoreCase) == 0) { return(true); } } } Package.Bib_Info.Add_Named_Entity(new Name_Info(Data, "creator")); return(true); case "CREATORPERSONALNAME": // Ensure it doesn't already exist if (Package.Bib_Info.Names_Count > 0) { foreach (Name_Info thisName in Package.Bib_Info.Names) { if (String.Compare(thisName.Full_Name, Data, StringComparison.OrdinalIgnoreCase) == 0) { return(true); } } } Name_Info personalCreator = new Name_Info(Data, "creator"); personalCreator.Name_Type = Name_Info_Type_Enum.Personal; Package.Bib_Info.Add_Named_Entity(personalCreator); return(true); case "CREATORCORPORATENAME": Name_Info corporateCreator = new Name_Info(Data, "creator"); corporateCreator.Name_Type = Name_Info_Type_Enum.Corporate; Package.Bib_Info.Add_Named_Entity(corporateCreator); return(true); case "CREATORLANGUAGE": if (Package.Bib_Info.Names_Count > 0) { Package.Bib_Info.Names[Package.Bib_Info.Names_Count - 1].Description = Data; } return(true); case "CREATORAFFILIATION": case "AUTHORAFFILIATION": if (Package.Bib_Info.Names_Count > 0) { Package.Bib_Info.Names[Package.Bib_Info.Names_Count - 1].Affiliation = Data; } return(true); case "CREATORDATES": case "AUTHORDATES": if (Package.Bib_Info.Names_Count > 0) { Package.Bib_Info.Names[Package.Bib_Info.Names_Count - 1].Dates = Data; } return(true); case "CREATORFAMILYNAME": case "AUTHORFAMILYNAME": case "FAMILYNAME": if (Package.Bib_Info.Names_Count > 0) { Name_Info lastNamedEntity = Package.Bib_Info.Names[Package.Bib_Info.Names_Count - 1]; if (lastNamedEntity.Family_Name.Length == 0) { lastNamedEntity.Family_Name = Data; } else { Name_Info newNameEntity = new Name_Info { Family_Name = Data }; Package.Bib_Info.Add_Named_Entity(newNameEntity); } } else { Name_Info newNameEntity = new Name_Info { Family_Name = Data }; Package.Bib_Info.Add_Named_Entity(newNameEntity); } return(true); case "CREATORGIVENNAME": case "AUTHORGIVENNAME": case "GIVENNAME": if (Package.Bib_Info.Names_Count > 0) { Name_Info lastNamedEntity = Package.Bib_Info.Names[Package.Bib_Info.Names_Count - 1]; if (lastNamedEntity.Given_Name.Length == 0) { lastNamedEntity.Given_Name = Data; } else { Name_Info newNameEntity = new Name_Info { Given_Name = Data }; Package.Bib_Info.Add_Named_Entity(newNameEntity); } } else { Name_Info newNameEntity = new Name_Info { Given_Name = Data }; Package.Bib_Info.Add_Named_Entity(newNameEntity); } return(true); case "CREATORROLE": case "AUTHORROLE": case "CREATORROLES": case "AUTHORROLES": case "CREATORATTRIBUTION": if (Package.Bib_Info.Names_Count > 0) { Name_Info thisCreator = Package.Bib_Info.Names[Package.Bib_Info.Names_Count - 1]; if ((thisCreator.Roles.Count == 1) && ((thisCreator.Roles[0].Role == "creator") || (thisCreator.Roles[1].Role == "contributor"))) { thisCreator.Roles.Clear(); } Package.Bib_Info.Names[Package.Bib_Info.Names_Count - 1].Add_Role(Data); } return(true); case "CULTURALCONTEXT": case "CULTURE": VRACore_Info vraCoreInfo = Package.Get_Metadata_Module("VRACore") as VRACore_Info; if (vraCoreInfo == null) { vraCoreInfo = new VRACore_Info(); Package.Add_Metadata_Module("VRACore", vraCoreInfo); } vraCoreInfo.Add_Cultural_Context(Data); return(true); case "DONOR": Package.Bib_Info.Donor.Full_Name = Data; return(true); case "GENRE": Package.Bib_Info.Add_Genre(Data); return(true); case "GENREAUTHORITY": if (Package.Bib_Info.Genres_Count > 0) { Package.Bib_Info.Genres[Package.Bib_Info.Genres_Count - 1].Authority = Data; } return(true); case "HOLDINGLOCATIONCODE": case "HOLDINGCODE": Package.Bib_Info.Location.Holding_Code = Data; return(true); case "HOLDINGLOCATIONSTATEMENT": case "HOLDINGSTATEMENT": case "CONTRIBUTINGINSTITUTION": case "LOCATIONCURRENT": case "LOCATIONCURRENTSITE": case "LOCATIONCURRENTREPOSITORY": Package.Bib_Info.Location.Holding_Name = Data; return(true); case "LOCATIONFORMERSITE": Package.Bib_Info.Add_Note(Data, Note_Type_Enum.OriginalLocation); return(true); case "IDENTIFIER": case "IDNUMBERFORMERREPOSITORY": case "IDNUMBERCURRENTREPOSITORY": case "IDNUMBERCURRENTRESPOSITORY": Package.Bib_Info.Add_Identifier(Data); return(true); case "IDENTIFIERTYPE": if (Package.Bib_Info.Identifiers_Count > 0) { Package.Bib_Info.Identifiers[Package.Bib_Info.Identifiers_Count - 1].Type = Data; } return(true); case "INSCRIPTION": VRACore_Info vraCoreInfo8 = Package.Get_Metadata_Module("VRACore") as VRACore_Info; if (vraCoreInfo8 == null) { vraCoreInfo8 = new VRACore_Info(); Package.Add_Metadata_Module("VRACore", vraCoreInfo8); } vraCoreInfo8.Add_Inscription(Data); return(true); case "LANGUAGE": Package.Bib_Info.Add_Language(Data); return(true); case "PUBLISHER": case "PUBLISHERS": Package.Bib_Info.Add_Publisher(Data); return(true); case "PLACEOFPUBLICATION": case "PUBLICATIONPLACE": case "PUBPLACE": case "PUBLICATIONLOCATION": case "PLACE": Package.Bib_Info.Origin_Info.Add_Place(Data); return(true); case "RELATEDURLLABEL": Package.Bib_Info.Location.Other_URL_Display_Label = Data; return(true); case "RELATEDURL": case "RELATEDURLLINK": Package.Bib_Info.Location.Other_URL = Data; return(true); case "RELATEDURLNOTE": case "RELATEDURLNOTES": Package.Bib_Info.Location.Other_URL_Note = Data; return(true); case "SOURCEINSTITUTIONCODE": case "SOURCECODE": Package.Bib_Info.Source.Code = Data; return(true); case "SOURCEINSTITUTIONSTATEMENT": case "SOURCESTATEMENT": case "SOURCE": Package.Bib_Info.Source.Statement = Data; return(true); case "SUBJECTKEYWORD": case "SUBJECTKEYWORDS": case "SUBJECT": case "SUBJECTS": case "KEYWORDS": Package.Bib_Info.Add_Subject(Data, String.Empty); return(true); case "SUBJECTKEYWORDAUTHORITY": case "SUBJECTAUTHORITY": if (Package.Bib_Info.Subjects_Count > 0) { Package.Bib_Info.Subjects[Package.Bib_Info.Subjects_Count - 1].Authority = Data; } return(true); case "BIBID": case "BIB": case "BIBLIOGRAHPICID": case "BIBLIOGRAPHICIDENTIFIER": Package.Bib_Info.BibID = Data.ToUpper(); return(true); case "VID": Package.Bib_Info.VID = Data.PadLeft(5, '0'); return(true); case "DATE": case "DATECREATION": try { // first, try converting the string value to a date object Package.Bib_Info.Origin_Info.Date_Issued = Convert.ToDateTime(Data).ToShortDateString(); } catch { try { // second, try converting the string value to an integer Package.Bib_Info.Origin_Info.Date_Issued = Convert.ToInt32(Data).ToString(); } catch { Package.Bib_Info.Origin_Info.Date_Issued = Data; } } return(true); case "DATEBEGINNING": Package.Bib_Info.Origin_Info.MARC_DateIssued_Start = Data; return(true); case "DATECOMPLETION": Package.Bib_Info.Origin_Info.MARC_DateIssued_End = Data; return(true); case "EDITION": Package.Bib_Info.Origin_Info.Edition = Data; return(true); case "FORMAT": case "PHYSICALDESCRIPTION": case "EXTENT": Package.Bib_Info.Original_Description.Extent = Data; return(true); case "NOTE": case "NOTES": case "DESCRIPTION": Package.Bib_Info.Add_Note(Data); return(true); case "PROVENANCE": Package.Bib_Info.Add_Note(Data, Note_Type_Enum.Acquisition); return(true); case "USAGESTATEMENT": Package.Bib_Info.Add_Note(Data, Note_Type_Enum.CitationReference); return(true); case "CONTACT": case "CONTACTNOTES": case "CONTACTINFORMATION": Package.Bib_Info.Add_Note(Data, Note_Type_Enum.NONE, "Contact"); return(true); case "RIGHTS": Package.Bib_Info.Access_Condition.Text = Data; return(true); case "BIBSERIESTITLE": case "SERIESTITLE": case "TITLESERIES": Package.Bib_Info.SeriesTitle.Title = Data; Package.Behaviors.GroupTitle = Data; return(true); case "MATERIALTYPE": case "TYPE": case "RECORDTYPE": string upper_data = Data.ToUpper(); if (upper_data.IndexOf("NEWSPAPER", StringComparison.Ordinal) >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Newspaper; return(true); } if ((upper_data.IndexOf("MONOGRAPH", StringComparison.Ordinal) >= 0) || (upper_data.IndexOf("BOOK", StringComparison.Ordinal) >= 0)) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Book; return(true); } if (upper_data.IndexOf("SERIAL", StringComparison.Ordinal) >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Serial; return(true); } if (upper_data.IndexOf("AERIAL", StringComparison.Ordinal) >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Aerial; if (Package.Bib_Info.Original_Description.Extent.Length == 0) { Package.Bib_Info.Original_Description.Extent = "Aerial Photograph"; } return(true); } if (upper_data.IndexOf("PHOTO", StringComparison.Ordinal) >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Photograph; return(true); } if (upper_data.IndexOf("POSTCARD", StringComparison.Ordinal) >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Photograph; if (Package.Bib_Info.Original_Description.Extent.Length == 0) { Package.Bib_Info.Original_Description.Extent = "Postcard"; } return(true); } if (upper_data.IndexOf("MAP", StringComparison.Ordinal) >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Map; return(true); } if (upper_data.IndexOf("TEXT", StringComparison.Ordinal) >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Book; return(true); } if (upper_data.IndexOf("AUDIO", StringComparison.Ordinal) >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Audio; return(true); } if (upper_data.IndexOf("VIDEO", StringComparison.Ordinal) >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Video; return(true); } if ((upper_data.IndexOf("ARCHIVE", StringComparison.Ordinal) >= 0) || (upper_data.IndexOf("ARCHIVAL", StringComparison.Ordinal) >= 0)) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Archival; return(true); } if (upper_data.IndexOf("ARTIFACT", StringComparison.Ordinal) >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Artifact; return(true); } if (upper_data.IndexOf("IMAGE", StringComparison.Ordinal) >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Photograph; return(true); } // if there was no match, set type to "UNDETERMINED" Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.UNKNOWN; if (Package.Bib_Info.Original_Description.Extent.Length == 0) { Package.Bib_Info.Original_Description.Extent = "Undetermined"; } return(true); case "BIBUNIFORMTITLE": case "UNIFORMTITLE": Package.Bib_Info.Add_Other_Title(Data, Title_Type_Enum.Uniform); Package.Behaviors.GroupTitle = Data; return(true); case "VOLUMETITLE": case "TITLE": if (String.IsNullOrEmpty(Package.Bib_Info.Main_Title.Title)) { Package.Bib_Info.Main_Title.Title = Data; } else { Package.Bib_Info.Add_Other_Title(Data, Title_Type_Enum.Alternative); } return(true); case "TITLELANGUAGE": Package.Bib_Info.Main_Title.Language = Data; return(true); case "ALEPH": Package.Bib_Info.Add_Identifier(Data, "ALEPH"); return(true); case "OCLC": Package.Bib_Info.Add_Identifier(Data, "OCLC"); return(true); case "LCCN": Package.Bib_Info.Add_Identifier(Data, "LCCN"); return(true); case "ISBN": Package.Bib_Info.Add_Identifier(Data, "ISBN"); return(true); case "ISSN": Package.Bib_Info.Add_Identifier(Data, "ISSN"); return(true); case "SUBTITLE": Package.Bib_Info.Main_Title.Subtitle = Data; return(true); case "VOLUME": Package.Bib_Info.Series_Part_Info.Enum1 = Data; Package.Behaviors.Serial_Info.Add_Hierarchy(Package.Behaviors.Serial_Info.Count + 1, 1, Data); return(true); case "ISSUE": if (Package.Bib_Info.Series_Part_Info.Enum1.Length == 0) { Package.Bib_Info.Series_Part_Info.Enum1 = Data; } else { Package.Bib_Info.Series_Part_Info.Enum2 = Data; } Package.Behaviors.Serial_Info.Add_Hierarchy(Package.Behaviors.Serial_Info.Count + 1, 1, Data); return(true); case "SECTION": if (Package.Bib_Info.Series_Part_Info.Enum2.Length == 0) { if (Package.Bib_Info.Series_Part_Info.Enum1.Length == 0) { Package.Bib_Info.Series_Part_Info.Enum1 = Data; } else { Package.Bib_Info.Series_Part_Info.Enum2 = Data; } } else { Package.Bib_Info.Series_Part_Info.Enum3 = Data; } Package.Behaviors.Serial_Info.Add_Hierarchy(Package.Behaviors.Serial_Info.Count + 1, 1, Data); // Do nothing for now return(true); case "YEAR": Package.Bib_Info.Series_Part_Info.Year = Data; if (Data.Length == 1) { year = "0" + Data; } else { year = Data; } build_date_string(Package); return(true); case "MONTH": Package.Bib_Info.Series_Part_Info.Month = Data; month = Data; build_date_string(Package); return(true); case "DAY": Package.Bib_Info.Series_Part_Info.Day = Data; day = Data; build_date_string(Package); return(true); case "COORDINATES": GeoSpatial_Information geoInfo = Package.Get_Metadata_Module(GlobalVar.GEOSPATIAL_METADATA_MODULE_KEY) as GeoSpatial_Information; if (geoInfo == null) { geoInfo = new GeoSpatial_Information(); Package.Add_Metadata_Module(GlobalVar.GEOSPATIAL_METADATA_MODULE_KEY, geoInfo); } string[] coordinates = Data.Split(", ;".ToCharArray()); try { if (coordinates.Length == 2) { geoInfo.Add_Point(Convert.ToDouble(coordinates[0]), Convert.ToDouble(coordinates[1]), String.Empty); } else { coordinates = Data.Split(",;".ToCharArray()); if (coordinates.Length == 2) { geoInfo.Add_Point(Convert.ToDouble(coordinates[0]), Convert.ToDouble(coordinates[1]), String.Empty); } } } catch { } return(true); case "LATITUDE": case "COORDINATESLATITUDE": GeoSpatial_Information geoInfo2 = Package.Get_Metadata_Module(GlobalVar.GEOSPATIAL_METADATA_MODULE_KEY) as GeoSpatial_Information; if (geoInfo2 == null) { geoInfo2 = new GeoSpatial_Information(); Package.Add_Metadata_Module(GlobalVar.GEOSPATIAL_METADATA_MODULE_KEY, geoInfo2); } try { if (geoInfo2.Point_Count == 0) { geoInfo2.Add_Point(Convert.ToDouble(Data), 0, String.Empty); } else { geoInfo2.Points[0].Latitude = Convert.ToDouble(Data); } } catch { } return(true); case "LONGITUDE": case "COORDINATESLONGITUDE": GeoSpatial_Information geoInfo3 = Package.Get_Metadata_Module(GlobalVar.GEOSPATIAL_METADATA_MODULE_KEY) as GeoSpatial_Information; if (geoInfo3 == null) { geoInfo3 = new GeoSpatial_Information(); Package.Add_Metadata_Module(GlobalVar.GEOSPATIAL_METADATA_MODULE_KEY, geoInfo3); } try { if (geoInfo3.Point_Count == 0) { geoInfo3.Add_Point(0, Convert.ToDouble(Data.Replace("°", "")), String.Empty); } else { geoInfo3.Points[0].Longitude = Convert.ToDouble(Data.Replace("°", "")); } } catch { } return(true); case "PROJECTION": case "MAPPROJECTION": Guarantee_Cartographics(Package).Projection = Data; return(true); case "SCALE": case "MAPSCALE": Guarantee_Cartographics(Package).Scale = Data; return(true); //case Mapped_Fields.Spatial_Coverage: // Package.Bib_Info.Hierarchical_Spatials[0].Area = Data; // return true; case "ICON/WORDMARK": case "ICON/WORDMARKS": case "ICON": case "ICONS": case "WORDMARK": case "WORDMARKS": Package.Behaviors.Add_Wordmark(Data); return(true); case "WEBSKINS": case "WEBSKIN": case "SKINS": case "SKIN": Package.Behaviors.Add_Web_Skin(Data); return(true); case "TEMPORALCOVERAGE": case "TEMPORAL": case "TIMEPERIOD": Package.Bib_Info.Add_Temporal_Subject(-1, -1, Data); return(true); case "COVERAGE": // Was this a number.. likely, a year? int possible_year; if ((Data.Length >= 4) && (Int32.TryParse(Data.Substring(0, 4), out possible_year))) { Package.Bib_Info.Add_Temporal_Subject(-1, -1, Data); } else { Package.Bib_Info.Add_Spatial_Subject(Data); } return(true); case "AFFILIATIONUNIVERSITY": case "UNIVERSITY": Guarantee_Affiliation_Collection(Package); Package.Bib_Info.Affiliations[0].University = Data; return(true); case "AFFILIATIONCAMPUS": case "CAMPUS": Guarantee_Affiliation_Collection(Package); Package.Bib_Info.Affiliations[0].Campus = Data; return(true); case "AFFILIATIONCOLLEGE": case "COLLEGE": Guarantee_Affiliation_Collection(Package); Package.Bib_Info.Affiliations[0].College = Data; return(true); case "AFFILIATIONUNIT": case "UNIT": Guarantee_Affiliation_Collection(Package); Package.Bib_Info.Affiliations[0].Unit = Data; return(true); case "AFFILIATIONDEPARTMENT": case "DEPARTMENT": Guarantee_Affiliation_Collection(Package); Package.Bib_Info.Affiliations[0].Department = Data; return(true); case "AFFILIATIONINSTITUTE": case "INSTITUTE": Guarantee_Affiliation_Collection(Package); Package.Bib_Info.Affiliations[0].Institute = Data; return(true); case "AFFILIATIONCENTER": case "CENTER": Guarantee_Affiliation_Collection(Package); Package.Bib_Info.Affiliations[0].Center = Data; return(true); case "AFFILIATIONSECTION": Guarantee_Affiliation_Collection(Package); Package.Bib_Info.Affiliations[0].Section = Data; return(true); case "AFFILIATIONSUBSECTION": Guarantee_Affiliation_Collection(Package); Package.Bib_Info.Affiliations[0].SubSection = Data; return(true); case "GEOGRAPHYCONTINENT": case "CONTINENT": Guarantee_Hierarchical_Spatial(Package).Continent = Data; return(true); case "GEOGRAPHYCOUNTRY": case "COUNTRY": Guarantee_Hierarchical_Spatial(Package).Country = Data; return(true); case "GEOGRAPHYPROVINCE": case "PROVINCE": Guarantee_Hierarchical_Spatial(Package).Province = Data; return(true); case "GEOGRAPHYREGION": case "REGION": Guarantee_Hierarchical_Spatial(Package).Region = Data; return(true); case "GEOGRAPHYSTATE": case "STATE": Guarantee_Hierarchical_Spatial(Package).State = Data; return(true); case "GEOGRAPHYTERRITORY": case "TERRITORY": Guarantee_Hierarchical_Spatial(Package).Territory = Data; return(true); case "GEOGRAPHYCOUNTY": case "COUNTY": Guarantee_Hierarchical_Spatial(Package).County = Data; return(true); case "GEOGRAPHYCITY": case "CITY": Guarantee_Hierarchical_Spatial(Package).City = Data; return(true); case "GEOGRAPHYISLAND": case "ISLAND": Guarantee_Hierarchical_Spatial(Package).Island = Data; return(true); case "GEOGRAPHYAREA": case "AREA": Guarantee_Hierarchical_Spatial(Package).Area = Data; return(true); case "LOCATION": Package.Bib_Info.Add_Spatial_Subject(Data); return(true); case "COPYRIGHTDATE": case "COPYRIGHT": Package.Bib_Info.Origin_Info.Date_Copyrighted = Data; return(true); case "EADNAME": case "EAD": Package.Bib_Info.Location.EAD_Name = Data; return(true); case "EADURL": Package.Bib_Info.Location.EAD_URL = Data; return(true); case "COMMENTS": case "INTERNALCOMMENTS": case "INTERNAL": Package.Tracking.Internal_Comments = Data; return(true); case "CONTAINERBOX": case "BOX": Package.Bib_Info.Add_Container("Box", Data, 1); return(true); case "CONTAINERDIVIDER": case "DIVIDER": Package.Bib_Info.Add_Container("Divider", Data, 2); return(true); case "CONTAINERFOLDER": case "FOLDER": Package.Bib_Info.Add_Container("Folder", Data, 3); return(true); case "VIEWERS": case "VIEWER": Package.Behaviors.Add_View(Data); return(true); case "VISIBILITY": switch (Data.ToUpper()) { case "DARK": Package.Behaviors.Dark_Flag = true; Package.Behaviors.IP_Restriction_Membership = -1; return(true); case "PRIVATE": Package.Behaviors.Dark_Flag = false; Package.Behaviors.IP_Restriction_Membership = -1; return(true); case "PUBLIC": Package.Behaviors.Dark_Flag = false; Package.Behaviors.IP_Restriction_Membership = 0; return(true); case "RESTRICTED": Package.Behaviors.Dark_Flag = false; Package.Behaviors.IP_Restriction_Membership = 1; return(true); } return(true); case "TICKLER": Package.Behaviors.Add_Tickler(Data); return(true); case "TRACKINGBOX": Package.Tracking.Tracking_Box = Data; return(true); case "BORNDIGITAL": if (Data.ToUpper().Trim() == "TRUE") { Package.Tracking.Born_Digital = true; } return(true); case "MATERIALRECEIVED": case "MATERIALRECEIVEDDATE": case "MATERIALRECDDATE": case "MATERIALRECD": DateTime materialReceivedDate; if (DateTime.TryParse(Data, out materialReceivedDate)) { Package.Tracking.Material_Received_Date = materialReceivedDate; } return(true); case "MATERIAL": case "MATERIALS": case "MATERIALMEDIUM": VRACore_Info vraCoreInfo2 = Package.Get_Metadata_Module("VRACore") as VRACore_Info; if (vraCoreInfo2 == null) { vraCoreInfo2 = new VRACore_Info(); Package.Add_Metadata_Module("VRACore", vraCoreInfo2); } vraCoreInfo2.Add_Material(Data, "medium"); return(true); case "MATERIALSUPPORT": VRACore_Info vraCoreInfo2b = Package.Get_Metadata_Module("VRACore") as VRACore_Info; if (vraCoreInfo2b == null) { vraCoreInfo2b = new VRACore_Info(); Package.Add_Metadata_Module("VRACore", vraCoreInfo2b); } vraCoreInfo2b.Add_Material(Data, "support"); return(true); case "MEASUREMENT": case "MEASUREMENTS": case "MEASUREMENTDIMENSIONS": case "MEASUREMENTSDIMENSIONS": case "DIMENSIONS": VRACore_Info vraCoreInfo3 = Package.Get_Metadata_Module("VRACore") as VRACore_Info; if (vraCoreInfo3 == null) { vraCoreInfo3 = new VRACore_Info(); Package.Add_Metadata_Module("VRACore", vraCoreInfo3); } if (vraCoreInfo3.Measurement_Count == 0) { vraCoreInfo3.Add_Measurement(Data, String.Empty); } else { vraCoreInfo3.Measurements[0].Measurements = Data; } return(true); case "MEASUREMENTFORMAT": case "MEASUREMENTUNITS": case "MEASUREMENTSFORMAT": case "MEASUREMENTSUNITS": VRACore_Info vraCoreInfo3b = Package.Get_Metadata_Module("VRACore") as VRACore_Info; if (vraCoreInfo3b == null) { vraCoreInfo3b = new VRACore_Info(); Package.Add_Metadata_Module("VRACore", vraCoreInfo3b); } if (vraCoreInfo3b.Measurement_Count == 0) { vraCoreInfo3b.Add_Measurement(String.Empty, Data); } else { vraCoreInfo3b.Measurements[0].Units = Data; } return(true); case "STATEEDITION": VRACore_Info vraCoreInfo4 = Package.Get_Metadata_Module("VRACore") as VRACore_Info; if (vraCoreInfo4 == null) { vraCoreInfo4 = new VRACore_Info(); Package.Add_Metadata_Module("VRACore", vraCoreInfo4); } vraCoreInfo4.Add_State_Edition(Data); return(true); case "STYLE": case "PERIOD": case "STYLEPERIOD": VRACore_Info vraCoreInfo5 = Package.Get_Metadata_Module("VRACore") as VRACore_Info; if (vraCoreInfo5 == null) { vraCoreInfo5 = new VRACore_Info(); Package.Add_Metadata_Module("VRACore", vraCoreInfo5); } vraCoreInfo5.Add_Style_Period(Data); return(true); case "TECHNIQUE": VRACore_Info vraCoreInfo6 = Package.Get_Metadata_Module("VRACore") as VRACore_Info; if (vraCoreInfo6 == null) { vraCoreInfo6 = new VRACore_Info(); Package.Add_Metadata_Module("VRACore", vraCoreInfo6); } vraCoreInfo6.Add_Technique(Data); return(true); case "TARGETAUDIENCE": case "AUDIENCE": Package.Bib_Info.Add_Target_Audience(Data); return(true); default: // No mapping exists and this is a non-known no-mapping return(false); } }