public FileItemLinkDTO(FileItemLink source) : base(source) { this.ItemId = (Guid)source.ItemId; this.FileKey = new FileInfoHashKeyDTO(source.FileKey); this.Version = new VersionDTO(source.Version); this.ThumbnailKey = source.ThumbnailKey.HasValue ? new FileInfoHashKeyDTO(source.ThumbnailKey.Value) : null; }
void compareEntities(FileItemLink entityA, FileItemLink entityB) { Assert.AreEqual(entityA.Id, entityB.Id, "faulty id"); Assert.AreEqual(entityA.Created, entityB.Created, "faulty creation timestamp"); Assert.AreEqual(entityA.LastChange, entityB.LastChange, "faulty last change timestamp"); Assert.AreEqual(entityA.ItemId, entityB.ItemId, "faulty item-id"); Assert.AreEqual(entityA.FileKey, entityB.FileKey, "faulty FileHash"); Assert.AreEqual(entityA.Version, entityB.Version, "faulty version"); }
void compareEntityToDto(FileItemLink entity, FileItemLinkDTO dto) { Assert.AreEqual((Guid)entity.Id, dto.Id, "faulty id"); Assert.AreEqual(entity.Created, dto.Created, "faulty creation timestamp"); Assert.AreEqual(entity.LastChange, dto.LastChange, "faulty last change timestamp"); Assert.AreEqual((Guid)entity.ItemId, dto.ItemId, "faulty item-id"); Assert.AreEqual(entity.FileKey, dto.FileKey.ToEntity(), "faulty FileHash"); Assert.AreEqual(entity.Version, dto.Version.ToEntity(), "faulty version"); }
public void AutoGenerateItems() { Observable.Start(() => { var job = this.notificationCenter.CreateSingleTaskJob(out var process, "creating items", "preparing"); try { process.State = AsyncState.InProgress; var object3dExtensions = new string[] { ".obj", ".stl" }; var threadcount = settingsService.ThreadCount; var files = this.fileDataService .GetExtendedByHash() .KeyValues .Where(x => object3dExtensions.Contains( Path.GetExtension(x.Value.AbsolutePath))) .ToDictionary(x => x.Key, x => x.Value); var items = this.itemService .GetExtended() .Items; var takenKeys = items .Where(x => x.FileVersions.Any()) .SelectMany(x => x.FileVersions) .Select(x => x.Link.FileKey); var knownKeys = files .Select(x => x.Key); var freeKeys = knownKeys .Except(takenKeys); process.Details = $"preparing {freeKeys.Count()} items"; var patches = freeKeys .Select(freeKey => { var file = files[freeKey]; var item = new Item((ItemName)Path.GetFileNameWithoutExtension(file.AbsolutePath), new Tag[] { (Tag)"new" }); var link = new FileItemLink(item.Id, file.HashKey.Value, null, new Version(1, 0, 0)); return(new { item, link }); }).ToArray(); process.Details = $"posting {items.Count()} items"; Observable.Start(() => this.itemService.Post(patches.Select(x => x.item)), RxApp.TaskpoolScheduler); Observable.Start(() => this.fileItemLinkService.Post(patches.Select(x => x.link)), RxApp.TaskpoolScheduler); process.State = AsyncState.Done; } catch (Exception ex) { process.State = AsyncState.Failed; MessageBox.Show(ex.ToString(), $"{nameof(LibraryManagementService)}.{nameof(AutoGenerateItems)}"); } finally { } }, RxApp.TaskpoolScheduler); }
public FileItemLinkEx(FileItemLink link, FileInfoEx?thumbnail) { Link = link; Thumbnail = thumbnail; }