コード例 #1
0
ファイル: ImageFacade.cs プロジェクト: dhq-boiler/Sunctum
        public static IEnumerable <ImageViewModel> GetAllImages(IEnumerable <EntryViewModel> entries, DataOperationUnit dataOpUnit = null)
        {
            List <ImageViewModel>  ret        = new List <ImageViewModel>();
            Queue <EntryViewModel> targetPool = new Queue <EntryViewModel>(entries);

            while (targetPool.Count() > 0)
            {
                List <Guid> bookIds  = new List <Guid>();
                List <Guid> pageIds  = new List <Guid>();
                List <Guid> imageIds = new List <Guid>();
                int         count    = 0;

                var entry = targetPool.Dequeue();

                var book  = entry as BookViewModel;
                var page  = entry as PageViewModel;
                var image = entry as ImageViewModel;

                if (book != null)
                {
                    bookIds.Add(book.ID);
                    ++count;
                }
                if (page != null)
                {
                    pageIds.Add(page.ID);
                    ++count;
                }
                if (image != null)
                {
                    imageIds.Add(image.ID);
                    ++count;
                }

                if (targetPool.Count() == 0 || count == SpecificationDefaults.SQLITE_MAX_VARIABLE_NUMBER)
                {
                    try
                    {
                        ImageDao dao = new ImageDao();
                        ret.AddRange(dao.GetAllImages(bookIds, pageIds, imageIds, dataOpUnit?.CurrentConnection).ToViewModel());
                    }
                    catch (SQLiteException)
                    {
                        throw;
                    }
                }
            }

            return(ret);
        }