CmisSync.Lib.Filter.IgnoreAlreadyHandledContentChangeEventsFilter.Handle C# (CSharp) Метод

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

Checks is the given Event is a content change event and filters it, if it has been handled already.
public Handle ( ISyncEvent e ) : bool
e ISyncEvent Sync event
Результат bool
        public override bool Handle(ISyncEvent e) {
            if (e is ContentChangeEvent) {
                ContentChangeEvent change = e as ContentChangeEvent;
                switch (change.Type) {
                case ChangeType.Created:
                    return this.storage.GetObjectByRemoteId(change.ObjectId) != null;
                case ChangeType.Deleted:
                    return this.storage.GetObjectByRemoteId(change.ObjectId) == null;
                case ChangeType.Security:
                    goto case ChangeType.Updated;
                case ChangeType.Updated:
                    var mappedObject = this.storage.GetObjectByRemoteId(change.ObjectId);
                    if (mappedObject == null || mappedObject.LastChangeToken == null) {
                        return false;
                    } else {
                        if (change.CmisObject == null) {
                            try {
                                change.UpdateObject(this.session);
                            } catch (DotCMIS.Exceptions.CmisBaseException) {
                                return false;
                            }
                        }

                        var cmisObject = change.CmisObject;
                        string cmisParentId = cmisObject is IFolder ? (cmisObject as IFolder).ParentId : cmisObject is IDocument ? (cmisObject as IDocument).Parents[0].Id : null;
                        if (mappedObject.LastChangeToken == cmisObject.ChangeToken && mappedObject.ParentId == cmisParentId) {
                            Logger.Debug(string.Format("Ignoring remote change because the ChangeToken \"{0}\" is equal to the stored one", mappedObject.LastChangeToken));
                            return true;
                        } else {
                            return false;
                        }
                    }

                default:
                    return false;
                }
            } else {
                return false;
            }
        }
    }

Usage Example

        public void DoesNotFilterChangeEventsOfNotExistingObjects() {
            string remoteId = "remoteId";
            var filter = new IgnoreAlreadyHandledContentChangeEventsFilter(Mock.Of<IMetaDataStorage>(), Mock.Of<ISession>());
            var contentChangeEvent = new ContentChangeEvent(DotCMIS.Enums.ChangeType.Updated, remoteId);

            Assert.That(filter.Handle(contentChangeEvent), Is.False);
        }
All Usage Examples Of CmisSync.Lib.Filter.IgnoreAlreadyHandledContentChangeEventsFilter::Handle
IgnoreAlreadyHandledContentChangeEventsFilter