private EntityModelData CreateEntityModelData(IComponentMeta componentMeta)
        {
            ContentModelData standardMeta = new ContentModelData();

            foreach (DictionaryEntry entry in componentMeta.CustomMeta.NameValues)
            {
                standardMeta.Add(entry.Key.ToString(), ((NameValuePair)entry.Value).Value);
            }

            // The semantic mapping requires that some metadata fields exist. This may not be the case so we map some component meta properties onto them
            // if they don't exist.
            if (!standardMeta.ContainsKey("dateCreated"))
            {
                standardMeta.Add("dateCreated", componentMeta.LastPublicationDate);
            }
            if (!standardMeta.ContainsKey("name"))
            {
                standardMeta.Add("name", componentMeta.Title);
            }

            return(new EntityModelData
            {
                Id = componentMeta.Id.ToString(),
                SchemaId = componentMeta.SchemaId.ToString(),
                Metadata = new ContentModelData {
                    { "standardMeta", standardMeta }
                }
            });
        }
Exemplo n.º 2
0
        /// <summary>
        /// Converts a <see cref="T:Tridion.ContentDelivery.Meta.IComponentMeta" /> to a <see cref="T:TcmCDService.Contracts.ComponentMeta" /> data contract.
        /// </summary>
        /// <param name="componentMeta"><see cref="T:Tridion.ContentDelivery.Meta.IComponentMeta" /></param>
        /// <returns><see cref="T:TcmCDService.Contracts.ComponentMeta" /></returns>
        internal static Contracts.ComponentMeta ToContract(this IComponentMeta componentMeta)
        {
            if (componentMeta != null)
            {
                return new Contracts.ComponentMeta()
                       {
                           Author                 = componentMeta.Author,
                           CreationDate           = componentMeta.CreationDate,
                           CustomMeta             = componentMeta.CustomMeta.ToContract(),
                           Id                     = componentMeta.Id,
                           InitialPublicationDate = componentMeta.InitialPublicationDate,
                           IsMultimedia           = componentMeta.IsMultimedia,
                           LastPublicationDate    = componentMeta.LastPublicationDate,
                           MajorVersion           = componentMeta.MajorVersion,
                           MinorVersion           = componentMeta.MinorVersion,
                           ModificationDate       = componentMeta.ModificationDate,
                           OwningPublicationId    = componentMeta.OwningPublicationId,
                           PublicationId          = componentMeta.PublicationId,
                           SchemaId               = componentMeta.SchemaId,
                           Title                  = componentMeta.Title
                       }
            }
            ;

            return(null);
        }
 private static Teaser GetTeaserFromMeta(IComponentMeta compMeta)
 {
     Teaser result = new Teaser
         {
             Link = new Link { Url = String.Format("tcm:{0}-{1}", compMeta.PublicationId, compMeta.Id) },
             Date = GetDateFromCustomMeta(compMeta.CustomMeta, "dateCreated") ?? compMeta.LastPublicationDate,
             Headline = GetTextFromCustomMeta(compMeta.CustomMeta, "name") ?? compMeta.Title,
             Text = GetTextFromCustomMeta(compMeta.CustomMeta, "introText")
         };
     return result;
 }
Exemplo n.º 4
0
        private static DateTime GetBinaryLastPublishDate(string urlPath, string publicationUri)
        {
            BinaryMeta binaryMeta = GetBinaryMeta(urlPath, publicationUri);

            if (binaryMeta == null || !binaryMeta.IsComponent)
            {
                return(DateTime.MinValue);
            }
            ComponentMetaFactory componentMetaFactory = new ComponentMetaFactory(publicationUri);
            IComponentMeta       componentMeta        = componentMetaFactory.GetMeta(binaryMeta.Id);

            return(componentMeta.LastPublicationDate);
        }
Exemplo n.º 5
0
        public DateTime GetBinaryLastPublishedDate(ILocalization localization, int binaryId)
        {
            BinaryMeta binaryMeta = GetBinaryMeta(localization, binaryId);

            if (binaryMeta == null || !binaryMeta.IsComponent)
            {
                return(DateTime.MinValue);
            }
            ComponentMetaFactory componentMetaFactory = new ComponentMetaFactory(int.Parse(localization.Id));
            IComponentMeta       componentMeta        = componentMetaFactory.GetMeta(binaryMeta.Id);

            return(componentMeta.LastPublicationDate);
        }
        private static Teaser GetTeaserFromMeta(IComponentMeta compMeta)
        {
            Teaser result = new Teaser
            {
                Link = new Link {
                    Url = String.Format("tcm:{0}-{1}", compMeta.PublicationId, compMeta.Id)
                },
                Date     = GetDateFromCustomMeta(compMeta.CustomMeta, "dateCreated") ?? compMeta.LastPublicationDate,
                Headline = GetTextFromCustomMeta(compMeta.CustomMeta, "name") ?? compMeta.Title,
                Text     = GetTextFromCustomMeta(compMeta.CustomMeta, "introText")
            };

            return(result);
        }
Exemplo n.º 7
0
        /// <summary>
        /// Retrieves the <see cref="T:TcmCDService.Contracts.ComponentMeta" /> for a given component id
        /// </summary>
        /// <param name="publicationId">Publication id as <see cref="T:System.Int32" /></param>
        /// <param name="componentId">Component id as <see cref="T:System.Int32" /></param>
        /// <returns>
        ///   <see cref="T:TcmCDService.Contracts.ComponentMeta" /> or null
        /// </returns>
        public Contracts.ComponentMeta ComponentMeta(int publicationId, int componentId)
        {
            Logger.Debug("ComponentMeta: publicationId \"{0}\", componentId \"{1}\".", publicationId, componentId);

            return(Cache.Get <Contracts.ComponentMeta>(
                       String.Format("ComponentMeta-{0}-{1}", publicationId, componentId),
                       () =>
            {
                using (IComponentMeta componentMeta = ContentDelivery.Meta.ComponentMetaCache.GetComponentMeta(publicationId, componentId))
                {
                    return componentMeta.ToContract();
                }
            },
                       CacheRegion.ItemMeta | CacheRegion.ComponentMeta | CacheRegion.ComponentPresentationMeta,
                       new TcmUri(publicationId, componentId)));
        }
Exemplo n.º 8
0
        /// <summary>
        /// Retrieves the <see cref="T:TcmCDService.Contracts.ComponentMeta" /> for a given component Uri
        /// </summary>
        /// <param name="componentUri">Component uri</param>
        /// <returns>
        ///   <see cref="T:TcmCDService.Contracts.ComponentMeta" />
        /// </returns>
        public Contracts.ComponentMeta ComponentMeta(String componentUri)
        {
            Logger.Debug("ComponentMeta: componentUri \"{0}\".", componentUri);

            return(Cache.Get <Contracts.ComponentMeta>(
                       String.Format("ComponentMeta-{0}", componentUri),
                       () =>
            {
                using (IComponentMeta componentMeta = ContentDelivery.Meta.ComponentMetaCache.GetComponentMeta(componentUri))
                {
                    return componentMeta.ToContract();
                }
            },
                       CacheRegion.ItemMeta | CacheRegion.ComponentMeta | CacheRegion.ComponentPresentationMeta,
                       componentUri));
        }
        public IEnumerable <Teaser> ExecuteQuery()
        {
            Criteria criteria = BuildCriteria();

            global::Tridion.ContentDelivery.DynamicContent.Query.Query query = new global::Tridion.ContentDelivery.DynamicContent.Query.Query(criteria);
            if (!String.IsNullOrEmpty(Sort) && Sort.ToLower() != "none")
            {
                query.AddSorting(GetSortParameter());
            }
            if (MaxResults > 0)
            {
                query.SetResultFilter(new LimitFilter(MaxResults));
            }
            if (PageSize > 0)
            {
                //We set the page size to one more than what we need, to see if there are more pages to come...
                query.SetResultFilter(new PagingFilter(Start, PageSize + 1));
            }
            try
            {
                ComponentMetaFactory componentMetaFactory = new ComponentMetaFactory(PublicationId);
                List <Teaser>        results = new List <Teaser>();
                string[]             ids     = query.ExecuteQuery();
                HasMore = ids.Length > PageSize;
                int count = 0;
                foreach (string compId in ids)
                {
                    if (count >= PageSize)
                    {
                        break;
                    }
                    IComponentMeta compMeta = componentMetaFactory.GetMeta(compId);
                    if (compMeta != null)
                    {
                        results.Add(GetTeaserFromMeta(compMeta));
                    }
                    count++;
                }
                return(results);
            }
            catch (Exception ex)
            {
                throw new DxaException("Error executing Broker Query", ex);
            }
        }
Exemplo n.º 10
0
        /// <summary>
        /// Creates a lightweight DD4T Component that contains enough information such that the semantic model builder can cope and build a strongly typed model from it.
        /// </summary>
        /// <param name="componentMeta">A <see cref="IComponentMeta"/> instance obtained from CD API.</param>
        /// <returns>A DD4T Component.</returns>
        private static DD4T.ContentModel.IComponent CreateComponent(IComponentMeta componentMeta)
        {
            DD4T.ContentModel.Component component = new DD4T.ContentModel.Component
            {
                Id = string.Format("tcm:{0}-{1}", componentMeta.PublicationId, componentMeta.Id),
                LastPublishedDate = componentMeta.LastPublicationDate,
                RevisionDate = componentMeta.ModificationDate,
                Schema = new DD4T.ContentModel.Schema
                {
                    PublicationId = componentMeta.PublicationId.ToString(),
                    Id = string.Format("tcm:{0}-{1}", componentMeta.PublicationId, componentMeta.SchemaId)
                },
                MetadataFields = new DD4T.ContentModel.FieldSet()
            };

            DD4T.ContentModel.FieldSet metadataFields = new DD4T.ContentModel.FieldSet();
            component.MetadataFields.Add("standardMeta", new DD4T.ContentModel.Field { EmbeddedValues = new List<DD4T.ContentModel.FieldSet> { metadataFields } });
            foreach (DictionaryEntry de in componentMeta.CustomMeta.NameValues)
            {
                object v = ((NameValuePair)de.Value).Value;
                if (v != null)
                {
                    string k = de.Key.ToString();
                    metadataFields.Add(k, new DD4T.ContentModel.Field
                    {
                        Name = k,
                        Values = new List<string> { v.ToString() }
                    });
                }
            }

            // The semantic mapping requires that some metadata fields exist. This may not be the case so we map some component meta properties onto them
            // if they don't exist.
            if (!metadataFields.ContainsKey("dateCreated"))
            {
                metadataFields.Add("dateCreated", new DD4T.ContentModel.Field { Name = "dateCreated", Values = new List<string> { componentMeta.LastPublicationDate.ToString() } });
            }

            if (!metadataFields.ContainsKey("name"))
            {
                metadataFields.Add("name", new DD4T.ContentModel.Field { Name = "name", Values = new List<string> { componentMeta.Title } });
            }

            return component;
        }