/// <summary> /// Populates a Dynamic List by executing the query it specifies. /// </summary> /// <param name="dynamicList">The Dynamic List which specifies the query and is to be populated.</param> /// <param name="localization">The context Localization.</param> public void PopulateDynamicList(DynamicList dynamicList, Localization localization) { using (new Tracer(dynamicList, localization)) { SimpleBrokerQuery simpleBrokerQuery = dynamicList.GetQuery(localization) as SimpleBrokerQuery; if (simpleBrokerQuery == null) { throw new DxaException($"Unexpected result from {dynamicList.GetType().Name}.GetQuery: {dynamicList.GetQuery(localization)}"); } BrokerQuery brokerQuery = new BrokerQuery(simpleBrokerQuery); string[] componentUris = brokerQuery.ExecuteQuery().ToArray(); Log.Debug($"Broker Query returned {componentUris.Length} results. HasMore={brokerQuery.HasMore}"); if (componentUris.Length > 0) { Type resultType = dynamicList.ResultType; ComponentMetaFactory componentMetaFactory = new ComponentMetaFactory(localization.GetCmUri()); dynamicList.QueryResults = componentUris .Select(c => ModelBuilderPipeline.CreateEntityModel(CreateEntityModelData(componentMetaFactory.GetMeta(c)), resultType, localization)) .ToList(); } dynamicList.HasMore = brokerQuery.HasMore; } }
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); }
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); } }
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); } }
internal IEnumerable<EntityModel> ExecuteQuery(Type resultType) { Criteria criteria = BuildCriteria(); global::Tridion.ContentDelivery.DynamicContent.Query.Query query = new global::Tridion.ContentDelivery.DynamicContent.Query.Query(criteria); if (!string.IsNullOrEmpty(_queryParameters.Sort) && _queryParameters.Sort.ToLower() != "none") { query.AddSorting(GetSortParameter()); } if (_queryParameters.MaxResults > 0) { query.SetResultFilter(new LimitFilter(_queryParameters.MaxResults)); } if (_queryParameters.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(_queryParameters.Start, _queryParameters.PageSize + 1)); } try { List<EntityModel> models = new List<EntityModel>(); string[] componentIds = query.ExecuteQuery(); if (componentIds == null || componentIds.Length == 0) { return models; } ComponentMetaFactory componentMetaFactory = new ComponentMetaFactory(_queryParameters.PublicationId); int pageSize = _queryParameters.PageSize; int count = 0; foreach (string componentId in componentIds) { IComponentMeta componentMeta = componentMetaFactory.GetMeta(componentId); DD4T.ContentModel.IComponent dd4tComponent = CreateComponent(componentMeta); EntityModel model = ModelBuilderPipeline.CreateEntityModel(dd4tComponent, resultType, _queryParameters.Localization); models.Add(model); if (++count == pageSize) { break; } } HasMore = componentIds.Length > count; return models; } catch (Exception ex) { throw new DxaException("Error executing Broker Query", ex); } }
private static DateTime GetBinaryLastPublishDate(string urlPath, int publicationId) { BinaryMeta binaryMeta = GetBinaryMeta(urlPath, publicationId); if (binaryMeta == null || !binaryMeta.IsComponent) { return DateTime.MinValue; } ComponentMetaFactory componentMetaFactory = new ComponentMetaFactory(publicationId); IComponentMeta componentMeta = componentMetaFactory.GetMeta(binaryMeta.Id); return componentMeta.LastPublicationDate; }