CmisSync.Lib.Accumulator.RemoteObjectMovedOrRenamedAccumulator.Handle C# (CSharp) Метод

Handle() публичный Метод

Handles File/FolderEvents.
public Handle ( ISyncEvent e ) : bool
e ISyncEvent The event to handle.
Результат bool
        public override bool Handle(ISyncEvent e) {
            if (!this.CouldLocalObjectBeAccumulated(e as AbstractFolderEvent)) {
                return false;
            }

            Logger.Debug("Handling event: " + e);

            var storedObject = this.GetStoredObject(e as AbstractFolderEvent);
            Logger.Debug(storedObject);

            Logger.Debug(this.GetParentId(e as AbstractFolderEvent));
            if(storedObject != null) {
                if (storedObject.ParentId != this.GetParentId(e as AbstractFolderEvent)) {
                    this.AccumulateEvent(e as AbstractFolderEvent, storedObject);
                } else if(storedObject.Name != this.GetRemoteObjectName(e as AbstractFolderEvent)) {
                    this.AccumulateEvent(e as AbstractFolderEvent, storedObject);
                }
            }

            return false;
        }

Usage Example

        public void AccumulatesRemoteMovedFileEvents() {
            var storage = new Mock<IMetaDataStorage>();
            var storedObject = Mock.Of<IMappedObject>(
                o =>
                o.ParentId == "oldParentId");
            storage.Setup(s => s.GetObjectByRemoteId(this.remoteId)).Returns(storedObject);
            storage.Setup(s => s.GetLocalPath(storedObject)).Returns(this.localPath);
            var fsFactory = new Mock<IFileSystemInfoFactory>();
            var localPathInfo = Mock.Of<IFileInfo>();
            fsFactory.Setup(f => f.CreateFileInfo(this.localPath)).Returns(localPathInfo);
            var acc = new RemoteObjectMovedOrRenamedAccumulator(Mock.Of<ISyncEventQueue>(), storage.Object, fsFactory.Object);
            var parents = new List<IFolder>();
            parents.Add(Mock.Of<IFolder>(f => f.Id == this.parentId));
            var remoteFile = Mock.Of<IDocument>(
                f =>
                f.Id == this.remoteId &&
                f.Parents == parents);
            var fileEvent = new FileEvent(remoteFile: remoteFile) { Remote = MetaDataChangeType.CREATED };

            Assert.That(acc.Handle(fileEvent), Is.False);
            Assert.That(fileEvent.LocalFile, Is.EqualTo(localPathInfo));
        }
All Usage Examples Of CmisSync.Lib.Accumulator.RemoteObjectMovedOrRenamedAccumulator::Handle