/// <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) { string subject_text = String.Empty; string[] getKeys = HttpContext.Current.Request.Form.AllKeys; foreach (string thisKey in getKeys) { if (thisKey.IndexOf(html_element_name.Replace("_", "") + "_text") == 0) { subject_text = HttpContext.Current.Request.Form[thisKey]; } if (thisKey.IndexOf(html_element_name.Replace("_", "") + "_select") == 0) { string subject_type = HttpContext.Current.Request.Form[thisKey]; Subject_Info_Standard standardSubject = new Subject_Info_Standard {Authority = "fast"}; if (subject_text.Trim().Length > 0) { switch (subject_type) { case "genre": standardSubject.Add_Genre( subject_type ); break; case "geographic": standardSubject.Add_Geographic( subject_type ); break; case "occupational": standardSubject.Add_Occupation( subject_type ); break; case "temporal": standardSubject.Add_Temporal( subject_type ); break; case "topic": standardSubject.Add_Topic( subject_type ); break; } if ((standardSubject.Topics_Count > 0) || (standardSubject.Genres_Count > 0) || (standardSubject.Geographics_Count > 0) || (standardSubject.Occupations_Count > 0) || (standardSubject.Temporals_Count > 0)) Bib.Bib_Info.Add_Subject(standardSubject); } subject_text = String.Empty; } } }
private void split_add_subjects(SobekCM_Item Package, string Data ) { if (Data.IndexOf("--") < 0) Package.Bib_Info.Add_Subject(new Subject_Info_Standard(Data, null)); else { Subject_Info_Standard subject = new Subject_Info_Standard(); string[] splitter = Data.Split("-".ToCharArray()); foreach (string thisSplit in splitter) { if (thisSplit.Length == 0) continue; string tsl = thisSplit.ToLower().Trim(); // Was this geographic? if ((tsl.IndexOf("county") >= 0) || (tsl.IndexOf("(nev.)") > 0) || (tsl.IndexOf("henderson") >= 0) || (tsl.IndexOf("nevada") >= 0) || (tsl.IndexOf("las vegas") >= 0) || (tsl.IndexOf("(ariz.)") >= 0) || (tsl.IndexOf("california") >= 0) || (tsl.IndexOf("los angeles") >= 0) || (tsl.IndexOf("(calif.)") >= 0) || (tsl.IndexOf("russia") >= 0) || (tsl.IndexOf("lake mead") >= 0) || (tsl.IndexOf("(ariz.)") >= 0) || (tsl.IndexOf("united states") >= 0) || (tsl.IndexOf("(ariz.)") >= 0) || (tsl.IndexOf("el paso") >= 0) || (tsl.IndexOf("texas") >= 0) || (tsl.IndexOf("(ariz.)") >= 0) || (tsl.IndexOf("boulder city") >= 0) || (tsl.IndexOf("pittman") >= 0) || (tsl.IndexOf("gabbs") >= 0) || (tsl.IndexOf("california") >= 0) || (tsl.IndexOf("colorado") >= 0) || (tsl.IndexOf("reno") >= 0) || (tsl.IndexOf("(ariz.)") >= 0) || ( tsl == "japan")) subject.Add_Geographic(thisSplit.Trim().Replace("\"","")); // Was this temporal? else if ((tsl.IndexOf("20th century") >= 0) || (tsl.IndexOf("war, 19") >= 0)) subject.Add_Temporal(thisSplit.Trim()); else if (tsl.IndexOf("maps, topographic") >= 0) subject.Add_Genre(thisSplit.Trim()); else subject.Add_Topic(thisSplit.Trim()); } Package.Bib_Info.Add_Subject(subject); } }
private static void Add_Subject(Bibliographic_Info thisBibInfo, MARC_Record record, int tag, string topical_codes, string geographic_codes, string temporal_codes, string genre_codes, string occupation_codes) { // Step through all of the subjects under this tag int subj_index = 1; string source; foreach (MARC_Field thisRecord in record[tag]) { // Only continue if there is an id in this record if (thisRecord.has_Subfield('a')) { // Was there a source? source = String.Empty; if (thisRecord.has_Subfield('2')) { source = thisRecord['2']; } else if ((tag != 653)) { switch (thisRecord.Indicator2) { case '0': source = "lcsh"; break; case '1': source = "lcshac"; break; case '2': source = "mesh"; break; case '3': source = "nal"; break; case '5': source = "csh"; break; case '6': source = "rvm"; break; case '9': source = "local"; break; } } Subject_Info_Standard obj = new Subject_Info_Standard(); obj.Authority = source; obj.ID = "SUBJ" + tag + "_" + subj_index; subj_index++; // Add the topics foreach (char thisTopicChar in topical_codes) { if (thisRecord.has_Subfield(thisTopicChar)) { string topicString = thisRecord[thisTopicChar]; if (topicString.IndexOf("|") > 0) { string[] topicStringSplit = topicString.Split("|".ToCharArray()); foreach (string thisTopicString in topicStringSplit) obj.Add_Topic(Remove_Trailing_Punctuation(thisTopicString)); } else { obj.Add_Topic(Remove_Trailing_Punctuation(topicString)); } } } // Add the temporals foreach (char thisTempChar in temporal_codes) { if (thisRecord.has_Subfield(thisTempChar)) { string tempString = thisRecord[thisTempChar]; if (tempString.IndexOf("|") > 0) { string[] tempStringSplit = tempString.Split("|".ToCharArray()); foreach (string thisTempString in tempStringSplit) obj.Add_Temporal(Remove_Trailing_Punctuation(thisTempString)); } else { obj.Add_Temporal(Remove_Trailing_Punctuation(tempString)); } } } // Add the geographics foreach (char thisGeoChar in geographic_codes) { if (thisRecord.has_Subfield(thisGeoChar)) { string geoString = thisRecord[thisGeoChar]; if (geoString.IndexOf("|") > 0) { string[] geoStringSplit = geoString.Split("|".ToCharArray()); foreach (string thisGeoString in geoStringSplit) obj.Add_Geographic(Remove_Trailing_Punctuation(thisGeoString)); } else { obj.Add_Geographic(Remove_Trailing_Punctuation(geoString)); } } } // Add the genres foreach (char thisGenreChar in genre_codes) { if (thisRecord.has_Subfield(thisGenreChar)) { string genreString = thisRecord[thisGenreChar]; if (genreString.IndexOf("|") > 0) { string[] genreStringSplit = genreString.Split("|".ToCharArray()); foreach (string thisGenreString in genreStringSplit) obj.Add_Genre(Remove_Trailing_Punctuation(thisGenreString)); } else { obj.Add_Genre(Remove_Trailing_Punctuation(genreString)); } } } // Add the occupations foreach (char thisOccChar in occupation_codes) { if (thisRecord.has_Subfield(thisOccChar)) { string occString = thisRecord[thisOccChar].Replace("--", "|"); if (occString.IndexOf("|") > 0) { string[] occStringSplit = occString.Split("|".ToCharArray()); foreach (string thisOccString in occStringSplit) obj.Add_Occupation(Remove_Trailing_Punctuation(thisOccString.Trim())); } else { obj.Add_Occupation(Remove_Trailing_Punctuation(occString)); } } } // Add this subject thisBibInfo.Add_Subject(obj); } } }
private static void read_subject_object(XmlReader r, Bibliographic_Info thisBibInfo) { string language = String.Empty; string authority = String.Empty; string id = String.Empty; if (r.MoveToAttribute("ID")) id = r.Value; if (r.MoveToAttribute("lang")) language = r.Value; if (r.MoveToAttribute("authority")) authority = r.Value; // Move to the next element while (r.Read()) { if (r.NodeType == XmlNodeType.Element) break; } // Determine the subject type Subject_Info_Type type = Subject_Info_Type.UNKNOWN; // What is the name of this node? switch (r.Name) { case "mods:topic": case "mods:geographic": case "mods:genre": case "mods:temporal": case "mods:occupation": case "topic": case "geographic": case "genre": case "temporal": case "occupation": type = Subject_Info_Type.Standard; break; case "mods:hierarchicalGeographic": case "hierarchicalGeographic": type = Subject_Info_Type.Hierarchical_Spatial; break; case "mods:cartographics": case "cartographics": type = Subject_Info_Type.Cartographics; break; case "mods:name": case "name": type = Subject_Info_Type.Name; break; case "mods:titleInfo": case "titleInfo": type = Subject_Info_Type.TitleInfo; break; } // If no type was determined, return null if (type == Subject_Info_Type.UNKNOWN) return; // Was this the standard subject object? if (type == Subject_Info_Type.Standard) { Subject_Info_Standard standardSubject = new Subject_Info_Standard(); standardSubject.Language = language; standardSubject.Authority = authority; standardSubject.ID = id; do { if ((r.NodeType == XmlNodeType.EndElement) && ((r.Name == "mods:subject") || (r.Name == "subject"))) { if ((standardSubject.Topics_Count > 0) || (standardSubject.Geographics_Count > 0) || (standardSubject.Genres_Count > 0) || (standardSubject.Temporals_Count > 0) || (standardSubject.Occupations_Count > 0)) { thisBibInfo.Add_Subject(standardSubject); } return; } if (r.NodeType == XmlNodeType.Element) { switch (r.Name) { case "mods:topic": case "topic": r.Read(); if (r.NodeType == XmlNodeType.Text) standardSubject.Add_Topic(r.Value); break; case "mods:geographic": case "geographic": r.Read(); if (r.NodeType == XmlNodeType.Text) standardSubject.Add_Geographic(r.Value); break; case "mods:genre": case "genre": r.Read(); if (r.NodeType == XmlNodeType.Text) standardSubject.Add_Genre(r.Value); break; case "mods:temporal": case "temporal": r.Read(); if (r.NodeType == XmlNodeType.Text) standardSubject.Add_Temporal(r.Value); break; case "mods:occupation": case "occupation": r.Read(); if (r.NodeType == XmlNodeType.Text) standardSubject.Add_Occupation(r.Value); break; } } } while (r.Read()); } // Was this the hierarchical geography subject? if (type == Subject_Info_Type.Hierarchical_Spatial) { Subject_Info_HierarchicalGeographic geoSubject = new Subject_Info_HierarchicalGeographic(); geoSubject.Language = language; geoSubject.Authority = authority; geoSubject.ID = id; while (r.Read()) { if ((r.NodeType == XmlNodeType.EndElement) && ((r.Name == "mods:subject") || (r.Name == "subject"))) { thisBibInfo.Add_Subject(geoSubject); return; } if (r.NodeType == XmlNodeType.Element) { switch (r.Name) { case "mods:continent": case "continent": r.Read(); if (r.NodeType == XmlNodeType.Text) geoSubject.Continent = r.Value; break; case "mods:country": case "country": r.Read(); if (r.NodeType == XmlNodeType.Text) geoSubject.Country = r.Value; break; case "mods:province": case "province": r.Read(); if (r.NodeType == XmlNodeType.Text) geoSubject.Province = r.Value; break; case "mods:region": case "region": r.Read(); if (r.NodeType == XmlNodeType.Text) geoSubject.Region = r.Value; break; case "mods:state": case "state": r.Read(); if (r.NodeType == XmlNodeType.Text) geoSubject.State = r.Value; break; case "mods:territory": case "territory": r.Read(); if (r.NodeType == XmlNodeType.Text) geoSubject.Territory = r.Value; break; case "mods:county": case "county": r.Read(); if (r.NodeType == XmlNodeType.Text) geoSubject.County = r.Value; break; case "mods:city": case "city": r.Read(); if (r.NodeType == XmlNodeType.Text) geoSubject.City = r.Value; break; case "mods:citySection": case "citySection": r.Read(); if (r.NodeType == XmlNodeType.Text) geoSubject.CitySection = r.Value; break; case "mods:island": case "island": r.Read(); if (r.NodeType == XmlNodeType.Text) geoSubject.Island = r.Value; break; case "mods:area": case "area": r.Read(); if (r.NodeType == XmlNodeType.Text) geoSubject.Area = r.Value; break; } } } } // Was this the cartographics subject? if (type == Subject_Info_Type.Cartographics) { Subject_Info_Cartographics mapSubject = new Subject_Info_Cartographics(); mapSubject.Language = language; mapSubject.Authority = authority; mapSubject.ID = id; while (r.Read()) { if ((r.NodeType == XmlNodeType.EndElement) && ((r.Name == "mods:subject") || (r.Name == "subject"))) { if ((mapSubject.Projection.Length > 0) || (mapSubject.Coordinates.Length > 0) || (mapSubject.Scale.Length > 0)) { thisBibInfo.Add_Subject(mapSubject); } return; } if (r.NodeType == XmlNodeType.Element) { switch (r.Name) { case "mods:coordinates": case "coordinates": r.Read(); if (r.NodeType == XmlNodeType.Text) mapSubject.Coordinates = r.Value; break; case "mods:scale": case "scale": r.Read(); if (r.NodeType == XmlNodeType.Text) mapSubject.Scale = r.Value; break; case "mods:projection": case "projection": r.Read(); if (r.NodeType == XmlNodeType.Text) mapSubject.Projection = r.Value; break; } } } } // Was this the name subject? if (type == Subject_Info_Type.Name) { Subject_Info_Name nameSubject = new Subject_Info_Name(); nameSubject.Language = language; nameSubject.Authority = authority; nameSubject.ID = id; do { if ((r.NodeType == XmlNodeType.EndElement) && ((r.Name == "mods:subject") || (r.Name == "subject"))) { thisBibInfo.Add_Subject(nameSubject); return; } if (r.NodeType == XmlNodeType.Element) { switch (r.Name) { case "mods:name": case "name": Name_Info nameInfo = read_name_object(r); nameSubject.Set_Internal_Name(nameInfo); break; case "mods:topic": case "topic": r.Read(); if (r.NodeType == XmlNodeType.Text) nameSubject.Add_Topic(r.Value); break; case "mods:geographic": case "geographic": r.Read(); if (r.NodeType == XmlNodeType.Text) nameSubject.Add_Geographic(r.Value); break; case "mods:genre": case "genre": r.Read(); if (r.NodeType == XmlNodeType.Text) nameSubject.Add_Genre(r.Value); break; case "mods:temporal": case "temporal": r.Read(); if (r.NodeType == XmlNodeType.Text) nameSubject.Add_Temporal(r.Value); break; } } } while (r.Read()); } // Was this the title subject? if (type == Subject_Info_Type.TitleInfo) { Subject_Info_TitleInfo titleSubject = new Subject_Info_TitleInfo(); titleSubject.Language = language; titleSubject.Authority = authority; titleSubject.ID = id; do { if ((r.NodeType == XmlNodeType.EndElement) && ((r.Name == "mods:subject") || (r.Name == "subject"))) { thisBibInfo.Add_Subject(titleSubject); return; } if (r.NodeType == XmlNodeType.Element) { switch (r.Name) { case "mods:titleInfo": case "titleInfo": Title_Info titleInfo = read_title_object(r); titleSubject.Set_Internal_Title(titleInfo); break; case "mods:topic": case "topic": r.Read(); if (r.NodeType == XmlNodeType.Text) titleSubject.Add_Topic(r.Value); break; case "mods:geographic": case "geographic": r.Read(); if (r.NodeType == XmlNodeType.Text) titleSubject.Add_Geographic(r.Value); break; case "mods:genre": case "genre": r.Read(); if (r.NodeType == XmlNodeType.Text) titleSubject.Add_Genre(r.Value); break; case "mods:temporal": case "temporal": r.Read(); if (r.NodeType == XmlNodeType.Text) titleSubject.Add_Temporal(r.Value); break; } } } while (r.Read()); } }
/// <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) { string[] getKeys = HttpContext.Current.Request.Form.AllKeys; foreach (string thisKey in getKeys) { if (thisKey.IndexOf("formsubjecttype_") == 0) { string diff = thisKey.Replace("formsubjecttype_",""); string topic1 = HttpContext.Current.Request.Form["formsubjecttopic1_" + diff].Trim(); string topic2 = HttpContext.Current.Request.Form["formsubjecttopic2_" + diff].Trim(); string topic3 = HttpContext.Current.Request.Form["formsubjecttopic3_" + diff].Trim(); string topic4 = HttpContext.Current.Request.Form["formsubjecttopic4_" + diff].Trim(); string temporal1 = HttpContext.Current.Request.Form["formsubjecttemporal1_" + diff].Trim(); string temporal2 = HttpContext.Current.Request.Form["formsubjecttemporal2_" + diff].Trim(); string geographic1 = HttpContext.Current.Request.Form["formsubjectgeo1_" + diff].Trim(); string geographic2 = HttpContext.Current.Request.Form["formsubjectgeo2_" + diff].Trim(); string genre1 = HttpContext.Current.Request.Form["formsubjectgenre1_" + diff].Trim(); string genre2 = HttpContext.Current.Request.Form["formsubjectgenre2_" + diff].Trim(); string occcupation = HttpContext.Current.Request.Form["formsubjectoccup1_" + diff].Trim(); string authority = HttpContext.Current.Request.Form["formsubjectauthority_" + diff].Trim(); string language = HttpContext.Current.Request.Form["formsubjectlanguage_" + diff].Trim(); string marc = HttpContext.Current.Request.Form["formsubjectmap_" + diff].Trim(); if ((topic1.Length > 0) || (topic2.Length > 0) || (topic3.Length > 0) || (topic4.Length > 0) || (temporal1.Length > 0) || (temporal2.Length > 0) || (geographic1.Length > 0) || (geographic2.Length > 0) || (genre1.Length > 0) || (genre2.Length > 0) || (occcupation.Length > 0)) { Subject_Info_Standard newSubject = new Subject_Info_Standard(); if (topic1.Length > 0) newSubject.Add_Topic(topic1); if (topic2.Length > 0) newSubject.Add_Topic(topic2); if (topic3.Length > 0) newSubject.Add_Topic(topic3); if (topic4.Length > 0) newSubject.Add_Topic(topic4); if (temporal1.Length > 0) newSubject.Add_Temporal(temporal1); if (temporal2.Length > 0) newSubject.Add_Temporal(temporal2); if (geographic1.Length > 0) newSubject.Add_Geographic(geographic1); if (geographic2.Length > 0) newSubject.Add_Geographic(geographic2); if (genre1.Length > 0) newSubject.Add_Genre(genre1); if (genre2.Length > 0) newSubject.Add_Genre(genre2); if (occcupation.Length > 0) newSubject.Add_Occupation(occcupation); newSubject.Authority = authority; newSubject.Language = language; if ((marc.Length > 0) && (marc != "none")) { newSubject.ID = "SUBJ" + marc + "_" + diff; } Bib.Bib_Info.Add_Subject(newSubject); } } } }
/// <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> public static void Add_Data(SobekCM_Item Package, string Data, Mapped_Fields Field) { Data = Data.Trim(); if (Data.Length == 0) return; // Everything depends on the field which is mapped switch (Field) { case Mapped_Fields.None: // Do nothing, since no mapping exists break; case Mapped_Fields.Abstract: Package.Bib_Info.Add_Abstract(Data, "en"); break; case Mapped_Fields.Accession_Number: Package.Bib_Info.Add_Identifier(Data, "Accession Number"); break; case Mapped_Fields.Alternate_Title: Package.Bib_Info.Add_Other_Title(Data, Title_Type_Enum.alternative); break; case Mapped_Fields.Attribution: Package.Bib_Info.Add_Note(Data, Note_Type_Enum.funding); break; case Mapped_Fields.Aggregation_Code: Package.Behaviors.Add_Aggregation(Data.ToUpper()); break; case Mapped_Fields.Contributor: Package.Bib_Info.Add_Named_Entity(new Name_Info(Data, "contributor")); break; case Mapped_Fields.Creator: Package.Bib_Info.Add_Named_Entity(new Name_Info(Data, "creator")); break; case Mapped_Fields.Creator_Affiliation: if (Package.Bib_Info.Names_Count > 0) { Package.Bib_Info.Names[0].Affiliation = Data; } break; case Mapped_Fields.Cultural_Context: 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); break; case Mapped_Fields.Donor: Package.Bib_Info.Donor.Full_Name = Data; break; case Mapped_Fields.Genre: Subject_Info_Standard genre = new Subject_Info_Standard(); genre.Add_Genre(Data); Package.Bib_Info.Add_Subject(genre); break; case Mapped_Fields.Holding_Code: Package.Bib_Info.Location.Holding_Code = Data; break; case Mapped_Fields.Holding_Statement: Package.Bib_Info.Location.Holding_Name = Data; break; case Mapped_Fields.Identifier: Package.Bib_Info.Add_Identifier(Data); break; case Mapped_Fields.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); break; case Mapped_Fields.Language: Package.Bib_Info.Add_Language(Data); break; case Mapped_Fields.Publisher: Package.Bib_Info.Add_Publisher(Data); break; case Mapped_Fields.Pub_Place: Package.Bib_Info.Origin_Info.Add_Place(Data); break; case Mapped_Fields.Source_Code: Package.Bib_Info.Source.Code = Data; break; case Mapped_Fields.Source_Statement: Package.Bib_Info.Source.Statement = Data; break; case Mapped_Fields.Subject_Keyword: Package.Bib_Info.Add_Subject(Data, String.Empty); break; case Mapped_Fields.BibID: Package.Bib_Info.BibID = Data.ToUpper(); break; case Mapped_Fields.VID: Package.Bib_Info.VID = Data.PadLeft(5, '0'); break; case Mapped_Fields.Date: 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; } } break; case Mapped_Fields.Edition: Package.Bib_Info.Origin_Info.Edition = Data; break; case Mapped_Fields.Format: Package.Bib_Info.Original_Description.Extent = Data; break; case Mapped_Fields.Note: Package.Bib_Info.Add_Note(Data); break; case Mapped_Fields.Rights: Package.Bib_Info.Access_Condition.Text = Data; break; case Mapped_Fields.Series_Title: Package.Bib_Info.SeriesTitle.Title = Data; Package.Behaviors.GroupTitle = Data; break; case Mapped_Fields.Type: string upper_data = Data.ToUpper(); if (upper_data.IndexOf("NEWSPAPER") >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Newspaper; break; } if ((upper_data.IndexOf("MONOGRAPH") >= 0) || (upper_data.IndexOf("BOOK") >= 0)) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Book; break; } if (upper_data.IndexOf("SERIAL") >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Serial; break; } if (upper_data.IndexOf("AERIAL") >= 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"; break; } if (upper_data.IndexOf("PHOTO") >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Photograph; break; } if (upper_data.IndexOf("POSTCARD") >= 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"; break; } if (upper_data.IndexOf("MAP") >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Map; break; } if (upper_data.IndexOf("TEXT") >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Book; break; } if (upper_data.IndexOf("AUDIO") >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Audio; break; } if (upper_data.IndexOf("VIDEO") >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Video; break; } if ((upper_data.IndexOf("ARCHIVE") >= 0) || (upper_data.IndexOf("ARCHIVAL") >= 0)) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Archival; break; } if (upper_data.IndexOf("ARTIFACT") >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Artifact; break; } if (upper_data.IndexOf("IMAGE") >= 0) { Package.Bib_Info.SobekCM_Type = TypeOfResource_SobekCM_Enum.Photograph; break; } // 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"; break; case Mapped_Fields.Uniform_Title: Package.Bib_Info.Add_Other_Title(Data, Title_Type_Enum.uniform); Package.Behaviors.GroupTitle = Data; break; case Mapped_Fields.Title: Package.Bib_Info.Main_Title.Title = Data; break; case Mapped_Fields.Aleph: Package.Bib_Info.Add_Identifier(Data, "ALEPH"); break; case Mapped_Fields.OCLC: Package.Bib_Info.Add_Identifier(Data, "OCLC"); break; case Mapped_Fields.LCCN: Package.Bib_Info.Add_Identifier(Data, "LCCN"); break; case Mapped_Fields.ISBN: Package.Bib_Info.Add_Identifier(Data, "ISBN"); break; case Mapped_Fields.ISSN: Package.Bib_Info.Add_Identifier(Data, "ISSN"); break; case Mapped_Fields.Sub_Title: Package.Bib_Info.Main_Title.Subtitle = Data; break; case Mapped_Fields.Volume: Package.Bib_Info.Series_Part_Info.Enum1 = Data; Package.Behaviors.Serial_Info.Add_Hierarchy(Package.Behaviors.Serial_Info.Count + 1, 1, Data); break; case Mapped_Fields.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); break; case Mapped_Fields.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 break; case Mapped_Fields.Year: Package.Bib_Info.Series_Part_Info.Year = Data; if (Data.Length == 1) year = "0" + Data; else year = Data; build_date_string(Package); break; case Mapped_Fields.Month: Package.Bib_Info.Series_Part_Info.Month = Data; month = Data; build_date_string(Package); break; case Mapped_Fields.Day: Package.Bib_Info.Series_Part_Info.Day = Data; day = Data; build_date_string(Package); break; case Mapped_Fields.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 { } break; case Mapped_Fields.Latitude: 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 { } break; case Mapped_Fields.Longitude: 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 { } break; case Mapped_Fields.Projection: Guarantee_Cartographics(Package).Projection = Data; break; case Mapped_Fields.Scale: Guarantee_Cartographics(Package).Scale = Data; break; //case Mapped_Fields.Spatial_Coverage: // Package.Bib_Info.Hierarchical_Spatials[0].Area = Data; // break; case Mapped_Fields.Icon_Wordmarks: case Mapped_Fields.Wordmark: // Package.Processing_Parameters.Icons.Add(Data, String.Empty); Package.Behaviors.Add_Wordmark(Data); break; case Mapped_Fields.Temporal_Coverage: Package.Bib_Info.Add_Temporal_Subject(-1, -1, Data); break; case Mapped_Fields.Affiliation_University: Guarantee_Affiliation_Collection(Package); Package.Bib_Info.Affiliations[0].University = Data; break; case Mapped_Fields.Affiliation_Campus: Guarantee_Affiliation_Collection(Package); Package.Bib_Info.Affiliations[0].Campus = Data; break; case Mapped_Fields.Affiliation_College: Guarantee_Affiliation_Collection(Package); Package.Bib_Info.Affiliations[0].College = Data; break; case Mapped_Fields.Affiliation_Unit: Guarantee_Affiliation_Collection(Package); Package.Bib_Info.Affiliations[0].Unit = Data; break; case Mapped_Fields.Affiliation_Department: Guarantee_Affiliation_Collection(Package); Package.Bib_Info.Affiliations[0].Department = Data; break; case Mapped_Fields.Affiliation_Institute: Guarantee_Affiliation_Collection(Package); Package.Bib_Info.Affiliations[0].Institute = Data; break; case Mapped_Fields.Affiliation_Center: Guarantee_Affiliation_Collection(Package); Package.Bib_Info.Affiliations[0].Center = Data; break; case Mapped_Fields.Affiliation_Section: Guarantee_Affiliation_Collection(Package); Package.Bib_Info.Affiliations[0].Section = Data; break; case Mapped_Fields.Affiliation_Subsection: Guarantee_Affiliation_Collection(Package); Package.Bib_Info.Affiliations[0].SubSection = Data; break; case Mapped_Fields.Geography_Continent: Guarantee_Hierarchical_Spatial(Package).Continent = Data; break; case Mapped_Fields.Geography_Country: Guarantee_Hierarchical_Spatial(Package).Country = Data; break; case Mapped_Fields.Geography_Province: Guarantee_Hierarchical_Spatial(Package).Province = Data; break; case Mapped_Fields.Geography_Region: Guarantee_Hierarchical_Spatial(Package).Region = Data; break; case Mapped_Fields.Geography_State: Guarantee_Hierarchical_Spatial(Package).State = Data; break; case Mapped_Fields.Geography_Territory: Guarantee_Hierarchical_Spatial(Package).Territory = Data; break; case Mapped_Fields.Geography_County: Guarantee_Hierarchical_Spatial(Package).County = Data; break; case Mapped_Fields.Geography_City: Guarantee_Hierarchical_Spatial(Package).City = Data; break; case Mapped_Fields.Geography_Island: Guarantee_Hierarchical_Spatial(Package).Island = Data; break; case Mapped_Fields.Geography_Area: Guarantee_Hierarchical_Spatial(Package).Area = Data; break; case Mapped_Fields.Copyright_Date: Package.Bib_Info.Origin_Info.Date_Copyrighted = Data; break; case Mapped_Fields.EAD_Name: Package.Bib_Info.Location.EAD_Name = Data; break; case Mapped_Fields.EAD_URL: Package.Bib_Info.Location.EAD_URL = Data; break; case Mapped_Fields.Internal_Comments: Package.Tracking.Internal_Comments = Data; break; case Mapped_Fields.Container_Box: Package.Bib_Info.Add_Container("Box", Data, 1); break; case Mapped_Fields.Container_Divider: Package.Bib_Info.Add_Container("Divider", Data, 2); break; case Mapped_Fields.Container_Folder: Package.Bib_Info.Add_Container("Folder", Data, 3); break; case Mapped_Fields.Visibility: switch (Data.ToUpper()) { case "DARK": Package.Behaviors.Dark_Flag = true; Package.Behaviors.IP_Restriction_Membership = -1; break; case "PRIVATE": Package.Behaviors.Dark_Flag = false; Package.Behaviors.IP_Restriction_Membership = -1; break; case "PUBLIC": Package.Behaviors.Dark_Flag = false; Package.Behaviors.IP_Restriction_Membership = 0; break; case "RESTRICTED": Package.Behaviors.Dark_Flag = false; Package.Behaviors.IP_Restriction_Membership = 1; break; } break; case Mapped_Fields.Tickler: Package.Behaviors.Add_Tickler(Data); break; case Mapped_Fields.Tracking_Box: Package.Tracking.Tracking_Box = Data; break; case Mapped_Fields.Born_Digital_Flag: if (Data.ToUpper().Trim() == "TRUE") Package.Tracking.Born_Digital = true; break; case Mapped_Fields.Material_Received_Date: try { DateTime materialReceivedDate = Convert.ToDateTime(Data); } catch { } break; case Mapped_Fields.Materials: 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"); break; case Mapped_Fields.Measurements: VRACore_Info vraCoreInfo3 = Package.Get_Metadata_Module("VRACore") as VRACore_Info; if (vraCoreInfo3 == null) { vraCoreInfo3 = new VRACore_Info(); Package.Add_Metadata_Module("VRACore", vraCoreInfo3); } vraCoreInfo3.Add_Measurement(Data, String.Empty); break; case Mapped_Fields.State_Edition: 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); break; case Mapped_Fields.Style_Period: 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); break; case Mapped_Fields.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); break; } }