예제 #1
0
        internal static void InsertOrReplace(ThumbnailViewModel target, DataOperationUnit dataOpUnit = null)
        {
            ThumbnailDao dao = new ThumbnailDao();

            dao.InsertOrReplace(target.ToEntity(), dataOpUnit?.CurrentConnection);
            s_logger.Debug($"UPDATE Thumbnail:{target}");
        }
예제 #2
0
        private void CreateTaskToInsertAuthor(string name, DataOperationUnit dataOpUnit)
        {
            var author = new AuthorViewModel(Guid.NewGuid(), name);

            author    = AuthorFacade.InsertIfNotExists(author, dataOpUnit);
            _AuthorID = author.ID;
        }
예제 #3
0
        public static void IncrementPageIndex(Guid bookID, DataOperationUnit dataOpUnit = null)
        {
            PageDao dao = new PageDao();

            dao.IncrementPageIndex(bookID, dataOpUnit?.CurrentConnection);
            s_logger.Debug($"UPDATE Page bookId:{bookID}");
        }
예제 #4
0
 internal static void LoadAuthor(BookViewModel book, DataOperationUnit dataOpUnit = null)
 {
     if (book.AuthorID != Guid.Empty)
     {
         book.Author = AuthorFacade.FindBy(book.AuthorID, dataOpUnit);
     }
 }
예제 #5
0
        public static void Insert(BookViewModel target, DataOperationUnit dataOpUnit = null)
        {
            BookDao dao = new BookDao();

            dao.Insert(target.ToEntity(), dataOpUnit?.CurrentConnection);
            s_logger.Debug($"INSERT Book:{target}");
        }
예제 #6
0
        public static void InsertOrReplace(ColorMap target, DataOperationUnit dataOpUnit = null)
        {
            ColorMapDao dao = new ColorMapDao();

            dao.InsertOrReplace(target, dataOpUnit?.CurrentConnection);
            s_logger.Debug($"INSERT OR REPLACE ColorMap:{target}");
        }
예제 #7
0
        public static void DeleteWhereIDIs(Guid id, DataOperationUnit dataOpUnit = null)
        {
            BookDao dao = new BookDao();

            dao.DeleteWhereIDIs(id, dataOpUnit?.CurrentConnection);
            s_logger.Debug($"DELETE Book:{id}");
        }
예제 #8
0
        public static void Update(ThumbnailViewModel target, DataOperationUnit dataOpUnit = null)
        {
            ThumbnailDao dao = new ThumbnailDao();

            dao.Update(target.ToEntity(), dataOpUnit?.CurrentConnection);
            s_logger.Debug($"UPDATE Thumbnail:{target}");
        }
예제 #9
0
        public static void BatchInsert(TagViewModel tag, IEnumerable <ImageViewModel> images)
        {
            if (images == null || images.Count() == 0)
            {
                s_logger.Warn("No images set.");
                return;
            }

            using (var dataOpUnit = new DataOperationUnit())
            {
                dataOpUnit.Open(ConnectionManager.DefaultConnection);

                ImageTagDao dao = new ImageTagDao();
                Queue <List <ImageViewModel> > processPool = Split(images);

                foreach (var process in processPool)
                {
                    try
                    {
                        dao.BatchInsert(tag.ToEntity(), process.Select(i => i.ToEntity()), dataOpUnit.CurrentConnection);
                    }
                    catch (Exception e)
                    {
                        s_logger.Error(e);
                    }
                }
            }
        }
예제 #10
0
 public CoverSegmenting(ILibrary libraryVM, PageViewModel page, CoverSideCandidate coverLeftSide, CoverSideCandidate coverRightSide, DataOperationUnit trans)
 {
     this.libraryVM      = libraryVM;
     this.page           = page;
     this.coverLeftSide  = coverLeftSide;
     this.coverRightSide = coverRightSide;
     this.trans          = trans;
 }
예제 #11
0
        private void CreateTaskToInsertImage(string entryName, string destination, DataOperationUnit dataOpUnit)
        {
            Guid imageID = Guid.NewGuid();

            InsertedImage          = new ImageViewModel(imageID, entryName, destination, Configuration.ApplicationConfiguration);
            InsertedImage.ByteSize = FileLength;
            ImageFacade.Insert(InsertedImage, dataOpUnit);
        }
예제 #12
0
        public static bool Exists(Guid imageId, DataOperationUnit dataOpUnit = null)
        {
            ThumbnailDao dao = new ThumbnailDao();

            return(dao.CountBy(new Dictionary <string, object>()
            {
                { "ImageID", imageId }
            }, dataOpUnit?.CurrentConnection) > 0);
        }
예제 #13
0
        protected void GenerateDeliverables(DataOperationUnit dataOpUnit)
        {
            BookFacade.GetProeprty(ref _book, dataOpUnit);

            if (_book.FirstPage != null && !_book.FirstPage.Image.ThumbnailLoaded || !_book.FirstPage.Image.ThumbnailGenerated)
            {
                ThumbnailGenerating.GenerateThumbnail(_book.FirstPage.Image);
            }
        }
예제 #14
0
        public static bool Exists(string name, DataOperationUnit dataOpUnit = null)
        {
            AuthorDao dao = new AuthorDao();

            return(dao.CountBy(new Dictionary <string, object>()
            {
                { "Name", name }
            }, dataOpUnit?.CurrentConnection) > 0);
        }
예제 #15
0
        public static int BookContentsCount(Guid bookID, DataOperationUnit dataOpUnit = null)
        {
            PageDao dao = new PageDao();

            return(dao.CountBy(new Dictionary <string, object>()
            {
                { "BookID", bookID }
            }, dataOpUnit?.CurrentConnection));
        }
예제 #16
0
        public static IEnumerable <Author> FindBy(string name, DataOperationUnit dataOpUnit = null)
        {
            AuthorDao dao = new AuthorDao();

            return(dao.FindBy(new Dictionary <string, object>()
            {
                { "Name", name }
            }, dataOpUnit?.CurrentConnection));
        }
예제 #17
0
        public static bool Exists(Guid authorID, DataOperationUnit dataOpUnit = null)
        {
            AuthorDao dao = new AuthorDao();

            return(dao.CountBy(new Dictionary <string, object>()
            {
                { "ID", authorID }
            }, dataOpUnit?.CurrentConnection) > 0);
        }
예제 #18
0
        public static bool Exists(ColorMap entity, DataOperationUnit dataOpUnit = null)
        {
            ColorMapDao dao = new ColorMapDao();

            return(dao.CountBy(new Dictionary <string, object>()
            {
                { "BookID", entity.BookID }, { "Channel", entity.Channel }, { "ValueOrder", entity.ValueOrder }
            }, dataOpUnit?.CurrentConnection) > 0);
        }
예제 #19
0
        public static AuthorViewModel FindBy(Guid id, DataOperationUnit dataOpUnit = null)
        {
            AuthorDao dao = new AuthorDao();

            return(dao.FindBy(new Dictionary <string, object>()
            {
                { "ID", id }
            }, dataOpUnit?.CurrentConnection).SingleOrDefault().ToViewModel());
        }
예제 #20
0
        private void CreateTaskToInsertPage(string entryName, DataOperationUnit dataOpUnit)
        {
            Guid pageID = Guid.NewGuid();

            GeneratedPage = new PageViewModel(pageID, entryName);
            GeneratedPage.Configuration = Configuration.ApplicationConfiguration;
            GeneratedPage.ImageID       = InsertedImage.ID;
            GeneratedPage.BookID        = BookID;
            GeneratedPage.PageIndex     = PageIndex;
            PageFacade.Insert(GeneratedPage, dataOpUnit);
        }
예제 #21
0
 internal static void FillAuthor(IEnumerable <BookViewModel> loadedSource)
 {
     using (var dou = new DataOperationUnit())
     {
         var loading = loadedSource.Where(b => b.Author == null);
         foreach (var book in loading)
         {
             BookLoading.LoadAuthor(book, dou);
         }
     }
 }
예제 #22
0
 public static void GenerateThumbnailCondition(BookViewModel book, DataOperationUnit dataOpUnit = null)
 {
     if (Configuration.ApplicationConfiguration.ThumbnailParallelGeneration)
     {
         Task.Factory.StartNew(() => GenerateThumbnailIf(book));
     }
     else
     {
         GenerateThumbnailIf(book, dataOpUnit);
     }
 }
예제 #23
0
 internal void ExtractCover()
 {
     Task.Factory.StartNew(async() =>
     {
         using (var trans = new DataOperationUnit())
         {
             trans.Open(ConnectionManager.DefaultConnection);
             var coverSegmenting = new CoverSegmenting(Library, _page, CoverLeftSide, CoverRightSide, trans);
             await TaskManager.Enqueue(coverSegmenting.GetTaskSequence());
         }
     });
 }
예제 #24
0
        internal static void FillFirstPage(IEnumerable <BookViewModel> loadedSource)
        {
            var notAvailable = loadedSource.Where(x => x.FirstPage == null);

            using (var dou = new DataOperationUnit())
            {
                foreach (var book in notAvailable)
                {
                    BookLoading.Load(book, dou);
                }
            }
        }
예제 #25
0
        private static void UpdateOrInsertColorMap(IEnumerable <CoverSegmentColorInfo> colorInfoList, Guid bookID, Guid imageID, CoverComparator.Color color)
        {
            using (var dou = new DataOperationUnit())
            {
                dou.Open(ConnectionManager.DefaultConnection);

                for (int i = 0; i < colorInfoList.Count(); ++i)
                {
                    var value = colorInfoList.ElementAt(i);
                    ColorMapFacade.InsertOrReplace(new ColorMap(bookID, (int)color, i, value.Median, imageID, Specifications.HORIZONTAL_SEGMENT_COUNT, Specifications.VERTICAL_SEGMENT_COUNT), dou);
                }
            }
        }
예제 #26
0
 public static void GenerateThumbnail(ImageViewModel target, DataOperationUnit dataOpUnit = null)
 {
     try
     {
         while (!InternalGenerateThumbnail(target, dataOpUnit))
         {
             Thread.Sleep(500);
         }
     }
     catch (FileNotFoundException)
     {
         s_logger.Warn($"Abort thumbnail generating. File not found:{target.AbsoluteMasterPath}");
     }
 }
예제 #27
0
        public static ThumbnailViewModel FindByImageID(Guid imageId, DataOperationUnit dataOpUnit = null)
        {
            ThumbnailDao dao   = new ThumbnailDao();
            var          items = dao.FindBy(new Dictionary <string, object>()
            {
                { "ImageID", imageId }
            }, dataOpUnit?.CurrentConnection).SingleOrDefault();

            if (items == null)
            {
                return(null);
            }
            return(items.ToViewModel());
        }
예제 #28
0
        protected void CreateTaskToInsertBook(string entryName, string title, DataOperationUnit dataOpUnit)
        {
            _book = new BookViewModel(Guid.Parse(entryName), entryName);
            _book.Configuration = Configuration.ApplicationConfiguration;
            _book.Title         = title;
            if (_AuthorID != Guid.Empty)
            {
                _book.AuthorID = _AuthorID;
            }

            BookFacade.Insert(_book, dataOpUnit);

            _children.ForEach(c => ((ImportPage)c).BookID = _book.ID);
            _BookID = _book.ID;
        }
예제 #29
0
        public static void DeleteThumbnail(ImageViewModel target, DataOperationUnit dataOpUnit = null)
        {
            Contract.Requires(target != null);
            Contract.Requires(target.Thumbnail != null);

            var deleting = target.Thumbnail;

            target.Thumbnail = null;

            Thread.Sleep(0);

            File.Delete(deleting.AbsoluteMasterPath);
            s_logger.Debug($"Deleted File:{deleting.AbsoluteMasterPath}");

            ThumbnailFacade.DeleteWhereIDIs(deleting.ID);
        }
예제 #30
0
 internal static void DeleteRecordFromStorage(PageViewModel page, DataOperationUnit dataOpUnit = null)
 {
     Debug.Assert(page != null);
     PageFacade.DeleteWhereIDIs(page.ID, dataOpUnit);
     ImageFacade.DeleteWhereIDIs(page.ImageID, dataOpUnit);
     if (page.Image != null)
     {
         var image = page.Image;
         if (image.ThumbnailRecorded)
         {
             if (!image.ThumbnailLoaded)
             {
                 image.Thumbnail = ThumbnailFacade.FindByImageID(image.ID, dataOpUnit);
             }
             ThumbnailFacade.DeleteWhereIDIs(image.Thumbnail.ID, dataOpUnit);
         }
     }
 }