コード例 #1
0
 public static void Register(TakeOperation operation, IDataRuleCodeSnippet codeSnippet)
 {
     lock (hashtable)
     {
         hashtable[operation] = codeSnippet;
     }
 }
コード例 #2
0
 public static void Register(TakeOperation operation, IDataRuleCodeSnippet codeSnippet)
 {
     lock (hashtable)
     {
         hashtable[operation] = codeSnippet;
     }
 }
コード例 #3
0
ファイル: HttpDataRule.cs プロジェクト: nguyenhuy2911/CMS
        public object Execute(DataRuleContext dataRuleContext, TakeOperation operation, int cacheDuration)
        {
            var url = EvaluateStringFormulas(this.URL, dataRuleContext);
            NameValueCollection form    = KeyValuesToNameValueCollection(dataRuleContext, this.FormData);
            NameValueCollection headers = KeyValuesToNameValueCollection(dataRuleContext, this.Headers);

            var httpDataRequest = Kooboo.CMS.Common.Runtime.EngineContext.Current.Resolve <IHttpDataRequest>();

            return(httpDataRequest.GetData(url, this.HttpMethod, ContentType, form, headers));
        }
コード例 #4
0
        private static object GetCacheData(TakeOperation operation, IContentQuery <TextContent> contentQuery, CacheItemPolicy policy, Func <object> getData)
        {
            string cacheKey = "TakeOperation:" + operation.ToString() + " " + TextTranslator.Translate(contentQuery);
            var    data     = ObjectCache.Get(cacheKey, CacheRegionName);

            if (data == null)
            {
                data = getData();
                ObjectCache.AddOrGetExisting(cacheKey, data, policy, CacheRegionName);
            }
            return(data);
        }
コード例 #5
0
ファイル: WebFormTemplateEngine.cs プロジェクト: Epitomy/CMS
        public IDataRuleCodeSnippet GetDataRuleCodeSnippet(TakeOperation takeOperation)
        {
            switch (takeOperation)
            {
                case TakeOperation.List:
                    return new WebFormListCodeSnippet();

                case TakeOperation.First:
                    return new WebFormDetailCodeSnippet();
                default:
                    return null;
            }
        }
コード例 #6
0
 public Kooboo.CMS.Sites.View.CodeSnippet.IDataRuleCodeSnippet GetDataRuleCodeSnippet(TakeOperation takeOperation)
 {
     switch (takeOperation)
     {
         case TakeOperation.List:
             return new NVelocityListCodeSnippet();
         case TakeOperation.First:
             return new NVelocityDetailCodeSnippet();
         case TakeOperation.Count:
         default:
             return null;
     }
 }
コード例 #7
0
ファイル: RazorTemplateEngine.cs プロジェクト: Epitomy/CMS
 public IDataRuleCodeSnippet GetDataRuleCodeSnippet(TakeOperation takeOperation)
 {
     switch (takeOperation)
     {
         case TakeOperation.List:
             return new RazorListCodeSnippet();
         case TakeOperation.First:
             return new RazorDetailCodeSnippet();
         case TakeOperation.Count:
         default:
             return null;
     }
 }
コード例 #8
0
        public IDataRuleCodeSnippet GetDataRuleCodeSnippet(TakeOperation takeOperation)
        {
            switch (takeOperation)
            {
            case TakeOperation.List:
                return(new WebFormListCodeSnippet());

            case TakeOperation.First:
                return(new WebFormDetailCodeSnippet());

            default:
                return(null);
            }
        }
コード例 #9
0
        public IDataRuleCodeSnippet GetDataRuleCodeSnippet(TakeOperation takeOperation)
        {
            switch (takeOperation)
            {
            case TakeOperation.List:
                return(new RazorListCodeSnippet());

            case TakeOperation.First:
                return(new RazorDetailCodeSnippet());

            case TakeOperation.Count:
            default:
                return(null);
            }
        }
コード例 #10
0
        private static object GetData(IContentQuery <TextContent> contentQuery, TakeOperation operation, int cacheDuration)
        {
            if (cacheDuration > 0)
            {
                var policy = new CacheItemPolicy()
                {
                    SlidingExpiration = TimeSpan.FromSeconds(cacheDuration)
                };
                switch (operation)
                {
                case TakeOperation.First:
                    var lazyFirst = contentQuery.LazyFirstOrDefault();
                    return(GetCacheData(contentQuery, operation, policy, () => lazyFirst.Value));

                case TakeOperation.Count:
                    var lazyCount = contentQuery.LazyCount();
                    return(GetCacheData(contentQuery, operation, policy, () => lazyCount.Value));

                case TakeOperation.List:
                default:
                    return(GetCacheData(contentQuery, operation, policy, () => contentQuery.ToArray()));
                }
            }
            else
            {
                switch (operation)
                {
                case TakeOperation.First:
                    return(contentQuery.FirstOrDefault());

                case TakeOperation.Count:
                    return(contentQuery.Count());

                case TakeOperation.List:
                default:
                    return(contentQuery.ToArray());
                }
            }
        }
コード例 #11
0
        public Kooboo.CMS.Sites.View.CodeSnippet.IDataRuleCodeSnippet GetDataRuleCodeSnippet(TakeOperation takeOperation)
        {
            switch (takeOperation)
            {
            case TakeOperation.List:
                return(new NVelocityListCodeSnippet());

            case TakeOperation.First:
                return(new NVelocityDetailCodeSnippet());

            case TakeOperation.Count:
            default:
                return(null);
            }
        }
コード例 #12
0
ファイル: DataRuleExecutor.cs プロジェクト: kooboo-jifeng/CMS
 private static object GetCacheData(TakeOperation operation, IContentQuery<TextContent> contentQuery, CacheItemPolicy policy, Func<object> getData)
 {
     string cacheKey = "TakeOperation:" + operation.ToString() + " " + TextTranslator.Translate(contentQuery);
     var data = ObjectCache.Get(cacheKey, CacheRegionName);
     if (data == null)
     {
         data = getData();
         ObjectCache.AddOrGetExisting(cacheKey, data, policy, CacheRegionName);
     }
     return data;
 }
コード例 #13
0
ファイル: DataRuleBase.cs プロジェクト: eyouyou/Bsc
 private static object GetData(IContentQuery<TextContent> contentQuery, TakeOperation operation,
     int cacheDuration)
 {
     if (cacheDuration > 0)
     {
         var policy = new CacheItemPolicy() {SlidingExpiration = TimeSpan.FromSeconds(cacheDuration)};
         switch (operation)
         {
             case TakeOperation.First:
                 var lazyFirst = contentQuery.LazyFirstOrDefault();
                 return GetCacheData(contentQuery, operation, policy, () => lazyFirst.Value);
             case TakeOperation.Count:
                 var lazyCount = contentQuery.LazyCount();
                 return GetCacheData(contentQuery, operation, policy, () => lazyCount.Value);
             case TakeOperation.List:
             default:
                 return GetCacheData(contentQuery, operation, policy, () => contentQuery.ToArray());
         }
     }
     else
     {
         switch (operation)
         {
             case TakeOperation.First:
                 return contentQuery.FirstOrDefault();
             case TakeOperation.Count:
                 return contentQuery.Count();
             case TakeOperation.List:
             default:
                 return contentQuery.ToArray();
         }
     }
 }
コード例 #14
0
ファイル: DataRuleBase.cs プロジェクト: eyouyou/Bsc
        public object Execute(DataRuleContext dataRuleContext, TakeOperation operation, int cacheDuration)
        {
            var contentQuery = this.GetContentQuery(dataRuleContext);
            object data = contentQuery;

            if (!string.IsNullOrEmpty(this.SortField))
            {
                if (this.SortDirection == DataRule.SortDirection.Ascending)
                {
                    contentQuery = contentQuery.OrderBy(this.SortField);
                }
                else
                {
                    contentQuery = contentQuery.OrderByDescending(this.SortField);
                }
            }
            if (this.EnablePaging.Value)
            {
                string pageIndexParameterName;
                var pageIndexValue = ParameterizedFieldValue.GetFieldValue(this.PageIndex, dataRuleContext.ValueProvider,
                    out pageIndexParameterName);
                var intPageIndexValue = 1;
                int.TryParse(pageIndexValue, out intPageIndexValue);
                if (intPageIndexValue < 1)
                {
                    intPageIndexValue = 1;
                }

                var intPageSize = 10;
                if (string.IsNullOrEmpty(this.Top))
                {
                    string pageSizeParameterName;
                    var pageSizeValue = ParameterizedFieldValue.GetFieldValue(this.PageSize,
                        dataRuleContext.ValueProvider, out pageSizeParameterName);

                    int.TryParse(pageSizeValue, out intPageSize);
                    if (intPageSize < 1)
                    {
                        intPageSize = 10;
                    }
                }
                else
                {
                    string fieldName;
                    var topValue = ParameterizedFieldValue.GetFieldValue(this.Top, dataRuleContext.ValueProvider,
                        out fieldName);
                    int.TryParse(topValue, out intPageSize);
                }

                var totalCount = contentQuery.Count();

                data = new DataRulePagedList(contentQuery.Skip((intPageIndexValue - 1)*intPageSize).Take(intPageSize)
                    , intPageIndexValue
                    , intPageSize
                    , totalCount)
                {
                    PageIndexParameterName = pageIndexParameterName
                };
            }
            else if (!string.IsNullOrEmpty(this.Top))
            {
                string fieldName;
                var topValue = ParameterizedFieldValue.GetFieldValue(this.Top, dataRuleContext.ValueProvider,
                    out fieldName);
                var intTopValue = 1;
                int.TryParse(topValue, out intTopValue);

                data = contentQuery.Take(intTopValue);
            }
            else
            {
                data = contentQuery;
            }

            if (data is IContentQuery<ContentBase>)
            {
                data = GetData((IContentQuery<TextContent>) data, operation, cacheDuration);
            }

            return data;
        }
コード例 #15
0
ファイル: HttpDataRule.cs プロジェクト: eyouyou/Bsc
        public object Execute(DataRuleContext dataRuleContext, TakeOperation operation, int cacheDuration)
        {
            var url = EvaluateStringFormulas(this.URL, dataRuleContext);
            NameValueCollection form = KeyValuesToNameValueCollection(dataRuleContext, this.FormData);
            NameValueCollection headers = KeyValuesToNameValueCollection(dataRuleContext, this.Headers);

            var httpDataRequest = Bsc.Dmtds.Core.Runtime.EngineContext.Current.Resolve<IHttpDataRequest>();
            return httpDataRequest.GetData(url, this.HttpMethod, ContentType, form, headers);
        }
コード例 #16
0
        public object Execute(DataRuleContext dataRuleContext, TakeOperation operation, int cacheDuration)
        {
            var    contentQuery = this.GetContentQuery(dataRuleContext);
            object data         = contentQuery;

            if (!string.IsNullOrEmpty(this.SortField))
            {
                if (this.SortDirection == DataRule.SortDirection.Ascending)
                {
                    contentQuery = contentQuery.OrderBy(this.SortField);
                }
                else
                {
                    contentQuery = contentQuery.OrderByDescending(this.SortField);
                }
            }
            if (this.EnablePaging.Value)
            {
                string pageIndexParameterName;
                var    pageIndexValue    = ParameterizedFieldValue.GetFieldValue(this.PageIndex, dataRuleContext.ValueProvider, out pageIndexParameterName);
                var    intPageIndexValue = 1;
                int.TryParse(pageIndexValue, out intPageIndexValue);
                if (intPageIndexValue < 1)
                {
                    intPageIndexValue = 1;
                }

                string pageSizeParameterName;
                var    pageSizeValue = ParameterizedFieldValue.GetFieldValue(this.PageSize, dataRuleContext.ValueProvider, out pageSizeParameterName);
                var    intPageSize   = 10;
                int.TryParse(pageSizeValue, out intPageSize);
                if (intPageSize < 1)
                {
                    intPageSize = 10;
                }

                var totalCount = contentQuery.Count();

                data = new DataRulePagedList(contentQuery.Skip((intPageIndexValue - 1) * intPageSize).Take(intPageSize)
                                             , intPageIndexValue
                                             , intPageSize
                                             , totalCount)
                {
                    PageIndexParameterName = pageIndexParameterName
                };
            }
            else if (!string.IsNullOrEmpty(this.Top))
            {
                string fieldName;
                var    topValue    = ParameterizedFieldValue.GetFieldValue(this.Top, dataRuleContext.ValueProvider, out fieldName);
                var    intTopValue = 1;
                int.TryParse(topValue, out intTopValue);

                data = contentQuery.Take(intTopValue);
            }
            else
            {
                data = contentQuery;
            }


            if (data is IContentQuery <ContentBase> )
            {
                data = GetData((IContentQuery <TextContent>)data, operation, cacheDuration);
            }

            return(data);
        }