Click or drag to resize

IHierarchyItemMoveTo Method

IT Hit WebDAV Classes Reference
Moves this item to the destination folder under a new name.

Namespace: ITHit.WebDAV.Server
Assembly: ITHit.WebDAV.Server (in ITHit.WebDAV.Server.dll) Version: 4.5.3121.0
Syntax
void MoveTo(
	IItemCollection destFolder,
	string destName,
	MultistatusException multistatus
)

Parameters

destFolder
Type: ITHit.WebDAV.ServerIItemCollection
Destination folder.
destName
Type: SystemString
Name of the destination item.
multistatus
Type: ITHit.WebDAV.ServerMultistatusException
If some items fail to copy but operation in whole shall be continued, add information about the error into multistatus using AddInnerException(String, DavException).

Return Value

Type: 
.
Exceptions
ExceptionCondition
LockedExceptionThe source or the destination item was locked and client did not provide lock token.
NeedPrivilegesExceptionThe user doesn't have enough privileges.
InsufficientStorageExceptionQuota limit is reached.
MultistatusExceptionErrors has occured during processing of item in the subtree and whole operation shall be aborted.
DavExceptionIn other cases. Possible status value is CONFLICT if destination folder doesn't exist.
Remarks
If the item is locked the server must not move any locks with the item. However, items must be added to an existing lock at the destination.
Examples
Example of MoveTo implementation for WebDAV Class 2 server:

The code below is part of 'WebDAVServer.NtfsStorage' sample provided with the SDK.

public override void MoveTo(IItemCollection destFolder, string destName, MultistatusException multistatus)
{
    RequireHasToken();
    context.FileOperation(
        () => moveToInternal(destFolder, destName, multistatus));
}

private void moveToInternal(IItemCollection folder, string destName, MultistatusException multistatus)
{
    var targetFolder = (DavFolder)folder;

    if (targetFolder == null || !Directory.Exists(targetFolder.GetFullPath()))
    {
        throw new DavException("Target directory doesn't exist", DavStatus.CONFLICT);
    }

    var newDirPath = System.IO.Path.Combine(targetFolder.GetFullPath(), destName);
    var targetPath = targetFolder.Path + EncodeUtil.EncodeUrlPart(destName);

    //If an item with the same name exists in target directory - remove it.
    try
    {
        IHierarchyItem item = context.GetHierarchyItem(targetPath);
        if (item != null)
            item.Delete(multistatus);
    }
    catch (DavException ex)
    {
        //Report exception to client and continue with other items by returning from recursion.
        multistatus.AddInnerException(targetPath, ex);
        return;
    }

    //Move the file.
    try
    {
        File.Move(fileSystemInfo.FullName, newDirPath);
    }
    catch (UnauthorizedAccessException)
    {
        //Exception occurred with the item for which MoveTo was called - fail the operation.
        var ex = new NeedPrivilegesException("Not enough privileges");
        ex.AddRequiredPrivilege(targetPath, Privilege.Bind);

        string parentPath = System.IO.Path.GetDirectoryName(Path);
        ex.AddRequiredPrivilege(parentPath, Privilege.Unbind);
        throw ex;
    }
}
See Also