コード例 #1
0
ファイル: DumpedDataProvider.cs プロジェクト: atk0dev/Baraban
        /// <summary>
        /// Loads the media.
        /// </summary>
        /// <param name="groupId">The group id.</param>
        /// <param name="from">Image From.</param>
        /// <param name="count">The count.</param>
        /// <returns>
        /// List of DumpedMediaFiles
        /// </returns>
        /// <exception cref="System.Exception">Unable to find TempWebFolder setting.</exception>
        public IEnumerable <DumpedMediaFile> LoadMedia(int groupId, int from, int count)
        {
            if (string.IsNullOrEmpty(this.tempFolder))
            {
                throw new Exception("Unable to find TempWebFolder setting.");
            }

            var dumpedList = new List <DumpedMediaFile>();

            IStoreDataSource  ds = new StoreDataProvider(this.connectionString);
            List <MediaDraft> list;

            if (groupId == 0)
            {
                list = ds.LoadAllMedia().ToList();
            }
            else
            {
                list = ds.LoadPartMedia(groupId, from, count).ToList();
            }

            var threadList = new List <Thread>();

            foreach (var item in list)
            {
                var cachedItem = this.ReadItemFromCache(item.Id);
                if (cachedItem != null)
                {
                    this.logger.Info(string.Format("Reading image from cache. Image Id = {0}", item.Id));
                    dumpedList.Add(cachedItem);
                }
                else
                {
                    this.logger.Info(string.Format("Dumping image and putting to cache. Image Id = {0}", item.Id));

                    if (item.ServerFilePath != null)
                    {
                        string guid          = Guid.NewGuid().ToString();
                        string localFileName = Path.GetFileName(item.ServerFilePath).Replace(" ", string.Empty);

                        string currentFolder = Path.Combine(this.tempFolder, guid);
                        Directory.CreateDirectory(currentFolder);

                        var di = new DumpedMediaFile();
                        di.Thumbnail.LocalFilePath = Path.Combine(
                            currentFolder, string.Format("{0}_{1}_{2}", item.Id, this.thumbnailLiteral, localFileName));
                        di.Preview.LocalFilePath = Path.Combine(
                            currentFolder, string.Format("{0}_{1}_{2}", item.Id, this.previewLiteral, localFileName));
                        di.Fullsize.LocalFilePath = Path.Combine(
                            currentFolder, string.Format("{0}_{1}_{2}", item.Id, this.fullsizeLiteral, localFileName));

                        di.Id      = item.Id;
                        di.GroupId = item.GroupId;

                        threadList.Add(this.SaveFileToLocalTemp(di, item.Media, item.FileSize));

                        di.FileDateTime = item.FileDateTime;

                        di.Thumbnail.GlobalFileUrl = string.Format(
                            @"/temp/{0}/{1}",
                            guid,
                            string.Format("{0}_{1}_{2}", item.Id, this.thumbnailLiteral, localFileName));
                        di.Preview.GlobalFileUrl = string.Format(
                            @"temp/{0}/{1}",
                            guid,
                            string.Format("{0}_{1}_{2}", item.Id, this.previewLiteral, localFileName));
                        di.Fullsize.GlobalFileUrl = string.Format(
                            @"temp/{0}/{1}",
                            guid,
                            string.Format("{0}_{1}_{2}", item.Id, this.fullsizeLiteral, localFileName));

                        this.AddItemToCache(di);

                        dumpedList.Add(di);
                    }
                }
            }

            foreach (var thread in threadList)
            {
                thread.Join();
            }

            return(dumpedList);
        }
コード例 #2
0
ファイル: DumpedDataProvider.cs プロジェクト: atk0dev/Baraban
        /// <summary>
        /// Gets the images count.
        /// </summary>
        /// <returns>Images count</returns>
        public int GetImagesCount()
        {
            IStoreDataSource ds = new StoreDataProvider(this.connectionString);

            return(ds.GetImagesCount());
        }