Exemple #1
0
 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");
        }
Exemple #4
0
        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);
        }
Exemple #5
0
 public FileItemLinkEx(FileItemLink link, FileInfoEx?thumbnail)
 {
     Link      = link;
     Thumbnail = thumbnail;
 }