コード例 #1
0
ファイル: FieldTypeCache.cs プロジェクト: shelsonjava/Rock
        /// <summary>
        /// Returns FieldType object from cache.  If fieldType does not already exist in cache, it
        /// will be read and added to cache
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static FieldTypeCache Read(int id)
        {
            string cacheKey = FieldTypeCache.CacheKey(id);

            ObjectCache    cache     = MemoryCache.Default;
            FieldTypeCache fieldType = cache[cacheKey] as FieldTypeCache;

            if (fieldType != null)
            {
                return(fieldType);
            }
            else
            {
                var fieldTypeService = new FieldTypeService();
                var fieldTypeModel   = fieldTypeService.Get(id);
                if (fieldTypeModel != null)
                {
                    fieldTypeModel.LoadAttributes();
                    fieldType = new FieldTypeCache(fieldTypeModel);

                    var cachePolicy = new CacheItemPolicy();
                    cache.Set(cacheKey, fieldType, cachePolicy);
                    cache.Set(fieldType.Guid.ToString(), fieldType.Id, cachePolicy);

                    return(fieldType);
                }
                else
                {
                    return(null);
                }
            }
        }
コード例 #2
0
ファイル: FieldTypeCache.cs プロジェクト: shelsonjava/Rock
        /// <summary>
        /// Reads the specified GUID.
        /// </summary>
        /// <param name="guid">The GUID.</param>
        /// <returns></returns>
        public static FieldTypeCache Read(Guid guid)
        {
            ObjectCache cache    = MemoryCache.Default;
            object      cacheObj = cache[guid.ToString()];

            if (cacheObj != null)
            {
                return(Read((int)cacheObj));
            }
            else
            {
                var fieldTypeService = new FieldTypeService();
                var fieldTypeModel   = fieldTypeService.Get(guid);
                if (fieldTypeModel != null)
                {
                    fieldTypeModel.LoadAttributes();
                    var fieldType = new FieldTypeCache(fieldTypeModel);

                    var cachePolicy = new CacheItemPolicy();
                    cache.Set(FieldTypeCache.CacheKey(fieldType.Id), fieldType, cachePolicy);
                    cache.Set(fieldType.Guid.ToString(), fieldType.Id, cachePolicy);

                    return(fieldType);
                }
                else
                {
                    return(null);
                }
            }
        }
コード例 #3
0
ファイル: FieldTypeCache.cs プロジェクト: jh2mhs8/Rock-ChMS
        /// <summary>
        /// Returns FieldType object from cache.  If fieldType does not already exist in cache, it
        /// will be read and added to cache
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static FieldTypeCache Read(int id)
        {
            string cacheKey = FieldTypeCache.CacheKey(id);

            ObjectCache    cache     = MemoryCache.Default;
            FieldTypeCache fieldType = cache[cacheKey] as FieldTypeCache;

            if (fieldType != null)
            {
                return(fieldType);
            }
            else
            {
                Rock.Model.FieldTypeService fieldTypeService = new Rock.Model.FieldTypeService();
                Rock.Model.FieldType        fieldTypeModel   = fieldTypeService.Get(id);
                if (fieldTypeModel != null)
                {
                    fieldType = CopyModel(fieldTypeModel);

                    cache.Set(cacheKey, fieldType, new CacheItemPolicy());

                    return(fieldType);
                }
                else
                {
                    return(null);
                }
            }
        }
コード例 #4
0
ファイル: FieldTypeCache.cs プロジェクト: jh2mhs8/Rock-ChMS
        /// <summary>
        /// Reads the specified field type model.
        /// </summary>
        /// <param name="fieldTypeModel">The field type model.</param>
        /// <returns></returns>
        public static FieldTypeCache Read(Rock.Model.FieldType fieldTypeModel)
        {
            string cacheKey = FieldTypeCache.CacheKey(fieldTypeModel.Id);

            ObjectCache    cache     = MemoryCache.Default;
            FieldTypeCache fieldType = cache[cacheKey] as FieldTypeCache;

            if (fieldType != null)
            {
                return(fieldType);
            }
            else
            {
                fieldType = FieldTypeCache.CopyModel(fieldTypeModel);
                cache.Set(cacheKey, fieldType, new CacheItemPolicy());

                return(fieldType);
            }
        }
コード例 #5
0
ファイル: FieldTypeCache.cs プロジェクト: shelsonjava/Rock
        /// <summary>
        /// Reads the specified field type model.
        /// </summary>
        /// <param name="fieldTypeModel">The field type model.</param>
        /// <returns></returns>
        public static FieldTypeCache Read(FieldType fieldTypeModel)
        {
            string cacheKey = FieldTypeCache.CacheKey(fieldTypeModel.Id);

            ObjectCache    cache     = MemoryCache.Default;
            FieldTypeCache fieldType = cache[cacheKey] as FieldTypeCache;

            if (fieldType != null)
            {
                return(fieldType);
            }
            else
            {
                fieldType = new FieldTypeCache(fieldTypeModel);

                var cachePolicy = new CacheItemPolicy();
                cache.Set(cacheKey, fieldType, cachePolicy);
                cache.Set(fieldType.Guid.ToString(), fieldType.Id, cachePolicy);

                return(fieldType);
            }
        }
コード例 #6
0
ファイル: FieldTypeCache.cs プロジェクト: shelsonjava/Rock
        /// <summary>
        /// Removes fieldType from cache
        /// </summary>
        /// <param name="id"></param>
        public static void Flush(int id)
        {
            ObjectCache cache = MemoryCache.Default;

            cache.Remove(FieldTypeCache.CacheKey(id));
        }
コード例 #7
0
ファイル: FieldTypeCache.cs プロジェクト: timothybaloyi/Rock
 /// <summary>
 /// Removes fieldType from cache
 /// </summary>
 /// <param name="id"></param>
 public static void Flush(int id)
 {
     FlushCache(FieldTypeCache.CacheKey(id));
     FlushCache("Rock:FieldType:All");
 }
コード例 #8
0
ファイル: FieldTypeCache.cs プロジェクト: timothybaloyi/Rock
 /// <summary>
 /// Reads the specified field type model.
 /// </summary>
 /// <param name="fieldTypeModel">The field type model.</param>
 /// <returns></returns>
 public static FieldTypeCache Read(FieldType fieldTypeModel)
 {
     return(GetOrAddExisting(FieldTypeCache.CacheKey(fieldTypeModel.Id),
                             () => LoadByModel(fieldTypeModel)));
 }
コード例 #9
0
ファイル: FieldTypeCache.cs プロジェクト: timothybaloyi/Rock
 /// <summary>
 /// Returns FieldType object from cache.  If fieldType does not already exist in cache, it
 /// will be read and added to cache
 /// </summary>
 /// <param name="id">The identifier.</param>
 /// <param name="rockContext">The rock context.</param>
 /// <returns></returns>
 public static FieldTypeCache Read(int id, RockContext rockContext = null)
 {
     return(GetOrAddExisting(FieldTypeCache.CacheKey(id),
                             () => LoadById(id, rockContext)));
 }