Exemple #1
0
        private void TagImage(ITagManager tagManager)
        {
            foreach (var tagName in TagNames)
            {
                var tag = TagFacade.FindByTagName(tagName);

                if (tag == null)
                {
                    tag = new TagViewModel(Guid.NewGuid(), tagName);
                    TagFacade.Insert(tag);
                    tagManager.Tags.Add(tag);
                }

                _images = new List <ImageViewModel>();

                var pages = PageFacade.FindByBookId(_BookID);
                for (int i = 0; i < pages.Count(); ++i)
                {
                    var page = pages.ElementAt(i);
                    PageFacade.GetProperty(ref page);
                    _images.Add(page.Image);
                }

                ImageTagFacade.BatchInsert(tag, _images);

                foreach (var imageTag in _images.Select(i => new ImageTagViewModel(i.ID, tag)))
                {
                    tagManager.Chains.Add(imageTag);
                }
            }
        }
Exemple #2
0
        public override void ConfigureTaskImplementation(AsyncTaskSequence sequence)
        {
            foreach (var tagName in TagNames)
            {
                var itTargets = (from it in TagManager.Value.Chains
                                 join t in TagNames on it.Tag.Name equals t
                                 select it).ToList();

                foreach (var target in itTargets)
                {
                    sequence.Add(new Task(() =>
                    {
                        TagManager.Value.Chains.Remove(target);
                    }));
                }

                var tTargets = (from t in TagManager.Value.Tags
                                join i in TagNames on t.Name equals i
                                select t).ToList();

                foreach (var target in tTargets)
                {
                    sequence.Add(new Task(() =>
                    {
                        TagManager.Value.Tags.Remove(target);
                    }));
                }

                sequence.Add(new Task(() => ImageTagFacade.DeleteByTagName(tagName)));
                sequence.Add(new Task(() => TagFacade.DeleteByTagName(tagName)));
            }
        }
Exemple #3
0
        public void RemoveByImage(ImageViewModel image)
        {
            if (image == null)
            {
                throw new ArgumentNullException("image == null");
            }

            ImageTagFacade.DeleteWhereIDIs(image.ID);

            var removeList = Chains.Where(it => it.ImageID == image.ID).ToList();

            foreach (var remove in removeList)
            {
                Chains.Remove(remove);
            }
        }
Exemple #4
0
        private IEnumerable <TagCountViewModel> GenerateTagCount()
        {
            Stopwatch sw = new Stopwatch();

            s_logger.Info($"Loading TagCount list...");
            sw.Start();
            try
            {
                return(ImageTagFacade.FindAllAsCount());
            }
            finally
            {
                sw.Stop();
                s_logger.Info($"Completed to load TagCount list. {sw.ElapsedMilliseconds}ms");
            }
        }
Exemple #5
0
        private void LoadImageTag()
        {
            Stopwatch sw = new Stopwatch();

            s_logger.Info("Loading ImageTag list...");
            sw.Start();
            try
            {
                Chains = new ObservableCollection <ImageTagViewModel>(ImageTagFacade.FindAll());
                Chains.CollectionChanged += Chains_CollectionChanged;
            }
            finally
            {
                s_logger.Info($"Completed to load ImageTag list. {sw.ElapsedMilliseconds}ms");
            }
        }
        public static void Remove(ITagManager tagMng, ImageViewModel targetImage, string tagName)
        {
            bool tagExists = TagFacade.Exists(tagName);

            if (tagExists)
            {
                var tag = TagFacade.FindByTagName(tagName);
                ImageTagFacade.DeleteWhereIDIs(targetImage.ID, tag.ID);
                var willRemoves = tagMng.Chains.Where(a => a.ImageID == targetImage.ID && a.Tag.ID == tag.ID);
                if (willRemoves.Count() == 1)
                {
                    var willRemove = willRemoves.Single();
                    tagMng.Chains.Remove(willRemove);
                }
                s_logger.Info($"Removed ImageTag:{tag}");
            }
        }
Exemple #7
0
        private static void CreateImageTag(ITagManager tagMng, ImageViewModel targetImage, TagViewModel tag)
        {
            var newImageTag = new ImageTagViewModel(targetImage.ID, tag);

            try
            {
                ImageTagFacade.Insert(newImageTag);
            }
            catch (SQLiteException e)
            {
                s_logger.Error(e);
            }
            if (!tagMng.Chains.Contains(newImageTag))
            {
                tagMng.Chains.Add(newImageTag);
            }
        }
Exemple #8
0
        private void CopyFiles(BookViewModel book, bool tag)
        {
            int pageCount = book.NumberOfPages.Value;

            for (int i = 0; i < pageCount; ++i)
            {
                var page = book[i];
                if (tag)
                {
                    var imageTag = ImageTagFacade.FindByImageId(page.ImageID);
                    CopyFile(page, imageTag.Select(a => a.Tag).ToArray());
                }
                else
                {
                    CopyFile(page);
                }
            }
        }
Exemple #9
0
        private void CreateDirectoryIfDoesntExist(string directory, BookViewModel book, bool tag)
        {
            _bookDir = $"{directory}\\";

            if (tag)
            {
                var imageIds  = book.Contents.Select(a => a.Image.ID);
                var imageTags = ImageTagFacade.FindByImageIds(imageIds);
                var tags      = ExtractTagsAllImagesAdded(imageTags);

                string tagString = BuildTagsString(tags);

                _bookDir += $"{tagString}";
            }

            _bookDir += $"[{book.Author?.Name}]{escape(book.Title)}";

            CreateDirectoryIfDoesntExist(_bookDir);
        }
Exemple #10
0
        public void Load()
        {
            var id         = Guid.Parse("00000000-0000-0000-0000-000000000000");
            var appDao     = DataAccessManager.AppDao.Build <StatisticsDao>();
            var statistics = appDao.FindBy(new Dictionary <string, object>()
            {
                { "ID", id }
            }).First();

            NumberOfBoots.Value = statistics.NumberOfBoots;

            NumberOfBooks.Value = BookFacade.FindAll().Count();

            TotalFileSize.Value = ImageFacade.SumTotalFileSize();

            NumberOfPages.Value = PageFacade.CountAll();

            NumberOfAuthors.Value = AuthorFacade.CountAll();

            NumberOfTags.Value = TagFacade.CountAll();

            NumberOfBookTags.Value = BookTagFacade.CountAll();

            NumberOfImageTags.Value = ImageTagFacade.CountAll();

            NumberOfBooks5.Value = StarFacade.FindBookByStar(5).Count();

            NumberOfBooks4.Value = StarFacade.FindBookByStar(4).Count();

            NumberOfBooks3.Value = StarFacade.FindBookByStar(3).Count();

            NumberOfBooks2.Value = StarFacade.FindBookByStar(2).Count();

            NumberOfBooks1.Value = StarFacade.FindBookByStar(1).Count();

            NumberOfBooksN.Value = StarFacade.FindBookByStar(null).Count();

            NumberOfDuplicateBooks.Value = BookFacade.FindDuplicateFingerPrint().Count();

            TotalDuplicateBooksSize.Value = BookFacade.FindDuplicateFingerPrint().Where(x => x.ByteSize != null).Select(x => x.ByteSize.Value).Sum();
        }
Exemple #11
0
        public static List <Task> GenerateRemoveTagTasks(ITagManager tagManager, string[] tagNames)
        {
            List <Task> tasks = new List <Task>();

            foreach (var tagName in tagNames)
            {
                var itTargets = (from it in tagManager.Chains
                                 join t in tagNames on it.Tag.Name equals t
                                 select it).ToList();

                foreach (var target in itTargets)
                {
                    tasks.Add(new Task(() =>
                    {
                        tagManager.Chains.Remove(target);
                    }));
                }

                var tTargets = (from t in tagManager.Tags
                                join i in tagNames on t.Name equals i
                                select t).ToList();

                foreach (var target in tTargets)
                {
                    tasks.Add(new Task(() =>
                    {
                        tagManager.Tags.Remove(target);
                    }));
                }

                tasks.Add(new Task(() => ImageTagFacade.DeleteByTagName(tagName)));
                tasks.Add(new Task(() => TagFacade.DeleteByTagName(tagName)));
            }

            return(tasks);
        }
Exemple #12
0
        private void CopyFileWithTag(PageViewModel page)
        {
            var imageTag = ImageTagFacade.FindByImageId(page.ImageID);

            CopyFile(page, imageTag.Select(a => a.Tag).ToArray());
        }
Exemple #13
0
        public override void ConfigureTaskImplementation(AsyncTaskSequence sequence)
        {
            sequence.Add(new Task(() =>
            {
                if (TagFacade.Exists(TagName))
                {
                    _tag = TagFacade.FindByTagName(TagName);
                }
                else
                {
                    _tag = new TagViewModel(Guid.NewGuid(), TagName);
                    TagFacade.Insert(_tag);
                }
            }));

            sequence.Add(new Task(() =>
            {
                _images = new List <ImageViewModel>();
            }));

            foreach (var entry in Entries)
            {
                var book = entry as BookViewModel;
                if (book != null)
                {
                    _pages = PageFacade.FindByBookId(book.ID);

                    for (int i = 0; i < _pages.Count(); ++i)
                    {
                        var p = _pages.ElementAt(i);
                        sequence.Add(new Task(() =>
                        {
                            GetPropertyIfImageIsNull(ref p);
                            _images.Add(p.Image);
                        }));
                    }
                    sequence.Add(new Task(() =>
                    {
                        var newEntity = new BookTagViewModel(book, _tag);
                        if (!BookTagFacade.Exists(newEntity))
                        {
                            BookTagFacade.Insert(newEntity);
                        }
                    }));
                    continue;
                }

                var page = entry as PageViewModel;
                if (page != null)
                {
                    sequence.Add(new Task(() =>
                    {
                        GetPropertyIfImageIsNull(ref page);
                        _images.Add(page.Image);
                    }));

                    sequence.Add(new Task(() =>
                    {
                        var newEntity = new BookTagViewModel(page.BookID, _tag.ID);
                        if (!BookTagFacade.Exists(newEntity))
                        {
                            BookTagFacade.Insert(newEntity);
                        }
                    }));
                    continue;
                }

                var image = entry as ImageViewModel;
                if (image != null)
                {
                    sequence.Add(new Task(() =>
                    {
                        _images.Add(image);
                    }));

                    sequence.Add(new Task(() =>
                    {
                        var tempPage  = PageFacade.FindByImageId(image.ID);
                        var newEntity = new BookTagViewModel(tempPage.BookID, _tag.ID);
                        if (!BookTagFacade.Exists(newEntity))
                        {
                            BookTagFacade.Insert(newEntity);
                        }
                    }));
                    continue;
                }
            }

            sequence.Add(new Task(() =>
            {
                ImageTagFacade.BatchInsert(_tag, _images);
            }));

            sequence.Add(new Task(() =>
            {
                var chains = from x in _images
                             where TagManager.Value.Chains.Count(c => c.ImageID == x.ID && c.TagID == _tag.ID) == 0
                             select new ImageTagViewModel(x.ID, _tag);

                foreach (var chain in chains)
                {
                    TagManager.Value.Chains.Add(chain);
                }
            }));

            sequence.Add(new Task(() =>
            {
                if (!TagManager.Value.Tags.Contains(_tag))
                {
                    TagManager.Value.Tags.Add(_tag);
                }
            }));

            sequence.Add(new Task(() => TagManager.Value.SelectedEntityTags = TagManager.Value.GetCommonTags()));
            sequence.Add(new Task(() => TagManager.Value.ObserveSelectedEntityTags()));
        }
Exemple #14
0
        public static List <Task> GenerateAddImageTagTasks(ITagManager tagManager, IEnumerable <EntryViewModel> entries, string tagName)
        {
            List <Task> tasks = new List <Task>();

            var ita = new ImageTagAdding();

            tasks.Add(new Task(() =>
            {
                if (TagFacade.Exists(tagName))
                {
                    ita._tag = TagFacade.FindByTagName(tagName);
                }
                else
                {
                    ita._tag = new TagViewModel(Guid.NewGuid(), tagName);
                    TagFacade.Insert(ita._tag);
                }
            }));

            tasks.Add(new Task(() =>
            {
                ita._images = new List <ImageViewModel>();
            }));

            foreach (var entry in entries)
            {
                var book = entry as BookViewModel;
                if (book != null)
                {
                    ita._pages = PageFacade.FindByBookId(book.ID);

                    for (int i = 0; i < ita._pages.Count(); ++i)
                    {
                        var p = ita._pages.ElementAt(i);
                        tasks.Add(new Task(() =>
                        {
                            GetPropertyIfImageIsNull(ref p);
                            ita._images.Add(p.Image);
                        }));
                    }
                    continue;
                }

                var page = entry as PageViewModel;
                if (page != null)
                {
                    tasks.Add(new Task(() =>
                    {
                        GetPropertyIfImageIsNull(ref page);
                        ita._images.Add(page.Image);
                    }));
                    continue;
                }

                var image = entry as ImageViewModel;
                if (image != null)
                {
                    tasks.Add(new Task(() =>
                    {
                        ita._images.Add(image);
                    }));
                    continue;
                }
            }

            tasks.Add(new Task(() =>
            {
                ImageTagFacade.BatchInsert(ita._tag, ita._images);
            }));

            tasks.Add(new Task(() =>
            {
                var chains = from x in ita._images
                             where tagManager.Chains.Count(c => c.ImageID == x.ID && c.TagID == ita._tag.ID) == 0
                             select new ImageTagViewModel(x.ID, ita._tag);

                foreach (var chain in chains)
                {
                    tagManager.Chains.Add(chain);
                }
            }));

            tasks.Add(new Task(() =>
            {
                if (!tagManager.Tags.Contains(ita._tag))
                {
                    tagManager.Tags.Add(ita._tag);
                }
            }));

            tasks.Add(new Task(() => tagManager.SelectedEntityTags = tagManager.GetCommonTags()));
            tasks.Add(new Task(() => tagManager.ObserveSelectedEntityTags()));

            return(tasks);
        }
        public override void ConfigureTaskImplementation(AsyncTaskSequence sequence)
        {
            foreach (var tagName in TagNames)
            {
                foreach (var entry in Entries)
                {
                    var book = entry as BookViewModel;
                    if (book != null)
                    {
                        var pages = PageFacade.FindByBookId(book.ID);
                        for (int i = 0; i < pages.Count(); ++i)
                        {
                            var p = pages.ElementAt(i);
                            sequence.Add(new Task(() =>
                            {
                                GetPropertyIfImageIsNull(ref p);
                            }));
                            sequence.Add(new Task(() =>
                            {
                                Remove.ImageTagRemoving.Remove(TagManager.Value, p.Image, tagName);
                            }));
                        }

                        sequence.Add(new Task(() =>
                        {
                            var tag          = TagFacade.FindByTagName(tagName);
                            var deleteEntity = new BookTagViewModel(book.ID, tag.ID);
                            if (BookTagFacade.Exists(deleteEntity))
                            {
                                BookTagFacade.Delete(deleteEntity);
                            }
                        }));
                        continue;
                    }

                    var page = entry as PageViewModel;
                    if (page != null)
                    {
                        sequence.Add(new Task(() =>
                        {
                            GetPropertyIfImageIsNull(ref page);
                        }));
                        sequence.Add(new Task(() =>
                        {
                            Remove.ImageTagRemoving.Remove(TagManager.Value, page.Image, tagName);
                        }));

                        sequence.Add(new Task(() =>
                        {
                            var tag          = TagFacade.FindByTagName(tagName);
                            var deleteEntity = new BookTagViewModel(book.ID, tag.ID);

                            var pages = PageFacade.FindByBookId(page.BookID);
                            foreach (var p in pages)
                            {
                                if (p.ID.Equals(page.ID))
                                {
                                    continue;
                                }

                                var imageTags = ImageTagFacade.FindByImageId(p.ImageID);
                                foreach (var imageTag in imageTags)
                                {
                                    if (imageTag.TagID.Equals(deleteEntity.TagID))
                                    {
                                        return;
                                    }
                                }
                            }

                            if (BookTagFacade.Exists(deleteEntity))
                            {
                                BookTagFacade.Delete(deleteEntity);
                            }
                        }));
                        continue;
                    }

                    var image = entry as ImageViewModel;
                    if (image != null)
                    {
                        sequence.Add(new Task(() =>
                        {
                            Remove.ImageTagRemoving.Remove(TagManager.Value, page.Image, tagName);
                        }));

                        sequence.Add(new Task(() =>
                        {
                            var tag          = TagFacade.FindByTagName(tagName);
                            var deleteEntity = new BookTagViewModel(book.ID, tag.ID);

                            var parentPage = PageFacade.FindByImageId(image.ID);
                            var pages      = PageFacade.FindByBookId(parentPage.BookID);
                            foreach (var p in pages)
                            {
                                if (p.ID.Equals(parentPage.ID))
                                {
                                    continue;
                                }

                                var imageTags = ImageTagFacade.FindByImageId(p.ImageID);
                                foreach (var imageTag in imageTags)
                                {
                                    if (imageTag.TagID.Equals(deleteEntity.TagID))
                                    {
                                        return;
                                    }
                                }
                            }

                            if (BookTagFacade.Exists(deleteEntity))
                            {
                                BookTagFacade.Delete(deleteEntity);
                            }
                        }));
                        continue;
                    }
                }

                sequence.Add(new Task(() => TagManager.Value.SelectedEntityTags = TagManager.Value.GetCommonTags()));
                sequence.Add(new Task(() => TagManager.Value.ObserveSelectedEntityTags()));
                sequence.Add(new Task(() => TagManager.Value.ObserveTagCount()));
            }
        }