IVersionableItem.UpdateToVersion Method 

IT Hit WebDAV for .NET

Updates content and properties of the item to those identified by version parameter.

[Visual Basic]
Function UpdateToVersion( _
   ByVal version As IVersion _
) As WebDAVResponse
[C#]
WebDAVResponse UpdateToVersion(
   IVersion version
);

Return Value

Example

public WebDAVResponse UpdateToVersion(IVersion version)
{
    // Create a new version and copy content and properties from IVersion passed as a parameter. 
    // Replace content and properties of this item.
    Version ver = version as Version;
    if (ver.ItemId != this.fItemId)
        return new WebDAVResponse(409, "Conflict");

    using (SqlConnection conn = new SqlConnection(fConnStr))
    {
        conn.Open();
        SqlCommand cmd = conn.CreateCommand();

        Version currVersion = this.VersionHistory.CurrentVersion as Version;
        int newVersionNumber = currVersion.VersionNumber + 1;

        // Create a new version
        cmd.CommandText =
            "SET @Identity = NEWID()"
            + " INSERT INTO Version"
            + " (ItemId, VersionId, VersionNumber, Name, Comment, CreatorDisplayName, ContentType, Created)"
            +
            " SELECT @ItemId, @Identity, @VersionNumber, Name, Comment, CreatorDisplayName, ContentType, GETUTCDATE()"
            + " FROM Item"
            + " WHERE ItemId = @ItemId";

        cmd.Parameters.Add("@ItemId", SqlDbType.UniqueIdentifier).Value = this.fItemId;
        cmd.Parameters.Add("@VersionNumber", SqlDbType.Int).Value = newVersionNumber;
        SqlParameter idParm = cmd.Parameters.Add("@Identity", SqlDbType.UniqueIdentifier);
        idParm.Direction = ParameterDirection.Output;

        cmd.ExecuteNonQuery();
        Guid newID = (Guid)idParm.Value;

        cmd.Parameters.Clear();

        // Copy properties to this item
        cmd.CommandText = "DELETE FROM Property WHERE ItemID = @ItemID";
        cmd.Parameters.Add("@ItemId", SqlDbType.UniqueIdentifier).Value = this.fItemId;
        cmd.ExecuteNonQuery();

        cmd.CommandText = "INSERT INTO Property"
                          + " (ItemId, Name, Namespace, PropVal)"
                          + " SELECT @ItemId, Name, Namespace, PropVal"
                          + " FROM VersionProperty"
                          + " WHERE VersionId = @VersionId";

        cmd.Parameters.Add("@VersionId", SqlDbType.UniqueIdentifier).Value = ver.VersionId;
        cmd.ExecuteNonQuery();

        // Copy properties to new version
        cmd.CommandText = "INSERT INTO VersionProperty"
                          + " (VersionId, Name, Namespace, PropVal)"
                          + " SELECT @NewVerId, Name, Namespace, PropVal"
                          + " FROM VersionProperty"
                          + " WHERE VersionId = @VersionId";

        cmd.Parameters.Clear();
        cmd.Parameters.Add("@VersionId", SqlDbType.UniqueIdentifier).Value = ver.VersionId;
        cmd.Parameters.Add("@NewVerId", SqlDbType.UniqueIdentifier).Value = newID;
        cmd.ExecuteNonQuery();

        // Copy content to this item
        File.Copy(ver.FilePath, this.fFilePath, true);

        // Copy content to new version
        File.Copy(ver.FilePath, this.fItemDir + "\\" + newVersionNumber);

        return new OkResponse();
    }
}
 

See Also

IVersionableItem Interface | ITHit.WebDAV.Server.DeltaV Namespace