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;
}
}
}