CmisSync.Lib.Producer.ContentChange.ContentChangeEventTransformer.HandleAsIDocument C# (CSharp) Метод

HandleAsIDocument() приватный Метод

private HandleAsIDocument ( ContentChangeEvent contentChangeEvent ) : void
contentChangeEvent CmisSync.Lib.Events.ContentChangeEvent
Результат void
        private void HandleAsIDocument(ContentChangeEvent contentChangeEvent) {
            IDocument doc = contentChangeEvent.CmisObject as IDocument;
            switch(contentChangeEvent.Type)
            {
            case DotCMIS.Enums.ChangeType.Created:
            {
                var fileEvent = new FileEvent(null, doc) { Remote = MetaDataChangeType.CREATED };
                fileEvent.RemoteContent = doc.ContentStreamId == null ? ContentChangeType.NONE : ContentChangeType.CREATED;
                Queue.AddEvent(fileEvent);
                break;
            }

            case DotCMIS.Enums.ChangeType.Security:
            {
                IMappedObject file = this.storage.GetObjectByRemoteId(doc.Id);
                var fileInfo = (file == null) ? null : this.fsFactory.CreateFileInfo(this.storage.GetLocalPath(file));
                var fileEvent = new FileEvent(fileInfo, doc);
                if (fileInfo != null) {
                    fileEvent.Remote = MetaDataChangeType.CHANGED;
                } else {
                    fileEvent.Remote = MetaDataChangeType.CREATED;
                    if (file != null) {
                        byte[] hash = doc.ContentStreamHash(file.ChecksumAlgorithmName);
                        if (hash == null || !hash.Equals(file.LastChecksum)) {
                            fileEvent.RemoteContent = ContentChangeType.CHANGED;
                        } else {
                            fileEvent.RemoteContent = ContentChangeType.NONE;
                        }
                    } else {
                        fileEvent.RemoteContent = ContentChangeType.CREATED;
                    }
                }

                Queue.AddEvent(fileEvent);
                break;
            }

            case DotCMIS.Enums.ChangeType.Updated:
            {
                IMappedObject file = this.storage.GetObjectByRemoteId(doc.Id);
                var fileInfo = (file == null) ? null : this.fsFactory.CreateFileInfo(this.storage.GetLocalPath(file));
                var fileEvent = new FileEvent(fileInfo, doc);
                if (fileInfo != null) {
                    fileEvent.Remote = MetaDataChangeType.CHANGED;
                    if (file != null) {
                        byte[] hash = doc.ContentStreamHash(file.ChecksumAlgorithmName);
                        if (hash == null || !hash.SequenceEqual(file.LastChecksum)) {
                            Logger.Debug(string.Format("SavedChecksum: {0} RemoteChecksum: {1}", Utils.ToHexString(file.LastChecksum), Utils.ToHexString(hash)));
                            fileEvent.RemoteContent = ContentChangeType.CHANGED;
                        } else {
                            fileEvent.RemoteContent = ContentChangeType.NONE;
                        }
                    } else {
                        fileEvent.Remote = MetaDataChangeType.CREATED;
                        fileEvent.RemoteContent = ContentChangeType.CREATED;
                    }
                } else {
                    fileEvent.Remote = MetaDataChangeType.CREATED;
                    fileEvent.RemoteContent = ContentChangeType.CREATED;
                }

                Queue.AddEvent(fileEvent);
                break;
            }
            }
        }