/// <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;
            }
        }
예제 #2
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);
        }
예제 #3
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);
        }
        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);
     }
 }
예제 #6
0
        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;
 }