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); } } }
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))); } }
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); } }
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"); } }
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}"); } }
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); } }
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); } } }
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); }
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(); }
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); }
private void CopyFileWithTag(PageViewModel page) { var imageTag = ImageTagFacade.FindByImageId(page.ImageID); CopyFile(page, imageTag.Select(a => a.Tag).ToArray()); }
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())); }
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())); } }