예제 #1
0
        /// <summary>
        /// Creates string of tags related to resource
        /// </summary>
        /// <param name="metadata">the associated metadata</param>
        /// <param name="resource"> core.resource  </param>
        private static void AddResourceTags(XElement metadata, ScholarlyWorks.ScholarlyWorkItem resource)
        {
            if (null == metadata || null == resource)
            {
                return;
            }

            resource.Tags.ToList().ForEach(delegate(ScholarlyWorks.Tag tag)
            {
                if (!String.IsNullOrEmpty(tag.Name))
                {
                    metadata.Add(MetadataProviderHelper.GetElement(MetadataProviderHelper.Metadata_Subject, tag.Name));
                }
            });
        }
예제 #2
0
        /// <summary>
        /// Creates header element
        /// </summary>
        /// <param name="resource"> resource object</param>
        /// <returns> instance of XElement </returns>
        internal XElement GetHeaderElement(Core.Resource resource)
        {
            XElement header = null;

            header = new XElement(Header);

            header.Add(MetadataProviderHelper.GetElement(Header_Identifier, resource.Id.ToString()));
            header.Add(MetadataProviderHelper.GetElement(Header_DateStamp, resource.DateModified.Value.ToString(MetadataProviderHelper.DateTimeGranularity, CultureInfo.InvariantCulture)));

            ResourceType resourceTypeInfo = new CoreHelper(entityConnectionString).GetResourceType(resource);

            if (resourceTypeInfo != null)
            {
                List <string> listOfResourceTypeInfo = new CoreHelper(entityConnectionString).GetResourceTypeHierarchy(resourceTypeInfo);
                listOfResourceTypeInfo.ForEach(delegate(string resourceType)
                {
                    header.Add(MetadataProviderHelper.GetElement(Header_SetSpec, resourceType));
                });
            }
            return(header);
        }
예제 #3
0
        /// <summary>
        /// Creates metadata element
        /// </summary>
        /// <param name="resource"> resource object </param>
        /// <returns> an instance of XElement </returns>
        internal static XElement GetMetadataElement(Core.Resource resource)
        {
            XElement metadata = null;

            metadata = new XElement(Metadata);

            if (!String.IsNullOrEmpty(resource.Title))
            {
                metadata.Add(MetadataProviderHelper.GetElement(Metadata_Title, resource.Title));
            }

            ScholarlyWorks.ScholarlyWork scholarlyWorks = resource as ScholarlyWorks.ScholarlyWork;
            if (null != scholarlyWorks)
            {
                if (scholarlyWorks.Authors != null)
                {
                    MetadataProviderHelper.AddResourceAuthors(metadata, scholarlyWorks);
                }
                if (scholarlyWorks.Contributors != null)
                {
                    MetadataProviderHelper.AddResourceContributors(metadata, scholarlyWorks);
                }
            }

            // TODO : 2.Currently Tags for a given resource are retrieved without
            //          checking any relationships, but the implementation needs to be changed if required
            ScholarlyWorks.ScholarlyWorkItem scholarlyWorkItem = resource as ScholarlyWorks.ScholarlyWorkItem;
            if (scholarlyWorkItem != null && scholarlyWorkItem.Tags != null)
            {
                MetadataProviderHelper.AddResourceTags(metadata, scholarlyWorkItem);
            }

            metadata.Add(MetadataProviderHelper.GetElement(Metadata_Description, resource.Description));

            if (!String.IsNullOrEmpty(resource.DateModified.Value.ToString()))
            {
                metadata.Add(MetadataProviderHelper.GetElement(Metadata_Date, resource.DateModified.Value.ToString(DateTimeGranularity, CultureInfo.InvariantCulture)));
            }
            return(metadata);
        }
예제 #4
0
        /// <summary>
        /// retrieves contributors of resource and adds them to the associated metadata element
        /// </summary>
        /// <param name="metadata">the associated metadata</param>
        /// <param name="scholarlyWorks">scholarlyWorks object whose contributors to be retrieved</param>
        private static void AddResourceContributors(XElement metadata, ScholarlyWorks.ScholarlyWork scholarlyWorks)
        {
            if (null == metadata || null == scholarlyWorks)
            {
                return;
            }

            scholarlyWorks.Contributors.ToList().ForEach(delegate(ScholarlyWorks.Contact contact)
            {
                ScholarlyWorks.Person person = contact as ScholarlyWorks.Person;
                string personDetails         = string.Empty;
                if (null != person)
                {
                    personDetails = CoreHelper.GetCompleteName(person.FirstName, person.MiddleName, person.LastName);
                    //In case if any other details are to be added then they can be added here
                }

                if (!string.IsNullOrEmpty(personDetails))
                {
                    metadata.Add(MetadataProviderHelper.GetElement(MetadataProviderHelper.Metadata_Contributor, personDetails));
                }
            });
        }