示例#1
0
        /// <summary>
        /// Performs the given <see cref="IPreviewQuery"/>
        /// </summary>
        /// <param name="query">The query to perform</param>
        public static void GetPreview(IPreviewQuery query)
        {
            if (DualityApp.ExecContext == DualityApp.ExecutionContext.Terminated)
            {
                return;
            }
            if (query == null)
            {
                return;
            }

            // Query all IPreviewGenerator instances that match the specified query
            var generators = (
                from g in previewGenerators
                orderby query.SourceFits(g.ObjectType) descending, g.Priority descending
                select g).ToArray();

            // Iterate over available generators until one can handle the preview query
            foreach (IPreviewGenerator gen in generators)
            {
                if (!query.TransformSource(gen.ObjectType))
                {
                    continue;
                }

                gen.Perform(query);

                if (query.Result != null)
                {
                    break;
                }
            }
        }
示例#2
0
        public PagedResponse <T> CreatePagedReponse <T>(IList <T> data,
                                                        Type type,
                                                        IPreviewQuery query,
                                                        ResponseStatus status,
                                                        string version) where T : BaseModel
        {
            var linkAttributes = GetLinkAttributes(type);

            data.ToList().ForEach(d =>
            {
                linkAttributes.ForEach(l => l.Id = d.Id);
                var links = _linkFactory.CreateLinks(linkAttributes);
                d.AddLinks(links);
            });

            return(new PagedResponse <T>
            {
                Data = data,
                Pagination = new Pagination
                {
                    TotalRecords = data.Count,
                    PageCount = query.GetTotalPages(data.Count),
                    PageNumber = query.PageNumber,
                    HasNext = query.HasNext(data.Count),
                    HasPrevious = query.HasPrevious(),
                    PageSize = query.PageSize
                },
                Status = status.ToString(),
                Version = version,
                Metadata = new List <MetaData>()
            });
        }
        void IPreviewGenerator.Perform(IPreviewQuery query)
        {
            PreviewImageQuery imgQuery = query as PreviewImageQuery;

            if (imgQuery != null)
            {
                this.Perform((T)query.Source, imgQuery);
                return;
            }
        }
示例#4
0
		public static void GetPreview(IPreviewQuery query)
		{
			if (DualityApp.ExecContext == DualityApp.ExecutionContext.Terminated) return;
			if (query == null) return;

			// Query all IPreviewGenerator instances that match the specified query
			var generators = (
				from g in previewGenerators
				orderby query.SourceFits(g.ObjectType) descending, g.Priority descending
				select g).ToArray();

			// Iterate over available generators until one can handle the preview query
			foreach (IPreviewGenerator gen in generators)
			{
				if (!query.TransformSource(gen.ObjectType)) continue;

				gen.Perform(query);

				if (query.Result != null) break;
			}
		}
示例#5
0
        public static void GetPreview(IPreviewQuery query)
        {
            if (DualityApp.ExecContext == DualityApp.ExecutionContext.Terminated)
            {
                return;
            }
            if (query == null)
            {
                return;
            }

            //System.Diagnostics.Stopwatch w = new System.Diagnostics.Stopwatch();
            //w.Restart();

            var generators = (
                from g in CorePluginRegistry.GetPreviewGenerators()
                orderby query.SourceFits(g.ObjectType) descending, g.Priority descending
                select g).ToArray();

            foreach (IPreviewGenerator gen in generators)
            {
                if (!query.TransformSource(gen.ObjectType))
                {
                    continue;
                }

                gen.Perform(query);

                if (query.Result != null)
                {
                    break;
                }
            }

            //Log.Editor.Write("Generating preview for {0} / {1} took {2:F} ms", query.OriginalSource, query.GetType().Name, w.Elapsed.TotalMilliseconds);
        }