package org.tmatesoft.svn.core.wc2; import org.tmatesoft.svn.core.SVNErrorCode; import org.tmatesoft.svn.core.internal.wc17.db.ISVNWCDb; import org.tmatesoft.svn.core.internal.wc2.SvnWcGeneration; /** * Represents operation for upgrading the metadata storage format for a working copy. * <code>Target</code> should represent working copy path to be upgraded. * * <p/> * {@link #run()} returns {@link SvnWcGeneration} of resulting working copy. * {@link #run()} throws {@link org.tmatesoft.svn.core.SVNException} if the following is true: * <ul> * <li>exception with {@link SVNErrorCode#ILLEGAL_TARGET} error code * - if <code>target</code> is not a local path * <li>exception with {@link SVNErrorCode#ENTRY_NOT_FOUND} error code * - if <code>target</code> is not a versioned directory * <li>exception with {@link SVNErrorCode#WC_INVALID_OP_ON_CWD} error code * - if <code>target</code> is not a pre-1.7 working copy directory * <li>exception with {@link SVNErrorCode#WC_INVALID_OP_ON_CWD} error code * - if <code>target</code> is not a pre-1.7 working copy root * <li>exception with {@link SVNErrorCode#WC_UNSUPPORTED_FORMAT} error code * - if a <code>target</code> doesn't have a repository URL * <li>exception with {@link SVNErrorCode#WC_CORRUPT} error code * - if a working copy is corrupt * </ul> * * @author TMate Software Ltd. * @version 1.7 * @since 1.7 (SVN 1.7) */ public class SvnUpgrade extends SvnOperation<SvnWcGeneration> { private int targetWorkingCopyFormat; protected SvnUpgrade(SvnOperationFactory factory) { super(factory); targetWorkingCopyFormat = ISVNWCDb.WC_FORMAT_18; } /** * Gets whether the operation changes working copy * @return <code>true</code> if the operation changes the working copy, otherwise <code>false</code> */ @Override public boolean isChangesWorkingCopy() { return true; } public void setTargetWorkingCopyFormat(int targetWorkingCopyFormat) { this.targetWorkingCopyFormat = targetWorkingCopyFormat; } public int getTargetWorkingCopyFormat() { return targetWorkingCopyFormat; } }