IHierarchyItem.MoveTo Method 

IT Hit WebDAV for .NET

Moves this item to the destination folder under a new name.

[Visual Basic]
Function MoveTo( _
   ByVal folder As IFolder, _
   ByVal destName As String _
) As WebDAVResponse
[C#]
WebDAVResponse MoveTo(
   IFolder folder,
   string destName
);

Parameters

folder
Destination folder.
destName
Name of the destination item.

Return Value

Remarks

If the item is locked the server must not move any locks with the item. However, resources must be added to an existing lock at the destination.

Example

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();
            }
        }
        ...
    }
    

See Also

IHierarchyItem Interface | ITHit.WebDAV.Server Namespace