/// <summary> Constructor for a new instance of the SobekCM_Item class, which imports values from a OAI record </summary>
        public SobekCM_Item(OAI_Repository_DublinCore_Record OAI_Record)
        {
            metsInfo = new METS_Header_Info();
            behaviorInfo = new Behaviors_Info();
            divInfo = new Division_Info();
            bibInfo = new Bibliographic_Info();
            web = new Web_Info(behaviorInfo);
            analyzed_for_complex_content = false;
            contains_complex_content = false;
            using_complex_template = false;
            size_mb = 0;

            // Copy over all the data
            if (OAI_Record.hasCreators)
            {
                foreach (string thisCreator in OAI_Record.Creators)
                {
                    Bib_Info.Add_Named_Entity(thisCreator);
                }
            }
            if (OAI_Record.hasContributors)
            {
                foreach (string thisContributor in OAI_Record.Contributors)
                {
                    Bib_Info.Add_Named_Entity(thisContributor, "Contributor");
                }
            }
            if (OAI_Record.hasCoverages)
            {
                foreach (string thisCoverage in OAI_Record.Coverages)
                {
                    Subject_Info_Standard thisSubject = new Subject_Info_Standard();
                    thisSubject.Add_Geographic(thisCoverage);
                    Bib_Info.Add_Subject(thisSubject);
                }
            }
            if (OAI_Record.hasDates)
            {
                foreach (string thisDate in OAI_Record.Dates)
                {
                    Bib_Info.Origin_Info.Date_Issued = thisDate;
                }
            }
            if (OAI_Record.hasDescriptions)
            {
                foreach (string thisDescription in OAI_Record.Descriptions)
                {
                    Bib_Info.Add_Note(thisDescription);
                }
            }
            if (OAI_Record.hasFormats)
            {
                foreach (string thisFormat in OAI_Record.Formats)
                {
                    Bib_Info.Original_Description.Extent = thisFormat;
                }
            }
            if (OAI_Record.hasIdentifiers)
            {
                foreach (string thisIdentifier in OAI_Record.Identifiers)
                {
                    if (thisIdentifier.IndexOf("http://") == 0)
                    {
                        Bib_Info.Location.Other_URL = thisIdentifier;
                    }
                    else
                    {
                        Bib_Info.Add_Identifier(thisIdentifier);
                    }
                }
            }
            if (OAI_Record.hasLanguages)
            {
                foreach (string thisLanguage in OAI_Record.Languages)
                {
                    Bib_Info.Add_Language(thisLanguage);
                }
            }
            if (OAI_Record.hasPublishers)
            {
                foreach (string thisPublisher in OAI_Record.Publishers)
                {
                    Bib_Info.Add_Publisher(thisPublisher);
                }
            }
            if (OAI_Record.hasRelations)
            {
                foreach (string thisRelation in OAI_Record.Relations)
                {
                    Related_Item_Info newRelatedItem = new Related_Item_Info();
                    newRelatedItem.Main_Title.Title = thisRelation;
                    Bib_Info.Add_Related_Item(newRelatedItem);
                }
            }
            if (OAI_Record.hasRights)
            {
                foreach (string thisRights in OAI_Record.Rights)
                {
                    Bib_Info.Access_Condition.Text = thisRights;
                }
            }
            //if (OAI_Record.hasSources)
            //{
            //    foreach (string thisSource in OAI_Record.Sources)
            //    {
            //        this.Bib_Info.Source.Statement = r.Value.Trim() = thisSource;
            //    }
            //}
            if (OAI_Record.hasSubjects)
            {
                foreach (string thisSubject in OAI_Record.Subjects)
                {
                    if (thisSubject.IndexOf(";") > 0)
                    {
                        string[] splitter = thisSubject.Split(";".ToCharArray());
                        foreach (string thisSplit in splitter)
                        {
                            Bib_Info.Add_Subject(thisSplit.Trim(), String.Empty);
                        }
                    }
                    else
                    {
                        Bib_Info.Add_Subject(thisSubject, String.Empty);
                    }
                }
            }
            if (OAI_Record.hasTitles)
            {
                foreach (string thistitle in OAI_Record.Titles)
                {
                    if (Bib_Info.Main_Title.ToString().Length > 0)
                    {
                        Bib_Info.Add_Other_Title(thistitle, Title_Type_Enum.alternative);
                    }
                    else
                    {
                        Bib_Info.Main_Title.Clear();
                        Bib_Info.Main_Title.Title = thistitle;
                    }
                }
            }
            if (OAI_Record.hasTypes)
            {
                foreach (string thisType in OAI_Record.Types)
                {
                    Bib_Info.SobekCM_Type_String = thisType;
                }
            }

            // If there is a metadata configuration which calls for a metadata
            // extension module to always be used, add it now
            if (Metadata_Configuration.Metadata_Modules_To_Include.Count > 0)
            {
                foreach (Additional_Metadata_Module_Config thisConfig in Metadata_Configuration.Metadata_Modules_To_Include)
                {
                    iMetadata_Module toInclude = thisConfig.Get_Module();
                    if (toInclude != null)
                    {
                        Add_Metadata_Module(thisConfig.Key, toInclude);
                    }
                }
            }
        }
        private static void read_list_of_records(Stream resStream, OAI_Repository_Records_List returnValue)
        {
            // Try to read the XML
            XmlTextReader r = new XmlTextReader(resStream);

            bool inRecord = false;
            OAI_Repository_DublinCore_Record thisRecord = new OAI_Repository_DublinCore_Record();
            while (r.Read())
            {
                if (inRecord)
                {
                    if (r.NodeType == XmlNodeType.Element)
                    {
                        switch (r.Name)
                        {
                            case "identifier":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.OAI_Identifier = r.Value.Trim();
                                }
                                break;

                            case "datestamp":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Datestamp = r.Value.Trim();
                                }
                                break;

                            case "dc:title":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Title(r.Value.Trim());
                                }
                                break;

                            case "dc:creator":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Creator(r.Value.Trim());
                                }
                                break;

                            case "dc:subject":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Subject(r.Value.Trim());
                                }
                                break;

                            case "dc:description":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Description(r.Value.Trim());
                                }
                                break;

                            case "dc:publisher":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Publisher(r.Value.Trim());
                                }
                                break;

                            case "dc:contributor":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Contributor(r.Value.Trim());
                                }
                                break;

                            case "dc:date":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Date(r.Value.Trim());
                                }
                                break;

                            case "dc:type":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Type(r.Value.Trim());
                                }
                                break;

                            case "dc:format":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Format(r.Value.Trim());
                                }
                                break;

                            case "dc:source":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Source(r.Value.Trim());
                                }
                                break;

                            case "dc:identifier":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Identifier(r.Value.Trim());
                                }
                                break;

                            case "dc:language":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Language(r.Value.Trim());
                                }
                                break;

                            case "dc:relation":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Relation(r.Value.Trim());
                                }
                                break;

                            case "dc:coverage":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Coverage(r.Value.Trim());
                                }
                                break;

                            case "dc:rights":
                                r.Read();
                                if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                                {
                                    thisRecord.Add_Rights(r.Value.Trim());
                                }
                                break;
                        }
                    }
                    else if ((r.NodeType == XmlNodeType.EndElement) && (r.Name == "record"))
                    {
                        inRecord = false;
                        returnValue.Add_Record(thisRecord);
                    }
                }
                else
                {
                    if ((r.NodeType == XmlNodeType.Element) && (r.Name == "record"))
                    {
                        inRecord = true;
                        thisRecord = new OAI_Repository_DublinCore_Record();
                    }

                    if ((r.NodeType == XmlNodeType.Element) && (r.Name == "resumptionToken"))
                    {
                        r.Read();
                        if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                        {
                            returnValue.Resumption_Token = r.Value;
                        }
                        break;
                    }
                }
            }
        }
Esempio n. 3
0
        private static void read_list_of_records(Stream resStream, OAI_Repository_Records_List returnValue)
        {
            // Try to read the XML
            XmlTextReader r = new XmlTextReader(resStream);

            bool inRecord = false;
            OAI_Repository_DublinCore_Record thisRecord = new OAI_Repository_DublinCore_Record();

            while (r.Read())
            {
                if (inRecord)
                {
                    if (r.NodeType == XmlNodeType.Element)
                    {
                        switch (r.Name)
                        {
                        case "identifier":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.OAI_Identifier = r.Value.Trim();
                            }
                            break;

                        case "datestamp":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Datestamp = r.Value.Trim();
                            }
                            break;

                        case "dc:title":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Title(r.Value.Trim());
                            }
                            break;

                        case "dc:creator":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Creator(r.Value.Trim());
                            }
                            break;

                        case "dc:subject":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Subject(r.Value.Trim());
                            }
                            break;

                        case "dc:description":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Description(r.Value.Trim());
                            }
                            break;

                        case "dc:publisher":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Publisher(r.Value.Trim());
                            }
                            break;

                        case "dc:contributor":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Contributor(r.Value.Trim());
                            }
                            break;

                        case "dc:date":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Date(r.Value.Trim());
                            }
                            break;

                        case "dc:type":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Type(r.Value.Trim());
                            }
                            break;

                        case "dc:format":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Format(r.Value.Trim());
                            }
                            break;

                        case "dc:source":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Source(r.Value.Trim());
                            }
                            break;

                        case "dc:identifier":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Identifier(r.Value.Trim());
                            }
                            break;

                        case "dc:language":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Language(r.Value.Trim());
                            }
                            break;

                        case "dc:relation":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Relation(r.Value.Trim());
                            }
                            break;

                        case "dc:coverage":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Coverage(r.Value.Trim());
                            }
                            break;

                        case "dc:rights":
                            r.Read();
                            if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                            {
                                thisRecord.Add_Rights(r.Value.Trim());
                            }
                            break;
                        }
                    }
                    else if ((r.NodeType == XmlNodeType.EndElement) && (r.Name == "record"))
                    {
                        inRecord = false;
                        returnValue.Add_Record(thisRecord);
                    }
                }
                else
                {
                    if ((r.NodeType == XmlNodeType.Element) && (r.Name == "record"))
                    {
                        inRecord   = true;
                        thisRecord = new OAI_Repository_DublinCore_Record();
                    }

                    if ((r.NodeType == XmlNodeType.Element) && (r.Name == "resumptionToken"))
                    {
                        r.Read();
                        if ((r.NodeType == XmlNodeType.Text) && (r.Value.Trim().Length > 0))
                        {
                            returnValue.Resumption_Token = r.Value;
                        }
                        break;
                    }
                }
            }
        }
 /// <summary> Adds a record to the collection of records </summary>
 /// <param name="New_Record"> New record to add </param>
 public void Add_Record(OAI_Repository_DublinCore_Record New_Record)
 {
     records.Add(New_Record);
 }
Esempio n. 5
0
 /// <summary> Adds a record to the collection of records </summary>
 /// <param name="New_Record"> New record to add </param>
 public void Add_Record(OAI_Repository_DublinCore_Record New_Record)
 {
     records.Add(New_Record);
 }