public override void Solve(
IFileSystemInfo localFileSystemInfo,
IObjectId remoteId,
ContentChangeType localContent,
ContentChangeType remoteContent)
{
var obj = this.Storage.GetObjectByRemoteId(remoteId.Id);
var localParent = localFileSystemInfo is IFileInfo ? (localFileSystemInfo as IFileInfo).Directory : (localFileSystemInfo as IDirectoryInfo).Parent;
var mappedLocalParent = this.Storage.GetObjectByGuid((Guid)localParent.Uuid);
var remoteObject = remoteId as IFileableCmisObject;
var targetId = mappedLocalParent.RemoteObjectId;
var src = this.Session.GetObject(obj.ParentId);
var target = this.Session.GetObject(targetId);
try {
OperationsLogger.Info(string.Format("Moving remote object {2} from folder {0} to folder {1}", src.Name, target.Name, remoteId.Id));
remoteObject = remoteObject.Move(src, target);
} catch (CmisPermissionDeniedException) {
OperationsLogger.Info(string.Format("Moving remote object failed {0}: Permission Denied", localFileSystemInfo.FullName));
return;
}
obj.ParentId = targetId;
obj.Ignored = remoteObject.AreAllChildrenIgnored();
this.Storage.SaveMappedObject(obj);
if (obj.Name != localFileSystemInfo.Name) {
this.renameChangeSolver.Solve(localFileSystemInfo, remoteObject, localContent, remoteContent);
} else {
this.changeChangeSolver.Solve(localFileSystemInfo, remoteObject, localContent, remoteContent);
}
}
}