Moves this item to the destination folder under a new name.
Example of MoveTo implementation for WebDAV Class 2 server:
public class Folder : HierarchyItem, IFolder, IFolderLock
{
...
public override WebDAVResponse MoveTo(IFolder folder, string destName)
{
Folder destFolder = folder as Folder;
if(destFolder == null)
return new ConflictResponse();
Folder parent = Parent as Folder;
if(parent == null)
return new ConflictResponse();
if(!ClientHasToken || !destFolder.ClientHasToken || !parent.ClientHasToken)
return new LockedResponse();
HierarchyItem destItem = destFolder.FindChild(destName);
Folder newDestFolder;
// copy this folder
if(destItem != null)
{
if(DelWhenReplace && destItem is IResource)
{
WebDAVResponse delResp = destItem.Delete();
if(!delResp.IsSuccess)
return delResp;
newDestFolder = CopyThisItem(destFolder, null, destName);
}
else
{
newDestFolder = destItem as Folder;
if(newDestFolder == null)
return new ConflictResponse();
}
}
else
{
newDestFolder = CopyThisItem(destFolder, null, destName);
}
// move children
MultistatusResponse mr = new MultistatusResponse();
foreach(IHierarchyItem child in Children)
{
HierarchyItem dbchild = child as HierarchyItem;
WebDAVResponse resp = dbchild.MoveTo(newDestFolder, child.Name);
if(!resp.IsSuccess)
mr.AddResponses(new ItemResponse(dbchild.Path, resp));
else
{
MultistatusResponse mrchild = resp as MultistatusResponse;
if(mrchild != null)
mr.AddResponses(mrchild.Responses);
}
}
// delete this folder
if(mr.Responses.Length > 0)
return mr;
else if(destItem == null)
{
DeleteThisItem();
return new CreatedResponse();
}
else
{
DeleteThisItem();
return new NoContentResponse();
}
}
...
}
IHierarchyItem Interface | ITHit.WebDAV.Server Namespace