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 } } }); }
/// <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; }
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); }
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); }
/// <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))); }
/// <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); } }
/// <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; }